Implement NPU Hardware Dispatch Lowering for `vx.spawn`
Open
Nobody has claimed this yet.
codegen
enhancement
runtime
- Dominant language
- Rust
- Stars
- 14
- Forks
- 2
- Avg merge
- 13h 13m
- Merged PRs (30d)
- 70
Description
Currently, vx.spawn for topology 100 (NPUHBM) is implemented as a placeholder in VxLowering.cpp which sequentially inlines the block without any threading or dispatch.
Tasks:
- Update
SpawnOpLoweringinVxLowering.cppfor topology100. - Convert the spawn region into an outlined MLIR
func.func. - Emit an MLIR
llvm.callorfunc.calltargeting thenpu_dispatchAMX Objective-C++ runtime function. - Pass any captured variables as arguments to the outlined NPU kernel function.
- Provide tests ensuring NPU dispatch works correctly on Apple Silicon.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in VxLowering.cpp at SpawnOpLowering and inspect the topology 100 placeholder path. Trace how the spawn region is lowered, then define tests for outlined NPU dispatch on Apple Silicon. Done means captured variables reach the outlined function and the AMX npu_dispatch runtime is invoked instead of sequential inlining.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, objective-c
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100