Closed
Description
The pipeline is supposed to be like this:
func.func(iterative-tiling-and-fusion) // tile linalg ops (pass from GC)
one-shot-bufferize
func.func(scf-forall-to-parallel) // convert tiled for-loops into parallel loops (upstreamed)
func.func(linalg-to-xegpu) // (pass from tpp)
// map kernel to GPU
func.func(gpu-map-parallel-loops)
func.func(convert-parallel-loops-to-gpu)
gpu-kernel-outlining
set-spirv-capabilities{client-api=opencl}
gpu.module(set-spirv-abi-attrs{client-api=opencl})
gpu.module(convert-xegpu-to-vc) // (pass from imex)
imex-convert-gpu-to-spirv
serialize-spirv
...
Steps to achieve this:
- The
linalg-to-xegpu
pass from TPP is incompatible with the patches made to XeGPU dialect by IMEX. We need to fix this Aling 'linalg-to-xegpu' pass with patched XeGPU dialect #201 -
BringDecided to use tiling pass from GC [Transform][Fusion] Introduce an iterative tiling and fusion pass in forward and backward fashion #87tile-consumer-and-fuse-producers
from TPP to GC #0 - Modify
insert-gpu-allocs
pass to also consider xegpu.store/load Menooker/mlir-extensions#1 - align IMEX with new LLVM Align with new LLVM version used in GC Menooker/mlir-extensions#2
- [GPU] Add MLP test and linalg.fill lowering in 'linalg-to-xegpu' #220
Metadata
Metadata
Assignees
Labels
No labels