Layout
Operators
One directory per operator, matching amd/IRON. C++ in aie_kernels/aie2p. Shared compile helper.
Layout matches amd/IRON:
operators/<name>/
op.py # NAME, TARGET, GEOMETRY (smoke | parakeet), sizes
design.py # IRON ObjectFifos + Worker + compile/run
reference.py # CPU ground truth
test.py # CPU self-check; NPU vs reference (npu_required)
aie_kernels/aie2p/<name>.cc
common/compile.py
ironlab init <name> scaffolds the Python files.
Inventory
| Operator | GEOMETRY | Notes |
|---|---|---|
dwconv_1d |
parakeet C=1024, K=9 | Bit-exact vs NumPy at T=32 and T=375 |
layernorm |
parakeet C=1024 | gamma||beta packed (tile has 2 in / 2 out DMA) |
activations |
parakeet C=1024 | SiLU / GeLU; no Peano expf/tanhf — Taylor/aie_* |
gemm |
smoke 64×64×64 | |
pointwise_conv |
smoke C=64 | Full C=1024 needs multi-pass tiling |
softmax |
smoke D=64 |
Compile
Every design.py calls common.compile.compile_external_and_module (Peano + aiecc). CI walks operators/*/design.py --no-run.
Do not use uv run. Use just run operators/<name>/design.py.
NPU tests: pytest.mark.npu_required. Skip with just test --no-npu.