@@ -42,31 +42,31 @@ The IRON Python API for Ryzen™ AI NPUs is described in the following paper:
4242
4343| Section | Description | Datatype | AIE2 | AIE2P | Status | Design Example |
4444| :--------| :------------| :---------| :-----| :------| :-------| :-------------|
45- | [ Element-wise Add] ( ./ aie_kernels/generic /add.cc) | Element-wise addition kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/elementwise_add/] ( ./iron/operators/elementwise_add/ ) |
46- | [ Element-wise Mul] ( ./ aie_kernels/generic /mul.cc) | Element-wise multiplication kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/elementwise_mul/] ( ./iron/operators/elementwise_mul/ ) |
47- | [ GEMM] ( . /aie_kernels/aie2p/mm.cc) | General Matrix Multiplication kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/gemm/] ( ./iron/operators/gemm/ ) |
48- | [ GEMV] ( . /aie_kernels/generic/mv.cc) | General Matrix-Vector Multiplication kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/gemv/] ( ./iron/operators/gemv/ ) |
49- | [ GQA] ( . /aie_kernels/aie2p/mha.cc) | Grouped Query Attention kernel (Single pipeline) | bfloat16 | | ✓ | 🟢 | [ iron/operators/mha/] ( ./iron/operators/mha/ ) |
50- | [ MHA] ( . /aie_kernels/aie2p/mha.cc) | Multi-Head Attention kernel & Grouped Query Attention | bfloat16 | | ✓ | 🟢 | [ iron/operators/mha/] ( ./iron/operators/mha/ ) |
51- | [ RMSNorm] ( ./ aie_kernels/aie2 /rms_norm.cc) | RMSNorm kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/rms_norm/] ( ./iron/operators/rms_norm/ ) |
52- | [ RoPE] ( . /aie_kernels/generic/rope.cc) | Rotary Positional Embedding kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/rope/] ( ./iron/operators/rope/ ) |
53- | [ SiLU] ( . /aie_kernels/aie2/silu.cc) | Sigmoid Linear Unit activation kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/silu/] ( ./iron/operators/silu/ ) |
54- | [ Softmax] ( . /aie_kernels/aie2/softmax.cc) | Softmax kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/softmax/] ( ./iron/operators/softmax/ ) |
55- | [ Weighted RMSNorm] ( ./ aie_kernels/aie2 /rms_norm.cc) | Weighted RMSNorm kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/rms_norm/] ( ./iron/operators/rms_norm/ ) |
56- | [ Copy] ( . /aie_kernels/generic/passThrough.cc) | Copy | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/mem_copy/] ( ./iron/operators/mem_copy/ ) |
57- | [ Transpose] ( . /aie_kernels/generic/transpose.cc) | Transpose | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/transpose/] ( ./iron/operators/transpose/ ) |
58- | [ AXPY] ( . /aie_kernels/generic/axpy.cc) | AXPY | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/axpy/] ( ./iron/operators/axpy/ ) |
45+ | [ Element-wise Add] ( https://github.com/Xilinx/mlir-aie/blob/main/ aie_kernels/aie2p /add.cc) | Element-wise addition kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/elementwise_add/] ( ./iron/operators/elementwise_add/ ) |
46+ | [ Element-wise Mul] ( https://github.com/Xilinx/mlir-aie/blob/main/ aie_kernels/aie2p /mul.cc) | Element-wise multiplication kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/elementwise_mul/] ( ./iron/operators/elementwise_mul/ ) |
47+ | [ GEMM] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2p/mm.cc) | General Matrix Multiplication kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/gemm/] ( ./iron/operators/gemm/ ) |
48+ | [ GEMV] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/generic/mv.cc) | General Matrix-Vector Multiplication kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/gemv/] ( ./iron/operators/gemv/ ) |
49+ | [ GQA] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2p/mha.cc) | Grouped Query Attention kernel (Single pipeline) | bfloat16 | | ✓ | 🟢 | [ iron/operators/mha/] ( ./iron/operators/mha/ ) |
50+ | [ MHA] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2p/mha.cc) | Multi-Head Attention kernel & Grouped Query Attention | bfloat16 | | ✓ | 🟢 | [ iron/operators/mha/] ( ./iron/operators/mha/ ) |
51+ | [ RMSNorm] ( https://github.com/Xilinx/mlir-aie/blob/main/ aie_kernels/aie2p /rms_norm.cc) | RMSNorm kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/rms_norm/] ( ./iron/operators/rms_norm/ ) |
52+ | [ RoPE] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/generic/rope.cc) | Rotary Positional Embedding kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/rope/] ( ./iron/operators/rope/ ) |
53+ | [ SiLU] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2/silu.cc) | Sigmoid Linear Unit activation kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/silu/] ( ./iron/operators/silu/ ) |
54+ | [ Softmax] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2/softmax.cc) | Softmax kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/softmax/] ( ./iron/operators/softmax/ ) |
55+ | [ Weighted RMSNorm] ( https://github.com/Xilinx/mlir-aie/blob/main/ aie_kernels/aie2p /rms_norm.cc) | Weighted RMSNorm kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/rms_norm/] ( ./iron/operators/rms_norm/ ) |
56+ | [ Copy] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/generic/passThrough.cc) | Copy | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/mem_copy/] ( ./iron/operators/mem_copy/ ) |
57+ | [ Transpose] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/generic/transpose.cc) | Transpose | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/transpose/] ( ./iron/operators/transpose/ ) |
58+ | [ AXPY] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/generic/axpy.cc) | AXPY | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/axpy/] ( ./iron/operators/axpy/ ) |
5959| [ Reduction] ( ) | Reduction | bfloat16 | | | 🟡 | |
60- | [ Dequant] ( . /aie_kernels/generic/expand.cc) | Dequant Q4NX from [ AWQ] ( https://github.com/mit-han-lab/llm-awq ) to bfloat16 | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/dequant/] ( ./iron/operators/dequant/ ) |
61- | [ RELU] ( . /aie_kernels/aie2/relu.cc) | RELU | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/relu/] ( ./iron/operators/relu/ ) |
62- | [ Leaky RELU] ( . /aie_kernels/aie2/leaky_relu.cc) | Leaky RELU | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/leaky_relu/] ( ./iron/operators/leaky_relu/ ) |
63- | [ GELU] ( . /aie_kernels/aie2/gelu.cc) | GELU | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/gelu/] ( ./iron/operators/gelu/ ) |
64- | [ LayerNorm] ( . /aie_kernels/aie2/layer_norm.cc) | LayerNorm | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/layer_norm/] ( ./iron/operators/layer_norm/ ) |
60+ | [ Dequant] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/generic/expand.cc) | Dequant Q4NX from [ AWQ] ( https://github.com/mit-han-lab/llm-awq ) to bfloat16 | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/dequant/] ( ./iron/operators/dequant/ ) |
61+ | [ RELU] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2/relu.cc) | RELU | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/relu/] ( ./iron/operators/relu/ ) |
62+ | [ Leaky RELU] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2/leaky_relu.cc) | Leaky RELU | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/leaky_relu/] ( ./iron/operators/leaky_relu/ ) |
63+ | [ GELU] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2/gelu.cc) | GELU | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/gelu/] ( ./iron/operators/gelu/ ) |
64+ | [ LayerNorm] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2/layer_norm.cc) | LayerNorm | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/layer_norm/] ( ./iron/operators/layer_norm/ ) |
6565| [ Convolution] ( ) | Convolution | bfloat16 | | | 🟡 | |
6666| [ MaxPool] ( ) | MaxPool | bfloat16 | | | ⚪ | |
6767| [ AveragePool] ( ) | AveragePool | bfloat16 | | | ⚪ | |
68- | [ Tanh] ( . /aie_kernels/aie2/tanh.cc) | Tanh kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/tanh/] ( ./iron/operators/tanh/ ) |
69- | [ Sigmoid] ( . /aie_kernels/aie2/sigmoid.cc) | Sigmoid kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/sigmoid/] ( ./iron/operators/sigmoid/ ) |
68+ | [ Tanh] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2/tanh.cc) | Tanh kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/tanh/] ( ./iron/operators/tanh/ ) |
69+ | [ Sigmoid] ( https://github.com/Xilinx/mlir-aie/blob/main /aie_kernels/aie2/sigmoid.cc) | Sigmoid kernel | bfloat16 | ✓ | ✓ | 🟢 | [ iron/operators/sigmoid/] ( ./iron/operators/sigmoid/ ) |
7070
7171> Use this dashboard to quickly check the status of each kernel and locate relevant setup, build, and usage information.
7272
@@ -134,7 +134,7 @@ If starting from `Ubuntu 24.04` you may need to update the Linux kernel to 6.11+
134134All available operators can be found in ` iron/operators` . These each contain:
135135
136136- ` op.py` : The Python operator interface -- an easy access point to integrate operators into your project that prescribes how to compile the operator (build artifacts) and how to call it at runtime (buffer sizes, etc.)
137- - ` design.py` : The implementation of the operator' s NPU code. Often references a kernel in ` aie_kernels` for the compute core code and describes the data movement using ObjectFIFOs.
137+ - ` design.py` : The implementation of the operator' s NPU code. Often references a C++ compute kernel from the [mlir-aie kernel library](https://github.com/Xilinx/mlir-aie/tree/main/ aie_kernels) for the compute core code and describes the data movement using ObjectFIFOs.
138138- `reference.py`: A reference CPU implementation to validate the correctness of the NPU implementation.
139139- `test.py`: An end-to-end test that instantiates and builds the operator, runs it and verifies its outputs against the reference.
140140
@@ -196,7 +196,7 @@ IRON uses a three-layer architecture:
1961961. ** Operators** (` iron/operators/` ): High-level Python API for NPU operations
197197 - Each operator has: ` op.py` (interface), ` design.py` (MLIR-AIE implementation), ` reference.py` (CPU reference), ` test.py` (validation)
198198
199- 2. ** AIE Kernels** (` aie_kernels/` ): Low-level C++ compute kernels
199+ 2. ** AIE Kernels** ([mlir-aie ` aie_kernels/` ](https://github.com/Xilinx/mlir-aie/tree/main/aie_kernels) ): Low-level C++ compute kernels
200200 - Organized by architecture: ` generic/` , ` aie2/` , ` aie2p/`
201201 - Vectorized using AIE API for optimal performance
202202
@@ -226,7 +226,7 @@ pytest iron/operators/ -m "not extensive" -v
226226- 💬 ** Discord** : Join our [Discord server](https://discord.gg/cW99Ds85e8) for discussions and support
227227- 🐛 ** Issues** : Report bugs and request features via [GitHub Issues](https://github.com/amd/iron/issues)
228228- 📖 ** Contributing** : See [CONTRIBUTING.md](./CONTRIBUTING.md) for development guidelines
229- - 📚 ** Documentation** : Operator examples in ` iron/operators/` , kernel docs in ` aie_kernels/README.md `
229+ - 📚 ** Documentation** : Operator examples in ` iron/operators/` , kernel docs in the [mlir-aie kernel library](https://github.com/Xilinx/mlir-aie/tree/main/aie_kernels)
230230
231231# # License
232232
0 commit comments