Skip to content

stream: keep the ONNX registry off the operator import path - #210

Open
atassis wants to merge 1 commit into
amd:develfrom
atassis:pr/stream-ops-import-without-onnx
Open

atassis wants to merge 1 commit into
amd:develfrom
atassis:pr/stream-ops-import-without-onnx

Conversation

@atassis

@atassis atassis commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

iron/common/stream/__init__.py states the rule -- its submodules need onnx/pyyaml, "so importing
an operator must not pull them in" -- and requirements_stream.txt promises the stream operator's
test skips itself when stream-dse is absent. Neither holds.

iron/operators/__init__.py re-exports SwiGLUPrefillStream; swiglu_prefill_stream/op.py imports
ELTWISE_MUL, GEMM and SILU from iron.common.stream.ops; and that module imports onnx and
onnxscript at module scope. So a core install cannot import iron.operators at all -- a
ModuleNotFoundError at collection, which takes out every operator's tests, not just the one operator
the optional dependency belongs to.

Added

  • iron/common/stream/kernels.py, holding the StreamKernel definitions and operand layouts.
  • iron/tests/core_install.py, pinning the contract: a child interpreter with onnx/onnxscript hidden from sys.meta_path must still import iron.operators and iron.common.stream.kernels.

Changed

  • ops.py keeps only the registry it is named for -- the private-domain schemas, the translation table, and TORCH_OPS -- and imports the kernels it references.
  • swiglu_prefill_stream/op.py and iron/tests/stream/kernel_layouts.py take their names from the new module.

Removed

Splitting rather than deferring the import into the functions that use it is deliberate: a module that
does not import onnx cannot regain the dependency by accident.

Verified on 27cf75d: pytest iron/tests/core_install.py -> 20 passed; kernel_layouts.py skips as
designed without stream-dse; TORCH_OPS still resolves 3 ops and translation_table() 3 entries;
black --check clean.

Note on rebasing: #203 changed the moved block (the bfp16_mmul MAC-row split and _gemm_artifacts'
base_dir -> kernels_dir rename). kernels.py carries devel's current version of that block moved
verbatim, not the older copy this branch was first written against.

PR Merge Checklist

  1. The PR is rebased on the latest devel commit and pointing to devel.
  2. Your PR has been reviewed and approved.
  3. All checks are passing.

iron/common/stream/__init__.py already states the rule -- its submodules need
onnx/pyyaml, "so importing an operator must not pull them in" -- and
requirements_stream.txt promises the stream operator's test skips itself when
stream-dse is absent. Neither holds. iron/operators/__init__.py re-exports
SwiGLUPrefillStream, swiglu_prefill_stream/op.py imports ELTWISE_MUL, GEMM and
SILU from iron.common.stream.ops, and that module imports onnx and onnxscript at
module scope for the exporter registry.

So a core install cannot import iron.operators at all. The failure is
ModuleNotFoundError at collection, which takes out every operator's test, not
just the one operator the optional dependency belongs to.

The three names op.py wants are StreamKernel instances -- a stream-dse key, a
kernel source and its operand layouts. Nothing about them is ONNX. Move that half
to iron/common/stream/kernels.py and leave ops.py the registry it is named for:
the private-domain schemas, the translation table, and TORCH_OPS binding a torch
ATen op to one of those kernels. ops.py imports the kernels it references, so the
one-op-per-entry structure is unchanged; kernel_layouts.py takes its layouts from
the new module.

A module that does not import onnx cannot regain the dependency by accident,
which is the point of splitting rather than deferring the import into the
functions that use it.

iron/tests/core_install.py pins the contract: a child interpreter with onnx and
onnxscript hidden from sys.meta_path must still import iron.operators and
iron.common.stream.kernels. It fails before this change and passes after. The
ONNX path is unaffected -- TORCH_OPS still resolves three ops and
translation_table three entries.
@andrej

andrej commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

@asyms As a sanity check, does this make sense?

@atassis

atassis commented Sep 18, 2026

Copy link
Copy Markdown
Contributor Author

This work was done before #150 landed, which removed re-export. Some redesign also happened at that time, so right now this is mostly no-op.
The only thing left is a preference rather than a defect: ops.py still requires onnx from anyone who wants a StreamKernel, which is not an ONNX concept.

@github-actions

github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

CI Test Results

4c7bcd1 (2026_09_18_18_17_32)

IRON - CI Summary

Examples

iron/applications/llama_3.2_1b
Test Krackan Status Krackan Phoenix Status Phoenix
test_llama_3_2_1b[llama_3.2_1b_prompt_1024_tokens_1] - - -
test_llama_3_2_1b[llama_3.2_1b_prompt_1024_tokens_40] - - -
test_llama_3_2_1b[llama_3.2_1b_prompt_13_tokens_1] - - -
test_llama_3_2_1b[llama_3.2_1b_prompt_13_tokens_40] - - -

Small

iron/operators/axpy
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_axpy[input_length_2048-num_aie_columns_1-tile_size_2048-scalar_factor_3.0] 192.82 300.66
test_axpy[input_length_2048-num_aie_columns_2-tile_size_1024-scalar_factor_3.0] 162.08 345.24
test_axpy[input_length_2048-num_aie_columns_4-tile_size_512-scalar_factor_3.0] 194.72 344.26
test_axpy[input_length_2048-num_aie_columns_8-tile_size_256-scalar_factor_3.0] 200.86 - -
iron/operators/dequant
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_dequant[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-group_size_32] 178.88 415.42
test_dequant[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-group_size_32] 177.54 493.42
test_dequant[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-group_size_32] 170.84 423.76
test_dequant[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-group_size_32] 174.50 434.14
test_dequant[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-group_size_32] 211.20 484.90
test_dequant[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-group_size_32] 184.46 478.86
test_dequant[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256-group_size_32] 187.96 - -
test_dequant[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128-group_size_32] 234.38 - -
iron/operators/elementwise_add
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_elementwise_add[input_length_2048-num_aie_columns_1-tile_size_2048] 178.70 396.62
test_elementwise_add[input_length_2048-num_aie_columns_2-tile_size_1024] 171.94 436.94
test_elementwise_add[input_length_2048-num_aie_columns_4-tile_size_512] 182.56 449.36
test_elementwise_add[input_length_2048-num_aie_columns_8-tile_size_256] 203.86 - -
iron/operators/elementwise_mul
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_elementwise_mul[input_length_2048-num_aie_columns_1-tile_size_2048] 148.06 445.44
test_elementwise_mul[input_length_2048-num_aie_columns_2-tile_size_1024] 172.00 294.58
test_elementwise_mul[input_length_2048-num_aie_columns_4-tile_size_512] 170.60 366.80
test_elementwise_mul[input_length_2048-num_aie_columns_8-tile_size_256] 188.68 - -
iron/operators/flm/gemm
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_artifact_stem_differs_from_generic_gemm[M_256-K_512-N_1024] - -
test_artifact_stem_differs_from_generic_gemm[M_512-K_1024-N_2048] - -
test_gemm[M_256-K_512-N_1024-epilogue_gelu-clamp_None-rounding_conv_even] 450.72 - -
test_gemm[M_256-K_512-N_1024-epilogue_none-clamp_(-2.0, 2.0)-rounding_conv_even] 362.00 - -
test_gemm[M_256-K_512-N_1024-epilogue_none-clamp_None-rounding_conv_even] 352.88 - -
test_gemm[M_256-K_512-N_1024-epilogue_none-clamp_None-rounding_floor] 311.58 - -
test_gemm[M_256-K_512-N_1024-epilogue_silu-clamp_None-rounding_conv_even] 429.44 - -
test_gemm[M_256-K_512-N_128-epilogue_none-clamp_None-rounding_conv_even] 364.58 682.00
test_gemm[M_256-K_512-N_1536-epilogue_none-clamp_None-rounding_conv_even] 377.58 - -
test_gemm[M_256-K_512-N_256-epilogue_none-clamp_None-rounding_conv_even] - - 783.08
test_gemm[M_256-K_512-N_320-epilogue_none-clamp_None-rounding_conv_even] - - 642.36
test_gemm[M_256-K_512-N_512-epilogue_gelu-clamp_None-rounding_conv_even] - - 1066.96
test_gemm[M_256-K_512-N_512-epilogue_none-clamp_(-2.0, 2.0)-rounding_conv_even] - - 1219.80
test_gemm[M_256-K_512-N_512-epilogue_none-clamp_None-rounding_floor] - - 721.78
test_gemm[M_256-K_512-N_512-epilogue_silu-clamp_None-rounding_conv_even] - - 944.56
test_gemm[M_256-K_512-N_64-epilogue_none-clamp_None-rounding_conv_even] - - 626.84
test_gemm[M_512-K_1024-N_2048-epilogue_none-clamp_None-rounding_conv_even] 471.32 - -
test_gemm[M_512-K_1024-N_512-epilogue_none-clamp_None-rounding_conv_even] - - 1615.68
test_gemm_split_leg_bounds[iter0] - -
test_gemm_split_leg_bounds[iter1] - -
test_gemm_split_leg_bounds[iter2] - -
test_gemm_split_leg_bounds[iter3] - -
test_gemm_split_leg_bounds[iter4] - -
test_gemm_split_leg_bounds_runs[iter0] - -
test_gemm_split_leg_bounds_runs[iter1] - -
test_gemm_split_leg_bounds_runs[iter2] - -
test_gemm_split_leg_bounds_runs[iter3] - -
test_gemm_split_leg_bounds_runs[iter4] - -
test_gemm_tile_options[tn128-ma64-default] - -
test_gemm_tile_options[tn16-ma64-default] - -
test_gemm_tile_options[tn32-ma64-default] - -
test_gemm_tile_options[tn64-ma16-default] - - -
test_gemm_tile_options[tn64-ma32-default] - - -
test_one_xclbin_serves_every_clamp_bound[iter0] - -
test_one_xclbin_serves_every_clamp_bound[iter1] - -
test_one_xclbin_serves_every_clamp_bound[iter2] - -
test_one_xclbin_serves_every_clamp_bound[iter3] - -
test_one_xclbin_serves_every_clamp_bound[iter4] - -
test_one_xclbin_serves_every_shape[iter0] - -
test_one_xclbin_serves_every_shape[iter1] - -
test_one_xclbin_serves_every_shape[iter2] - -
test_one_xclbin_serves_every_shape[iter3] - -
test_one_xclbin_serves_every_shape[iter4] - -
iron/operators/gelu
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_gelu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048] 175.02 418.82
test_gelu[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024] 178.08 359.94
test_gelu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024] 203.24 426.46
test_gelu[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512] 209.42 466.06
test_gelu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512] 183.00 427.42
test_gelu[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256] 191.06 429.16
test_gelu[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256] 223.38 - -
test_gelu[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128] 230.14 - -
iron/operators/gemm
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_gemm[M_1792-K_896-N_1152-num_aie_columns_8-b_col_maj_False-c_col_maj_True-m_64-k_32-n_48-trace_size_0-partition_N_1] 2457.26 - -
test_gemm[M_192-K_384-N_64-num_aie_columns_4-b_col_maj_False-c_col_maj_False-m_48-k_96-n_16-trace_size_0-partition_N_1] 231.44 494.10
test_gemm[M_192-K_384-N_64-num_aie_columns_4-b_col_maj_True-c_col_maj_True-m_48-k_96-n_16-trace_size_0-partition_N_1] 229.20 764.58
test_gemm[M_2048-K_2048-N_2048-num_aie_columns_1-b_col_maj_False-c_col_maj_False-m_64-k_64-n_64-trace_size_0-partition_N_1] 47811.12 82161.08
test_gemm[M_2048-K_2048-N_2048-num_aie_columns_2-b_col_maj_True-c_col_maj_False-m_64-k_64-n_64-trace_size_0-partition_N_1] 27746.82 22376.98
test_gemm[M_2048-K_2048-N_2048-num_aie_columns_8-b_col_maj_True-c_col_maj_True-m_64-k_64-n_64-trace_size_0-partition_N_1] 7864.38 - -
test_gemm[M_384-K_1536-N_1792-num_aie_columns_4-b_col_maj_True-c_col_maj_False-m_32-k_48-n_64-trace_size_0-partition_N_1] 2284.08 3854.68
test_gemm[M_64-K_512-N_256-num_aie_columns_4-b_col_maj_True-c_col_maj_False-m_16-k_64-n_64-trace_size_0-partition_N_4] 3586.54 5709.42
test_gemm[M_896-K_1792-N_640-num_aie_columns_8-b_col_maj_False-c_col_maj_True-m_32-k_64-n_80-trace_size_0-partition_N_1] 1625.82 - -
iron/operators/gemv
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_gemv[M_128-K_128-num_aie_columns_1-tile_size_input_32-tile_size_output_128] 0.22 0.10
test_gemv[M_2048-K_8192-num_aie_columns_1-tile_size_input_1-tile_size_output_2048] 13.09 3.57
test_gemv[M_2048-K_8192-num_aie_columns_2-tile_size_input_1-tile_size_output_1024] 24.59 6.09
test_gemv[M_2048-K_8192-num_aie_columns_4-tile_size_input_1-tile_size_output_512] 40.36 9.09
test_gemv[M_2048-K_8192-num_aie_columns_8-tile_size_input_1-tile_size_output_256] 41.87 - -
test_gemv[M_8192-K_2048-num_aie_columns_1-tile_size_input_4-tile_size_output_1024] 12.75 3.59
test_gemv[M_8192-K_2048-num_aie_columns_2-tile_size_input_4-tile_size_output_1024] 24.77 6.44
test_gemv[M_8192-K_2048-num_aie_columns_4-tile_size_input_4-tile_size_output_1024] 39.94 9.09
test_gemv[M_8192-K_2048-num_aie_columns_8-tile_size_input_4-tile_size_output_1024] 44.04 - -
test_gemv_batched[M_1024-K_1024-num_aie_columns_1-tile_size_input_1-tile_size_output_64-num_batches_2] 8.61 2.32
test_gemv_batched[M_1026-K_64-num_aie_columns_1-tile_size_input_1-tile_size_output_2-num_batches_2] 0.88 0.27
test_gemv_batched[M_256-K_128-num_aie_columns_1-tile_size_input_1-tile_size_output_256-num_batches_4] 1.03 0.45
test_gemv_batched[M_256-K_128-num_aie_columns_8-tile_size_input_1-tile_size_output_32-num_batches_100] 16.38 - -
test_gemv_batched[M_448-K_64-num_aie_columns_8-tile_size_input_1-tile_size_output_56-num_batches_192] 12.46 - -
test_gemv_batched[M_512-K_64-num_aie_columns_8-tile_size_input_4-tile_size_output_64-num_batches_32] 7.19 - -
test_gemv_batched[M_64-K_1536-num_aie_columns_1-tile_size_input_1-tile_size_output_64-num_batches_8] 5.16 1.51
test_gemv_gelu[M_128-K_128-num_aie_columns_1-tile_size_input_32-tile_size_output_128] 0.21 -
test_gemv_gelu[M_2048-K_8192-num_aie_columns_1-tile_size_input_1-tile_size_output_2048] 12.63 -
test_gemv_gelu[M_8192-K_2048-num_aie_columns_1-tile_size_input_4-tile_size_output_1024] 12.54 -
iron/operators/layer_norm
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_layer_norm[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048] 169.54 447.46
test_layer_norm[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024] 173.72 353.04
test_layer_norm[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024] 179.86 334.32
test_layer_norm[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512] 189.00 269.56
test_layer_norm[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512] 173.32 412.38
test_layer_norm[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256] 207.38 507.90
test_layer_norm[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256] 170.10 - -
test_layer_norm[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128] 210.64 - -
iron/operators/leaky_relu
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-alpha_0.01] 173.34 370.92
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-alpha_0.1] 162.36 452.86
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-alpha_0.25] 140.60 351.72
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-alpha_0.01] 180.06 291.98
test_leaky_relu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-alpha_0.01] 190.80 307.12
test_leaky_relu[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-alpha_0.01] 194.58 338.54
test_leaky_relu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-alpha_0.01] 158.04 375.16
test_leaky_relu[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-alpha_0.01] 181.02 484.16
test_leaky_relu[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256-alpha_0.01] 206.42 - -
test_leaky_relu[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128-alpha_0.01] 191.82 - -
iron/operators/mem_copy
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_mem_copy[input_length_2048-num_cores_1-num_channels_1-bypass_False-tile_size_2048] 173.10 374.02
test_mem_copy[input_length_2048-num_cores_16-num_channels_2-bypass_False-tile_size_128] 223.76 - -
test_mem_copy[input_length_2048-num_cores_2-num_channels_1-bypass_False-tile_size_1024] 156.34 454.46
test_mem_copy[input_length_2048-num_cores_2-num_channels_2-bypass_False-tile_size_1024] 167.74 374.64
test_mem_copy[input_length_2048-num_cores_4-num_channels_1-bypass_False-tile_size_512] 190.34 466.88
test_mem_copy[input_length_2048-num_cores_4-num_channels_2-bypass_False-tile_size_512] 171.48 381.56
test_mem_copy[input_length_2048-num_cores_8-num_channels_1-bypass_False-tile_size_256] 205.18 - -
test_mem_copy[input_length_2048-num_cores_8-num_channels_2-bypass_False-tile_size_256] 193.62 463.58
iron/operators/mha
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_arg_spec_matches_design_shapes[seq_len_16384-dim_64-num_heads_1-num_pipelines_8-num_kv_heads_0] - -
test_arg_spec_matches_design_shapes[seq_len_16384-dim_64-num_heads_8-num_pipelines_8-num_kv_heads_2] - -
test_mha[seq_len_16384-dim_64-num_heads_1-num_pipelines_8-num_kv_heads_0] 52238.86 - -
iron/operators/relu
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048] 131.32 334.88
test_relu[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024] 148.82 528.74
test_relu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024] 147.80 331.14
test_relu[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512] 136.78 719.52
test_relu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512] 146.22 426.68
test_relu[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256] 185.48 431.64
test_relu[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256] 170.24 - -
test_relu[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128] 210.04 - -
iron/operators/repeat
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_cols_without_a_legal_split_is_rejected[cols_1031-why_prime > 1023: the only divisors are 1 and cols, neither legal] - -
test_cols_without_a_legal_split_is_rejected[cols_2062-why_2 x 1031: the only word-aligned chunk leaves a 1031-wide chunk count] - -
test_cols_without_a_legal_split_is_rejected[cols_513-why_odd: every divisor is odd, so no chunk is a whole 32-bit word] - -
test_repeat[rows_4-cols_1024-repeat_2-transfer_size_None] 172.18 367.16
test_repeat[rows_8-cols_512-repeat_4-transfer_size_64] 215.38 364.88
test_repeat[rows_8-cols_64-repeat_4-transfer_size_None] 201.26 352.98
iron/operators/rms_norm
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-weighted_False] 172.86 396.34
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-weighted_True] 189.18 440.10
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-weighted_False] 159.78 644.84
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-weighted_True] 172.70 604.76
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-weighted_False] 167.82 533.08
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-weighted_True] 207.32 457.98
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-weighted_False] 178.28 770.68
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-weighted_True] 166.36 466.16
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-weighted_False] 159.54 488.88
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-weighted_True] 171.58 487.70
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-weighted_False] 180.36 433.12
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-weighted_True] 204.62 - -
test_rms_norm[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256-weighted_False] 177.96 - -
test_rms_norm[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256-weighted_True] 224.90 - -
test_rms_norm[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128-weighted_False] 216.24 - -
iron/operators/rope
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_1-method_type_0] 166.98 375.82
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_2-method_type_0] 149.54 471.38
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_4-method_type_0] 177.72 382.72
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_8-method_type_0] 202.92 - -
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_1-method_type_0] 195.08 402.04
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_2-method_type_0] 192.24 427.44
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_4-method_type_0] 159.98 515.58
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_8-method_type_0] 178.38 - -
iron/operators/sigmoid
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_sigmoid[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048] 183.12 402.04
test_sigmoid[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024] 174.86 433.64
test_sigmoid[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024] 200.88 457.62
test_sigmoid[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512] 160.84 492.04
test_sigmoid[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512] 159.68 513.16
test_sigmoid[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256] 173.60 464.96
test_sigmoid[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256] 191.18 - -
test_sigmoid[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128] 221.00 - -
iron/operators/silu
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_silu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048] 146.44 411.24
test_silu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024] 136.60 402.84
test_silu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512] 148.74 395.92
test_silu[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256] 156.20 - -
iron/operators/softmax
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_softmax[input_length_32768-num_aie_columns_2-num_channels_2-tile_size_1024] 177.18 335.60
test_softmax[input_length_32768-num_aie_columns_2-num_channels_2-tile_size_2048] 162.12 444.30
test_softmax[input_length_32768-num_aie_columns_2-num_channels_2-tile_size_512] 161.34 389.04
iron/operators/strided_copy
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_strided_copy[chunked_transfer] 155.64 328.26
test_strided_copy[contiguous] 133.00 371.48
test_strided_copy[four_channels] 154.18 333.38
test_strided_copy[kv_slot0] 134.66 478.70
test_strided_copy[kv_slot5] 154.48 361.74
test_strided_copy[kv_slot5_four_channels] 150.54 446.40
test_strided_copy[kv_slot5_two_channels] 167.20 337.34
test_strided_copy[kv_slot_last] 140.42 468.52
test_strided_copy[two_channels] 162.52 486.86
test_strided_copy[two_channels_chunked] 144.48 345.34
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter0] - -
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter1] - -
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter2] - -
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter3] - -
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter4] - -
iron/operators/swiglu_decode
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_swiglu_decode[embedding_dim_1024-hidden_dim_3584] 953.52 15338.84
test_swiglu_decode[embedding_dim_2048-hidden_dim_2048] 1010.99 13252.73
iron/operators/swiglu_prefill
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_swiglu_prefill[seq_len_256-embedding_dim_2048-hidden_dim_2048-prio_accuracy_False] 2137.63 24324.07
iron/operators/tanh
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_tanh[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048] 178.28 431.46
test_tanh[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024] 177.64 482.64
test_tanh[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024] 181.58 402.34
test_tanh[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512] 183.24 584.92
test_tanh[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512] 208.54 401.84
test_tanh[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256] 207.48 500.40
test_tanh[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256] 226.78 - -
test_tanh[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128] 219.92 - -
iron/operators/transpose
Test Krackan Status Krackan Latency (mean) Phoenix Status Phoenix Latency (mean)
test_transpose[M_2048-N_64-aie_columns_1-channels_1-m_64-n_64-s_8-num_batches_1] 218.00 568.34
test_transpose[M_2048-N_64-aie_columns_1-channels_1-m_64-n_64-s_8-num_batches_2] 253.52 1051.96
test_transpose[M_2048-N_64-aie_columns_1-channels_2-m_64-n_64-s_8-num_batches_1] 224.32 1005.52
Krackan - Small

IRON

Tested on 2026_09_18_18_17_32 at commit 4c7bcd1.

iron/operators/axpy
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_axpy[input_length_2048-num_aie_columns_1-tile_size_2048-scalar_factor_3.0]✅ 5/5192.820.06n/a
test_axpy[input_length_2048-num_aie_columns_2-tile_size_1024-scalar_factor_3.0]✅ 5/5162.080.08n/a
test_axpy[input_length_2048-num_aie_columns_4-tile_size_512-scalar_factor_3.0]✅ 5/5194.720.06n/a
test_axpy[input_length_2048-num_aie_columns_8-tile_size_256-scalar_factor_3.0]✅ 5/5200.860.06n/a
iron/operators/dequant
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_dequant[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-group_size_32]✅ 5/5178.880.03n/a
test_dequant[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-group_size_32]✅ 5/5177.540.03n/a
test_dequant[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-group_size_32]✅ 5/5170.840.03n/a
test_dequant[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-group_size_32]✅ 5/5174.500.03n/a
test_dequant[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-group_size_32]✅ 5/5211.200.03n/a
test_dequant[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-group_size_32]✅ 5/5184.460.03n/a
test_dequant[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256-group_size_32]✅ 5/5187.960.03n/a
test_dequant[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128-group_size_32]✅ 5/5234.380.02n/a
iron/operators/elementwise_add
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_elementwise_add[input_length_2048-num_aie_columns_1-tile_size_2048]✅ 5/5178.700.07n/a
test_elementwise_add[input_length_2048-num_aie_columns_2-tile_size_1024]✅ 5/5171.940.07n/a
test_elementwise_add[input_length_2048-num_aie_columns_4-tile_size_512]✅ 5/5182.560.07n/a
test_elementwise_add[input_length_2048-num_aie_columns_8-tile_size_256]✅ 5/5203.860.06n/a
iron/operators/elementwise_mul
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_elementwise_mul[input_length_2048-num_aie_columns_1-tile_size_2048]✅ 5/5148.060.08n/a
test_elementwise_mul[input_length_2048-num_aie_columns_2-tile_size_1024]✅ 5/5172.000.08n/a
test_elementwise_mul[input_length_2048-num_aie_columns_4-tile_size_512]✅ 5/5170.600.08n/a
test_elementwise_mul[input_length_2048-num_aie_columns_8-tile_size_256]✅ 5/5188.680.07n/a
iron/operators/flm/gemm
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_artifact_stem_differs_from_generic_gemm[M_256-K_512-N_1024]✅ 5/5n/an/an/a
test_artifact_stem_differs_from_generic_gemm[M_512-K_1024-N_2048]✅ 5/5n/an/an/a
test_gemm[M_256-K_512-N_1024-epilogue_gelu-clamp_None-rounding_conv_even]✅ 5/5450.723.08600.91
test_gemm[M_256-K_512-N_1024-epilogue_none-clamp_(-2.0, 2.0)-rounding_conv_even]✅ 5/5362.003.87754.65
test_gemm[M_256-K_512-N_1024-epilogue_none-clamp_None-rounding_conv_even]✅ 5/5352.884.37852.81
test_gemm[M_256-K_512-N_1024-epilogue_none-clamp_None-rounding_floor]✅ 5/5311.584.71919.33
test_gemm[M_256-K_512-N_1024-epilogue_silu-clamp_None-rounding_conv_even]✅ 5/5429.443.22628.08
test_gemm[M_256-K_512-N_128-epilogue_none-clamp_None-rounding_conv_even]✅ 5/5364.581.1394.26
test_gemm[M_256-K_512-N_1536-epilogue_none-clamp_None-rounding_conv_even]✅ 5/5377.585.221087.45
test_gemm[M_512-K_1024-N_2048-epilogue_none-clamp_None-rounding_conv_even]✅ 5/5471.3211.994675.36
test_gemm_split_leg_bounds[iter0]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds[iter1]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds[iter2]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds[iter3]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds[iter4]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter0]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter1]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter2]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter3]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter4]✅ 1/1n/an/an/a
test_gemm_tile_options[tn128-ma64-default]✅ 5/5n/an/an/a
test_gemm_tile_options[tn16-ma64-default]✅ 5/5n/an/an/a
test_gemm_tile_options[tn32-ma64-default]✅ 5/5n/an/an/a
test_gemm_tile_options[tn64-ma32-default]✅ 5/5n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter0]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter1]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter2]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter3]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter4]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter0]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter1]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter2]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter3]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter4]✅ 1/1n/an/an/a
iron/operators/gelu
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_gelu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5175.020.05n/a
test_gelu[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5178.080.05n/a
test_gelu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5203.240.05n/a
test_gelu[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5209.420.04n/a
test_gelu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5183.000.05n/a
test_gelu[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5191.060.04n/a
test_gelu[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256]✅ 5/5223.380.04n/a
test_gelu[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128]✅ 5/5230.140.04n/a
iron/operators/gemm
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_gemm[M_1792-K_896-N_1152-num_aie_columns_8-b_col_maj_False-c_col_maj_True-m_64-k_32-n_48-trace_size_0-partition_N_1]✅ 5/52457.263.851515.34
test_gemm[M_192-K_384-N_64-num_aie_columns_4-b_col_maj_False-c_col_maj_False-m_48-k_96-n_16-trace_size_0-partition_N_1]✅ 5/5231.441.0042.57
test_gemm[M_192-K_384-N_64-num_aie_columns_4-b_col_maj_True-c_col_maj_True-m_48-k_96-n_16-trace_size_0-partition_N_1]✅ 5/5229.201.0544.63
test_gemm[M_2048-K_2048-N_2048-num_aie_columns_1-b_col_maj_False-c_col_maj_False-m_64-k_64-n_64-trace_size_0-partition_N_1]✅ 5/547811.120.53359.33
test_gemm[M_2048-K_2048-N_2048-num_aie_columns_2-b_col_maj_True-c_col_maj_False-m_64-k_64-n_64-trace_size_0-partition_N_1]✅ 5/527746.820.91619.17
test_gemm[M_2048-K_2048-N_2048-num_aie_columns_8-b_col_maj_True-c_col_maj_True-m_64-k_64-n_64-trace_size_0-partition_N_1]✅ 5/57864.383.202185.63
test_gemm[M_384-K_1536-N_1792-num_aie_columns_4-b_col_maj_True-c_col_maj_False-m_32-k_48-n_64-trace_size_0-partition_N_1]✅ 5/52284.083.57935.63
test_gemm[M_64-K_512-N_256-num_aie_columns_4-b_col_maj_True-c_col_maj_False-m_16-k_64-n_64-trace_size_0-partition_N_4]✅ 5/53586.540.3518.75
test_gemm[M_896-K_1792-N_640-num_aie_columns_8-b_col_maj_False-c_col_maj_True-m_32-k_64-n_80-trace_size_0-partition_N_1]✅ 5/51625.824.181290.81
iron/operators/gemv
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_gemv[M_128-K_128-num_aie_columns_1-tile_size_input_32-tile_size_output_128]✅ 5/5n/a0.220.22
test_gemv[M_2048-K_8192-num_aie_columns_1-tile_size_input_1-tile_size_output_2048]✅ 5/5n/a13.0913.08
test_gemv[M_2048-K_8192-num_aie_columns_2-tile_size_input_1-tile_size_output_1024]✅ 5/5n/a24.5924.58
test_gemv[M_2048-K_8192-num_aie_columns_4-tile_size_input_1-tile_size_output_512]✅ 5/5n/a40.3640.33
test_gemv[M_2048-K_8192-num_aie_columns_8-tile_size_input_1-tile_size_output_256]✅ 5/5n/a41.8741.85
test_gemv[M_8192-K_2048-num_aie_columns_1-tile_size_input_4-tile_size_output_1024]✅ 5/5n/a12.7512.74
test_gemv[M_8192-K_2048-num_aie_columns_2-tile_size_input_4-tile_size_output_1024]✅ 5/5n/a24.7724.76
test_gemv[M_8192-K_2048-num_aie_columns_4-tile_size_input_4-tile_size_output_1024]✅ 5/5n/a39.9439.92
test_gemv[M_8192-K_2048-num_aie_columns_8-tile_size_input_4-tile_size_output_1024]✅ 5/5n/a44.0444.01
test_gemv_batched[M_1024-K_1024-num_aie_columns_1-tile_size_input_1-tile_size_output_64-num_batches_2]✅ 5/5n/a8.618.59
test_gemv_batched[M_1026-K_64-num_aie_columns_1-tile_size_input_1-tile_size_output_2-num_batches_2]✅ 5/5n/a0.880.87
test_gemv_batched[M_256-K_128-num_aie_columns_1-tile_size_input_1-tile_size_output_256-num_batches_4]✅ 5/5n/a1.031.02
test_gemv_batched[M_256-K_128-num_aie_columns_8-tile_size_input_1-tile_size_output_32-num_batches_100]✅ 5/5n/a16.3816.19
test_gemv_batched[M_448-K_64-num_aie_columns_8-tile_size_input_1-tile_size_output_56-num_batches_192]✅ 5/5n/a12.4612.24
test_gemv_batched[M_512-K_64-num_aie_columns_8-tile_size_input_4-tile_size_output_64-num_batches_32]✅ 5/5n/a7.197.06
test_gemv_batched[M_64-K_1536-num_aie_columns_1-tile_size_input_1-tile_size_output_64-num_batches_8]✅ 5/5n/a5.165.07
test_gemv_gelu[M_128-K_128-num_aie_columns_1-tile_size_input_32-tile_size_output_128]✅ 5/5n/a0.210.20
test_gemv_gelu[M_2048-K_8192-num_aie_columns_1-tile_size_input_1-tile_size_output_2048]✅ 5/5n/a12.6312.62
test_gemv_gelu[M_8192-K_2048-num_aie_columns_1-tile_size_input_4-tile_size_output_1024]✅ 5/5n/a12.5412.53
iron/operators/layer_norm
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_layer_norm[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5169.540.05n/a
test_layer_norm[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5173.720.05n/a
test_layer_norm[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5179.860.05n/a
test_layer_norm[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5189.000.05n/a
test_layer_norm[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5173.320.05n/a
test_layer_norm[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5207.380.04n/a
test_layer_norm[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256]✅ 5/5170.100.05n/a
test_layer_norm[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128]✅ 5/5210.640.04n/a
iron/operators/leaky_relu
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-alpha_0.01]✅ 5/5173.340.05n/a
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-alpha_0.1]✅ 5/5162.360.05n/a
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-alpha_0.25]✅ 5/5140.600.06n/a
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-alpha_0.01]✅ 5/5180.060.05n/a
test_leaky_relu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-alpha_0.01]✅ 5/5190.800.04n/a
test_leaky_relu[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-alpha_0.01]✅ 5/5194.580.04n/a
test_leaky_relu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-alpha_0.01]✅ 5/5158.040.05n/a
test_leaky_relu[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-alpha_0.01]✅ 5/5181.020.05n/a
test_leaky_relu[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256-alpha_0.01]✅ 5/5206.420.04n/a
test_leaky_relu[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128-alpha_0.01]✅ 5/5191.820.04n/a
iron/operators/mem_copy
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_mem_copy[input_length_2048-num_cores_1-num_channels_1-bypass_False-tile_size_2048]✅ 5/5173.100.05n/a
test_mem_copy[input_length_2048-num_cores_16-num_channels_2-bypass_False-tile_size_128]✅ 5/5223.760.04n/a
test_mem_copy[input_length_2048-num_cores_2-num_channels_1-bypass_False-tile_size_1024]✅ 5/5156.340.05n/a
test_mem_copy[input_length_2048-num_cores_2-num_channels_2-bypass_False-tile_size_1024]✅ 5/5167.740.05n/a
test_mem_copy[input_length_2048-num_cores_4-num_channels_1-bypass_False-tile_size_512]✅ 5/5190.340.05n/a
test_mem_copy[input_length_2048-num_cores_4-num_channels_2-bypass_False-tile_size_512]✅ 5/5171.480.05n/a
test_mem_copy[input_length_2048-num_cores_8-num_channels_1-bypass_False-tile_size_256]✅ 5/5205.180.04n/a
test_mem_copy[input_length_2048-num_cores_8-num_channels_2-bypass_False-tile_size_256]✅ 5/5193.620.05n/a
iron/operators/mha
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_arg_spec_matches_design_shapes[seq_len_16384-dim_64-num_heads_1-num_pipelines_8-num_kv_heads_0]✅ 5/5n/an/an/a
test_arg_spec_matches_design_shapes[seq_len_16384-dim_64-num_heads_8-num_pipelines_8-num_kv_heads_2]✅ 5/5n/an/an/a
test_mha[seq_len_16384-dim_64-num_heads_1-num_pipelines_8-num_kv_heads_0]✅ 5/552238.860.16n/a
iron/operators/relu
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5131.320.06n/a
test_relu[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5148.820.06n/a
test_relu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5147.800.06n/a
test_relu[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5136.780.06n/a
test_relu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5146.220.06n/a
test_relu[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5185.480.05n/a
test_relu[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256]✅ 5/5170.240.05n/a
test_relu[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128]✅ 5/5210.040.04n/a
iron/operators/repeat
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_cols_without_a_legal_split_is_rejected[cols_1031-why_prime > 1023: the only divisors are 1 and cols, neither legal]✅ 5/5n/an/an/a
test_cols_without_a_legal_split_is_rejected[cols_2062-why_2 x 1031: the only word-aligned chunk leaves a 1031-wide chunk count]✅ 5/5n/an/an/a
test_cols_without_a_legal_split_is_rejected[cols_513-why_odd: every divisor is odd, so no chunk is a whole 32-bit word]✅ 5/5n/an/an/a
test_repeat[rows_4-cols_1024-repeat_2-transfer_size_None]✅ 5/5172.180.15n/a
test_repeat[rows_8-cols_512-repeat_4-transfer_size_64]✅ 5/5215.380.20n/a
test_repeat[rows_8-cols_64-repeat_4-transfer_size_None]✅ 5/5201.260.03n/a
iron/operators/rms_norm
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-weighted_False]✅ 5/5172.860.05n/a
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-weighted_True]✅ 5/5189.180.07n/a
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-weighted_False]✅ 5/5159.780.06n/a
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-weighted_True]✅ 5/5172.700.06n/a
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-weighted_False]✅ 5/5167.820.05n/a
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-weighted_True]✅ 5/5207.320.06n/a
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-weighted_False]✅ 5/5178.280.05n/a
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-weighted_True]✅ 5/5166.360.06n/a
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-weighted_False]✅ 5/5159.540.05n/a
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-weighted_True]✅ 5/5171.580.06n/a
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-weighted_False]✅ 5/5180.360.05n/a
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-weighted_True]✅ 5/5204.620.04n/a
test_rms_norm[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256-weighted_False]✅ 5/5177.960.05n/a
test_rms_norm[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256-weighted_True]✅ 5/5224.900.04n/a
test_rms_norm[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128-weighted_False]✅ 5/5216.240.04n/a
iron/operators/rope
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_1-method_type_0]✅ 5/5166.980.61n/a
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_2-method_type_0]✅ 5/5149.540.68n/a
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_4-method_type_0]✅ 5/5177.720.57n/a
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_8-method_type_0]✅ 5/5202.920.50n/a
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_1-method_type_0]✅ 5/5195.080.44n/a
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_2-method_type_0]✅ 5/5192.240.39n/a
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_4-method_type_0]✅ 5/5159.980.47n/a
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_8-method_type_0]✅ 5/5178.380.43n/a
iron/operators/sigmoid
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_sigmoid[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5183.120.05n/a
test_sigmoid[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5174.860.05n/a
test_sigmoid[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5200.880.04n/a
test_sigmoid[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5160.840.05n/a
test_sigmoid[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5159.680.05n/a
test_sigmoid[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5173.600.05n/a
test_sigmoid[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256]✅ 5/5191.180.04n/a
test_sigmoid[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128]✅ 5/5221.000.04n/a
iron/operators/silu
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_silu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5146.440.06n/a
test_silu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5136.600.06n/a
test_silu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5148.740.06n/a
test_silu[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256]✅ 5/5156.200.05n/a
iron/operators/softmax
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_softmax[input_length_32768-num_aie_columns_2-num_channels_2-tile_size_1024]✅ 5/5177.180.74n/a
test_softmax[input_length_32768-num_aie_columns_2-num_channels_2-tile_size_2048]✅ 5/5162.120.85n/a
test_softmax[input_length_32768-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5161.340.85n/a
iron/operators/strided_copy
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_strided_copy[chunked_transfer]✅ 5/5155.640.03n/a
test_strided_copy[contiguous]✅ 5/5133.000.03n/a
test_strided_copy[four_channels]✅ 5/5154.180.03n/a
test_strided_copy[kv_slot0]✅ 5/5134.660.99n/a
test_strided_copy[kv_slot5]✅ 5/5154.480.88n/a
test_strided_copy[kv_slot5_four_channels]✅ 5/5150.540.91n/a
test_strided_copy[kv_slot5_two_channels]✅ 5/5167.200.80n/a
test_strided_copy[kv_slot_last]✅ 5/5140.420.96n/a
test_strided_copy[two_channels]✅ 5/5162.520.03n/a
test_strided_copy[two_channels_chunked]✅ 5/5144.480.03n/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter0]✅ 1/1n/an/an/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter1]✅ 1/1n/an/an/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter2]✅ 1/1n/an/an/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter3]✅ 1/1n/an/an/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter4]✅ 1/1n/an/an/a
iron/operators/swiglu_decode
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_swiglu_decode[embedding_dim_1024-hidden_dim_3584]✅ 5/5953.520.00n/a
test_swiglu_decode[embedding_dim_2048-hidden_dim_2048]✅ 5/51010.990.01n/a
iron/operators/swiglu_prefill
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_swiglu_prefill[seq_len_256-embedding_dim_2048-hidden_dim_2048-prio_accuracy_False]✅ 5/52137.630.98n/a
iron/operators/tanh
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_tanh[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5178.280.05n/a
test_tanh[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5177.640.05n/a
test_tanh[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5181.580.05n/a
test_tanh[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5183.240.05n/a
test_tanh[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5208.540.04n/a
test_tanh[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5207.480.04n/a
test_tanh[input_length_2048-num_aie_columns_8-num_channels_1-tile_size_256]✅ 5/5226.780.04n/a
test_tanh[input_length_2048-num_aie_columns_8-num_channels_2-tile_size_128]✅ 5/5219.920.04n/a
iron/operators/transpose
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_transpose[M_2048-N_64-aie_columns_1-channels_1-m_64-n_64-s_8-num_batches_1]✅ 5/5218.002.52n/a
test_transpose[M_2048-N_64-aie_columns_1-channels_1-m_64-n_64-s_8-num_batches_2]✅ 5/5253.524.23n/a
test_transpose[M_2048-N_64-aie_columns_1-channels_2-m_64-n_64-s_8-num_batches_1]✅ 5/5224.322.40n/a
Krackan - Examples

IRON

Tested on 2026_09_18_18_39_15 at commit 4c7bcd1.

iron/applications/llama_3.2_1b
TestChecksTTFT (mean)TPS (mean)
test_llama_3_2_1b[llama_3.2_1b_prompt_1024_tokens_1]✅ 5/52.06n/a
test_llama_3_2_1b[llama_3.2_1b_prompt_1024_tokens_40]✅ 5/52.087.85
test_llama_3_2_1b[llama_3.2_1b_prompt_13_tokens_1]✅ 5/52.02n/a
test_llama_3_2_1b[llama_3.2_1b_prompt_13_tokens_40]✅ 5/52.027.64
Phoenix - Small

IRON

Tested on 2026_09_18_18_11_27 at commit 4c7bcd1.

iron/operators/axpy
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_axpy[input_length_2048-num_aie_columns_1-tile_size_2048-scalar_factor_3.0]✅ 5/5300.660.04n/a
test_axpy[input_length_2048-num_aie_columns_2-tile_size_1024-scalar_factor_3.0]✅ 5/5345.240.04n/a
test_axpy[input_length_2048-num_aie_columns_4-tile_size_512-scalar_factor_3.0]✅ 5/5344.260.04n/a
iron/operators/dequant
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_dequant[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-group_size_32]✅ 5/5415.420.01n/a
test_dequant[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-group_size_32]✅ 5/5493.420.01n/a
test_dequant[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-group_size_32]✅ 5/5423.760.01n/a
test_dequant[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-group_size_32]✅ 5/5434.140.01n/a
test_dequant[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-group_size_32]✅ 5/5484.900.01n/a
test_dequant[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-group_size_32]✅ 5/5478.860.01n/a
iron/operators/elementwise_add
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_elementwise_add[input_length_2048-num_aie_columns_1-tile_size_2048]✅ 5/5396.620.03n/a
test_elementwise_add[input_length_2048-num_aie_columns_2-tile_size_1024]✅ 5/5436.940.03n/a
test_elementwise_add[input_length_2048-num_aie_columns_4-tile_size_512]✅ 5/5449.360.03n/a
iron/operators/elementwise_mul
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_elementwise_mul[input_length_2048-num_aie_columns_1-tile_size_2048]✅ 5/5445.440.03n/a
test_elementwise_mul[input_length_2048-num_aie_columns_2-tile_size_1024]✅ 5/5294.580.04n/a
test_elementwise_mul[input_length_2048-num_aie_columns_4-tile_size_512]✅ 5/5366.800.03n/a
iron/operators/flm/gemm
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_artifact_stem_differs_from_generic_gemm[M_256-K_512-N_1024]✅ 5/5n/an/an/a
test_artifact_stem_differs_from_generic_gemm[M_512-K_1024-N_2048]✅ 5/5n/an/an/a
test_gemm[M_256-K_512-N_128-epilogue_none-clamp_None-rounding_conv_even]✅ 5/5682.000.7353.55
test_gemm[M_256-K_512-N_256-epilogue_none-clamp_None-rounding_conv_even]✅ 5/5783.080.8586.65
test_gemm[M_256-K_512-N_320-epilogue_none-clamp_None-rounding_conv_even]✅ 5/5642.361.22136.09
test_gemm[M_256-K_512-N_512-epilogue_gelu-clamp_None-rounding_conv_even]✅ 5/51066.961.21155.34
test_gemm[M_256-K_512-N_512-epilogue_none-clamp_(-2.0, 2.0)-rounding_conv_even]✅ 5/51219.801.38176.06
test_gemm[M_256-K_512-N_512-epilogue_none-clamp_None-rounding_floor]✅ 5/5721.781.53195.27
test_gemm[M_256-K_512-N_512-epilogue_silu-clamp_None-rounding_conv_even]✅ 5/5944.561.29164.96
test_gemm[M_256-K_512-N_64-epilogue_none-clamp_None-rounding_conv_even]✅ 5/5626.840.5927.66
test_gemm[M_512-K_1024-N_512-epilogue_none-clamp_None-rounding_conv_even]✅ 5/51615.682.12433.99
test_gemm_split_leg_bounds[iter0]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds[iter1]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds[iter2]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds[iter3]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds[iter4]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter0]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter1]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter2]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter3]✅ 1/1n/an/an/a
test_gemm_split_leg_bounds_runs[iter4]✅ 1/1n/an/an/a
test_gemm_tile_options[tn128-ma64-default]✅ 5/5n/an/an/a
test_gemm_tile_options[tn16-ma64-default]✅ 5/5n/an/an/a
test_gemm_tile_options[tn32-ma64-default]✅ 5/5n/an/an/a
test_gemm_tile_options[tn64-ma16-default]✅ 5/5n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter0]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter1]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter2]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter3]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_clamp_bound[iter4]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter0]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter1]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter2]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter3]✅ 1/1n/an/an/a
test_one_xclbin_serves_every_shape[iter4]✅ 1/1n/an/an/a
iron/operators/gelu
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_gelu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5418.820.02n/a
test_gelu[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5359.940.02n/a
test_gelu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5426.460.02n/a
test_gelu[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5466.060.02n/a
test_gelu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5427.420.02n/a
test_gelu[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5429.160.02n/a
iron/operators/gemm
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_gemm[M_192-K_384-N_64-num_aie_columns_4-b_col_maj_False-c_col_maj_False-m_48-k_96-n_16-trace_size_0-partition_N_1]✅ 5/5494.100.4719.84
test_gemm[M_192-K_384-N_64-num_aie_columns_4-b_col_maj_True-c_col_maj_True-m_48-k_96-n_16-trace_size_0-partition_N_1]✅ 5/5764.580.4016.97
test_gemm[M_2048-K_2048-N_2048-num_aie_columns_1-b_col_maj_False-c_col_maj_False-m_64-k_64-n_64-trace_size_0-partition_N_1]✅ 5/582161.080.31209.12
test_gemm[M_2048-K_2048-N_2048-num_aie_columns_2-b_col_maj_True-c_col_maj_False-m_64-k_64-n_64-trace_size_0-partition_N_1]✅ 5/522376.981.13768.71
test_gemm[M_384-K_1536-N_1792-num_aie_columns_4-b_col_maj_True-c_col_maj_False-m_32-k_48-n_64-trace_size_0-partition_N_1]✅ 5/53854.682.77726.46
test_gemm[M_64-K_512-N_256-num_aie_columns_4-b_col_maj_True-c_col_maj_False-m_16-k_64-n_64-trace_size_0-partition_N_4]✅ 5/55709.420.2312.20
iron/operators/gemv
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_gemv[M_128-K_128-num_aie_columns_1-tile_size_input_32-tile_size_output_128]✅ 5/5n/a0.100.10
test_gemv[M_2048-K_8192-num_aie_columns_1-tile_size_input_1-tile_size_output_2048]✅ 5/5n/a3.573.57
test_gemv[M_2048-K_8192-num_aie_columns_2-tile_size_input_1-tile_size_output_1024]✅ 5/5n/a6.096.08
test_gemv[M_2048-K_8192-num_aie_columns_4-tile_size_input_1-tile_size_output_512]✅ 5/5n/a9.099.09
test_gemv[M_8192-K_2048-num_aie_columns_1-tile_size_input_4-tile_size_output_1024]✅ 5/5n/a3.593.59
test_gemv[M_8192-K_2048-num_aie_columns_2-tile_size_input_4-tile_size_output_1024]✅ 5/5n/a6.446.44
test_gemv[M_8192-K_2048-num_aie_columns_4-tile_size_input_4-tile_size_output_1024]✅ 5/5n/a9.099.09
test_gemv_batched[M_1024-K_1024-num_aie_columns_1-tile_size_input_1-tile_size_output_64-num_batches_2]✅ 5/5n/a2.322.31
test_gemv_batched[M_1026-K_64-num_aie_columns_1-tile_size_input_1-tile_size_output_2-num_batches_2]✅ 5/5n/a0.270.27
test_gemv_batched[M_256-K_128-num_aie_columns_1-tile_size_input_1-tile_size_output_256-num_batches_4]✅ 5/5n/a0.450.45
test_gemv_batched[M_64-K_1536-num_aie_columns_1-tile_size_input_1-tile_size_output_64-num_batches_8]✅ 5/5n/a1.511.48
test_gemv_gelu[M_128-K_128-num_aie_columns_1-tile_size_input_32-tile_size_output_128]❌ 0/5n/an/an/a
test_gemv_gelu[M_2048-K_8192-num_aie_columns_1-tile_size_input_1-tile_size_output_2048]❌ 0/5n/an/an/a
test_gemv_gelu[M_8192-K_2048-num_aie_columns_1-tile_size_input_4-tile_size_output_1024]❌ 0/5n/an/an/a
iron/operators/layer_norm
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_layer_norm[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5447.460.02n/a
test_layer_norm[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5353.040.03n/a
test_layer_norm[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5334.320.03n/a
test_layer_norm[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5269.560.03n/a
test_layer_norm[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5412.380.02n/a
test_layer_norm[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5507.900.02n/a
iron/operators/leaky_relu
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-alpha_0.01]✅ 5/5370.920.02n/a
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-alpha_0.1]✅ 5/5452.860.02n/a
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-alpha_0.25]✅ 5/5351.720.03n/a
test_leaky_relu[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-alpha_0.01]✅ 5/5291.980.03n/a
test_leaky_relu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-alpha_0.01]✅ 5/5307.120.03n/a
test_leaky_relu[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-alpha_0.01]✅ 5/5338.540.03n/a
test_leaky_relu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-alpha_0.01]✅ 5/5375.160.02n/a
test_leaky_relu[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-alpha_0.01]✅ 5/5484.160.02n/a
iron/operators/mem_copy
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_mem_copy[input_length_2048-num_cores_1-num_channels_1-bypass_False-tile_size_2048]✅ 5/5374.020.02n/a
test_mem_copy[input_length_2048-num_cores_2-num_channels_1-bypass_False-tile_size_1024]✅ 5/5454.460.02n/a
test_mem_copy[input_length_2048-num_cores_2-num_channels_2-bypass_False-tile_size_1024]✅ 5/5374.640.03n/a
test_mem_copy[input_length_2048-num_cores_4-num_channels_1-bypass_False-tile_size_512]✅ 5/5466.880.02n/a
test_mem_copy[input_length_2048-num_cores_4-num_channels_2-bypass_False-tile_size_512]✅ 5/5381.560.02n/a
test_mem_copy[input_length_2048-num_cores_8-num_channels_2-bypass_False-tile_size_256]✅ 5/5463.580.02n/a
iron/operators/mha
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_arg_spec_matches_design_shapes[seq_len_16384-dim_64-num_heads_1-num_pipelines_8-num_kv_heads_0]✅ 5/5n/an/an/a
test_arg_spec_matches_design_shapes[seq_len_16384-dim_64-num_heads_8-num_pipelines_8-num_kv_heads_2]✅ 5/5n/an/an/a
iron/operators/relu
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_relu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5334.880.03n/a
test_relu[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5528.740.02n/a
test_relu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5331.140.03n/a
test_relu[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5719.520.02n/a
test_relu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5426.680.02n/a
test_relu[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5431.640.02n/a
iron/operators/repeat
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_cols_without_a_legal_split_is_rejected[cols_1031-why_prime > 1023: the only divisors are 1 and cols, neither legal]✅ 5/5n/an/an/a
test_cols_without_a_legal_split_is_rejected[cols_2062-why_2 x 1031: the only word-aligned chunk leaves a 1031-wide chunk count]✅ 5/5n/an/an/a
test_cols_without_a_legal_split_is_rejected[cols_513-why_odd: every divisor is odd, so no chunk is a whole 32-bit word]✅ 5/5n/an/an/a
test_repeat[rows_4-cols_1024-repeat_2-transfer_size_None]✅ 5/5367.160.07n/a
test_repeat[rows_8-cols_512-repeat_4-transfer_size_64]✅ 5/5364.880.12n/a
test_repeat[rows_8-cols_64-repeat_4-transfer_size_None]✅ 5/5352.980.02n/a
iron/operators/rms_norm
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-weighted_False]✅ 5/5396.340.02n/a
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048-weighted_True]✅ 5/5440.100.03n/a
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-weighted_False]✅ 5/5644.840.02n/a
test_rms_norm[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024-weighted_True]✅ 5/5604.760.02n/a
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-weighted_False]✅ 5/5533.080.02n/a
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024-weighted_True]✅ 5/5457.980.03n/a
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-weighted_False]✅ 5/5770.680.02n/a
test_rms_norm[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512-weighted_True]✅ 5/5466.160.02n/a
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-weighted_False]✅ 5/5488.880.02n/a
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512-weighted_True]✅ 5/5487.700.02n/a
test_rms_norm[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256-weighted_False]✅ 5/5433.120.02n/a
iron/operators/rope
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_1-method_type_0]✅ 5/5375.820.30n/a
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_2-method_type_0]✅ 5/5471.380.22n/a
test_rope[rows_32-cols_512-angle_rows_32-aie_columns_4-method_type_0]✅ 5/5382.720.28n/a
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_1-method_type_0]✅ 5/5402.040.20n/a
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_2-method_type_0]✅ 5/5427.440.21n/a
test_rope[rows_32-cols_512-angle_rows_8-aie_columns_4-method_type_0]✅ 5/5515.580.15n/a
iron/operators/sigmoid
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_sigmoid[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5402.040.02n/a
test_sigmoid[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5433.640.02n/a
test_sigmoid[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5457.620.02n/a
test_sigmoid[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5492.040.02n/a
test_sigmoid[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5513.160.02n/a
test_sigmoid[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5464.960.02n/a
iron/operators/silu
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_silu[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5411.240.02n/a
test_silu[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5402.840.02n/a
test_silu[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5395.920.02n/a
iron/operators/softmax
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_softmax[input_length_32768-num_aie_columns_2-num_channels_2-tile_size_1024]✅ 5/5335.600.41n/a
test_softmax[input_length_32768-num_aie_columns_2-num_channels_2-tile_size_2048]✅ 5/5444.300.35n/a
test_softmax[input_length_32768-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5389.040.35n/a
iron/operators/strided_copy
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_strided_copy[chunked_transfer]✅ 5/5328.260.01n/a
test_strided_copy[contiguous]✅ 5/5371.480.01n/a
test_strided_copy[four_channels]✅ 5/5333.380.01n/a
test_strided_copy[kv_slot0]✅ 5/5478.700.30n/a
test_strided_copy[kv_slot5]✅ 5/5361.740.38n/a
test_strided_copy[kv_slot5_four_channels]✅ 5/5446.400.32n/a
test_strided_copy[kv_slot5_two_channels]✅ 5/5337.340.41n/a
test_strided_copy[kv_slot_last]✅ 5/5468.520.30n/a
test_strided_copy[two_channels]✅ 5/5486.860.01n/a
test_strided_copy[two_channels_chunked]✅ 5/5345.340.01n/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter0]✅ 1/1n/an/an/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter1]✅ 1/1n/an/an/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter2]✅ 1/1n/an/an/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter3]✅ 1/1n/an/an/a
test_transfer_size_not_dividing_per_channel_share_is_rejected[iter4]✅ 1/1n/an/an/a
iron/operators/swiglu_decode
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_swiglu_decode[embedding_dim_1024-hidden_dim_3584]✅ 5/515338.840.00n/a
test_swiglu_decode[embedding_dim_2048-hidden_dim_2048]✅ 5/513252.730.00n/a
iron/operators/swiglu_prefill
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_swiglu_prefill[seq_len_256-embedding_dim_2048-hidden_dim_2048-prio_accuracy_False]✅ 5/524324.070.09n/a
iron/operators/tanh
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_tanh[input_length_2048-num_aie_columns_1-num_channels_1-tile_size_2048]✅ 5/5431.460.02n/a
test_tanh[input_length_2048-num_aie_columns_1-num_channels_2-tile_size_1024]✅ 5/5482.640.02n/a
test_tanh[input_length_2048-num_aie_columns_2-num_channels_1-tile_size_1024]✅ 5/5402.340.02n/a
test_tanh[input_length_2048-num_aie_columns_2-num_channels_2-tile_size_512]✅ 5/5584.920.02n/a
test_tanh[input_length_2048-num_aie_columns_4-num_channels_1-tile_size_512]✅ 5/5401.840.02n/a
test_tanh[input_length_2048-num_aie_columns_4-num_channels_2-tile_size_256]✅ 5/5500.400.02n/a
iron/operators/transpose
TestChecksLatency (mean)Bandwidth (mean)Throughput (mean)
test_transpose[M_2048-N_64-aie_columns_1-channels_1-m_64-n_64-s_8-num_batches_1]✅ 5/5568.341.05n/a
test_transpose[M_2048-N_64-aie_columns_1-channels_1-m_64-n_64-s_8-num_batches_2]✅ 5/51051.961.92n/a
test_transpose[M_2048-N_64-aie_columns_1-channels_2-m_64-n_64-s_8-num_batches_1]✅ 5/51005.521.08n/a
Phoenix - Examples

IRON

Tested on 2026_09_18_18_02_23 at commit 4c7bcd1.

Trend tables omitted, the comment hit GitHub's size limit. Full report in the workflow run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants