2026-09-06T17:45:31.959873Z INFO retained operator-plan finalist finalist=0 values=11 operations=7 estimated_cycles=485686 estimated_exchange_cycles=173640 exchange_row_bytes=35532 peak_standard_bytes=76236 peak_interleaved_bytes=114688 peak_total_bytes=166604 maximum_standard_allocation_bytes=16384 active_tile_counts={12, 64} padding_group_counts={} conversion_sources=[] 2026-09-06T17:45:31.960018Z INFO retained operator-plan finalist finalist=1 values=13 operations=9 estimated_cycles=526835 estimated_exchange_cycles=216400 exchange_row_bytes=44760 peak_standard_bytes=106200 peak_interleaved_bytes=92160 peak_total_bytes=184024 maximum_standard_allocation_bytes=61440 active_tile_counts={12, 64} padding_group_counts={} conversion_sources=[Some(OperationId(1)), Some(OperationId(2))] 2026-09-06T17:45:31.960090Z INFO retained operator-plan finalist finalist=2 values=12 operations=8 estimated_cycles=546120 estimated_exchange_cycles=242000 exchange_row_bytes=50520 peak_standard_bytes=128344 peak_interleaved_bytes=71680 peak_total_bytes=189784 maximum_standard_allocation_bytes=61440 active_tile_counts={12, 64} padding_group_counts={} conversion_sources=[Some(OperationId(2))] 2026-09-06T17:45:31.960156Z INFO retained operator-plan finalist finalist=3 values=13 operations=9 estimated_cycles=547519 estimated_exchange_cycles=213840 exchange_row_bytes=44184 peak_standard_bytes=105624 peak_interleaved_bytes=94208 peak_total_bytes=199832 maximum_standard_allocation_bytes=61440 active_tile_counts={12, 64} padding_group_counts={} conversion_sources=[Some(OperationId(1)), Some(OperationId(2))] 2026-09-06T17:45:31.970948Z INFO ipu_codegen.package.phase{phase="lower_mid"}: package build phase finished phase="lower_mid" elapsed_ms=365 success=true 2026-09-06T17:45:32.451562Z INFO screened tile mappings by exchange resource load candidates=15 baseline_cycles=64048 candidate_cycles=64048 baseline_pressure=61303 candidate_pressure=61303 2026-09-06T17:45:32.455726Z INFO modelled expanded operator plan finalist=0 modelled_cycles=398594 estimated_cycles=427786 estimated_exchange_cycles=102240 2026-09-06T17:45:32.473701Z INFO screened tile mappings by exchange resource load candidates=19 baseline_cycles=89548 candidate_cycles=89548 baseline_pressure=76364 candidate_pressure=76364 2026-09-06T17:45:32.477175Z INFO screened tile mappings by exchange resource load candidates=19 baseline_cycles=78248 candidate_cycles=78248 baseline_pressure=69677 candidate_pressure=69677 2026-09-06T17:45:32.478773Z INFO screened tile mappings by exchange resource load candidates=19 baseline_cycles=77644 candidate_cycles=77644 baseline_pressure=69478 candidate_pressure=69478 2026-09-06T17:45:32.478835Z INFO modelled expanded operator plan finalist=2 modelled_cycles=545055 estimated_cycles=696787 estimated_exchange_cycles=252080 2026-09-06T17:45:32.482178Z INFO modelled expanded operator plan finalist=1 modelled_cycles=467976 estimated_cycles=548488 estimated_exchange_cycles=169560 2026-09-06T17:45:32.483798Z INFO modelled expanded operator plan finalist=3 modelled_cycles=490239 estimated_cycles=571355 estimated_exchange_cycles=169560 2026-09-06T17:45:32.571935Z INFO ipu_codegen.package.phase{phase="select_finalist"}: prepared large physical exchange phase phase=1 transfers=1045 maximum_identical_destinations=1 2026-09-06T17:45:32.571971Z INFO ipu_codegen.package.phase{phase="select_finalist"}: optimized physical exchange schedule phase=1 initial_horizon=1123 selected_horizon=1123 endpoint_lower_bound=928 lower_bound_gap=195 selected_kind="full-duplex" neighborhood_improvements=0 2026-09-06T17:45:32.572946Z INFO ipu_codegen.package.phase{phase="select_finalist"}: finished large physical exchange phase phase=1 tile=49 row_words=167 horizon=1123 2026-09-06T17:45:32.954591Z INFO ipu_codegen.package.phase{phase="select_finalist"}: prepared large physical exchange phase phase=2 transfers=3337 maximum_identical_destinations=1 2026-09-06T17:45:32.954634Z INFO ipu_codegen.package.phase{phase="select_finalist"}: optimized physical exchange schedule phase=2 initial_horizon=2828 selected_horizon=2828 endpoint_lower_bound=736 lower_bound_gap=2092 selected_kind="full-duplex" neighborhood_improvements=0 2026-09-06T17:45:32.957512Z INFO ipu_codegen.package.phase{phase="select_finalist"}: finished large physical exchange phase phase=2 tile=4 row_words=330 horizon=2828 2026-09-06T17:45:33.077053Z INFO ipu_codegen.package.phase{phase="select_finalist"}: scheduled operator-plan finalist finalist=0 mapped=false analytical_cycles=427786 analytical_exchange_cycles=102240 scheduled_exchange_cycles=76322 refined_cycles=401868 2026-09-06T17:45:33.087568Z INFO ipu_codegen.package.phase{phase="select_finalist"}: selected physically scheduled operator-plan finalist selected=0 mapped=false 2026-09-06T17:45:33.087596Z INFO ipu_codegen.package.phase{phase="select_finalist"}: package build phase finished phase="select_finalist" elapsed_ms=1116 success=true 2026-09-06T17:45:33.087608Z INFO lowered graph for package construction logical_shards=5364 exchange_phases=15 2026-09-06T17:45:33.087840Z INFO ipu_codegen.package.phase{phase="compile_runtime"}: package build phase finished phase="compile_runtime" elapsed_ms=0 success=true 2026-09-06T17:45:33.088487Z INFO ipu_codegen.package.phase{phase="plan_kernels"}: package build phase finished phase="plan_kernels" elapsed_ms=0 success=true 2026-09-06T17:45:33.088662Z INFO ipu_codegen.package.phase{phase="compile_kernels"}: compiling kernel source=/srv/home/gc-sdk/ipu-stack/crates/ipu-tests/../../device/gemm_f16_amp.S name="gemm_f16_interleaved_packed64_k64_c64_r32_r32" target=ipu21 2026-09-06T17:45:33.149309Z INFO ipu_codegen.package.phase{phase="compile_kernels"}: kernel artifact created object=/srv/home/.cache/ipu-stack/kernels/caef0305f24563851c8bc4fa7067078ef2d1c9d1c0d187776249de442b512fa1/kernel.o metadata=/srv/home/.cache/ipu-stack/kernels/caef0305f24563851c8bc4fa7067078ef2d1c9d1c0d187776249de442b512fa1/kernel.json 2026-09-06T17:45:33.149670Z INFO ipu_codegen.package.phase{phase="compile_kernels"}: compiling kernel source=/srv/home/gc-sdk/ipu-stack/crates/ipu-tests/../../device/gemm_f16_amp.S name="gemm_f16_interleaved_k64_c80_r11_r12" target=ipu21 :4:1: error: symbol '.Lgemm_f16_amp_worker_small' is already defined .Lgemm_f16_amp_worker_small: ^ :4:1: error: symbol '.Lgemm_f16_amp_worker_large' is already defined .Lgemm_f16_amp_worker_large: ^ Error: Assembler failed to run for input:< .# 1 "/srv/home/gc-sdk/ipu-stack/crates/ipu-tests/../../device/gemm_f16_amp.S" # 1 "" 1 # 1 "/srv/home/gc-sdk/ipu-stack/crates/ipu-tests/../../device/gemm_f16_amp.S" 2 # 1 "/srv/home/gc-sdk/poplar_sdk-ubuntu_20_04-3.4.0+1507-69d9d03fd8/poplar-ubuntu_20_04-3.4.0+73-aa67dd6164/lib/graphcore/include/arch/gc_tile_defines.h" 1 3 # 21 "/srv/home/gc-sdk/poplar_sdk-ubuntu_20_04-3.4.0+1507-69d9d03fd8/poplar-ubuntu_20_04-3.4.0+73-aa67dd6164/lib/graphcore/include/arch/gc_tile_defines.h" 3 # 1 "/srv/home/gc-sdk/poplar_sdk-ubuntu_20_04-3.4.0+1507-69d9d03fd8/poplar-ubuntu_20_04-3.4.0+73-aa67dd6164/lib/graphcore/include/arch/gc_tilearch_ipu21.h" 1 3 # 22 "/srv/home/gc-sdk/poplar_sdk-ubuntu_20_04-3.4.0+1507-69d9d03fd8/poplar-ubuntu_20_04-3.4.0+73-aa67dd6164/lib/graphcore/include/arch/gc_tile_defines.h" 2 3 # 1 "/srv/home/gc-sdk/poplar_sdk-ubuntu_20_04-3.4.0+1507-69d9d03fd8/poplar-ubuntu_20_04-3.4.0+73-aa67dd6164/lib/graphcore/include/arch/gc_tileimplconsts_ipu21.h" 1 3 # 23 "/srv/home/gc-sdk/poplar_sdk-ubuntu_20_04-3.4.0+1507-69d9d03fd8/poplar-ubuntu_20_04-3.4.0+73-aa67dd6164/lib/graphcore/include/arch/gc_tile_defines.h" 2 3 # 2 "/srv/home/gc-sdk/ipu-stack/crates/ipu-tests/../../device/gemm_f16_amp.S" 2 # 58 "/srv/home/gc-sdk/ipu-stack/crates/ipu-tests/../../device/gemm_f16_amp.S" .text .allow_optimizations .set OUTPUT_COLUMNS, 80 .set INNER_MICRO_DIMENSION, 16 .set INNER_GROUPS, 64 / INNER_MICRO_DIMENSION .set COLUMN_MICRO_DIMENSION, 16 .set SYNC_COMPUTE_SET, (2) .set CLEAR_CWEI, 1 << 2 .set CLEAR_AACC, 1 << (3) .set ENABLE_STOCHASTIC_ROUNDING, 1 << (19) .macro PARTITION_ROWS count get $m4, $WSR and $m4, $m4, (0x00000007U) setzi $m5, (\count) / 6 mul $m6, $m4, (\count) / 6 .if (\count) % 6 setzi $m9, (\count) % 6 cmpult $m7, $m4, $m9 add $m5, $m5, $m7 min $m7, $m4, $m9 add $m6, $m6, $m7 .endif .endm .macro LOAD_AMP16_WEIGHTS ld128putcs 0 ld128putcs 2 ld128putcs 4 ld128putcs 6 ld128putcs 32 ld128putcs 34 ld128putcs 36 ld128putcs 38 ld128putcs 8 ld128putcs 10 ld128putcs 12 ld128putcs 14 ld128putcs 40 ld128putcs 42 ld128putcs 44 ld128putcs 46 ld128putcs 16 ld128putcs 18 ld128putcs 20 ld128putcs 22 ld128putcs 48 ld128putcs 50 ld128putcs 52 ld128putcs 54 ld128putcs 24 ld128putcs 26 ld128putcs 28 ld128putcs 30 ld128putcs 56 ld128putcs 58 ld128putcs 60 ld128putcs 62 # 187 "/srv/home/gc-sdk/ipu-stack/crates/ipu-tests/../../device/gemm_f16_amp.S" .endm .macro GEMM_SUPERVISOR name, initial, rows, worker, retained_output_worker, retained_inner_worker .section .text.\name,"ax",@progbits .globl \name .p2align 2 .type \name,@function \name: .supervisor add $m11, $m11, -32 st32 $m2, $m11, $m15, 0 st32 $m3, $m11, $m15, 1 setzi $m8, \initial st32 $m8, $m11, $m15, 5 get $m8, $FP_ICTL st32 $m8, $m11, $m15, 6 setzi $m0, ENABLE_STOCHASTIC_ROUNDING or $m8, $m8, $m0 put $FP_ICTL, $m8 setzi $m0, 0 put (49), $m0 zero $m0 put ((49) + 2), $m0 setzi $m8, CLEAR_CWEI put $CR, $m8 add $m4, $m4, 0 put $CCCSLOAD, $m4 zero $m6 setzi $m0, \worker .Lcolumn_group_\@: zero $m7 .Linner_group_\@: sync SYNC_COMPUTE_SET LOAD_AMP16_WEIGHTS runall $m0, $m11, 0 setzi $m0, \retained_inner_worker add $m7, $m7, 1 setzi $m8, INNER_GROUPS cmpult $m8, $m7, $m8 brnz $m8, .Linner_group_\@ setzi $m0, \retained_output_worker add $m6, $m6, 1 setzi $m8, OUTPUT_COLUMNS / COLUMN_MICRO_DIMENSION cmpult $m8, $m6, $m8 brnz $m8, .Lcolumn_group_\@ sync SYNC_COMPUTE_SET ld32 $m8, $m11, $m15, 6 put $FP_ICTL, $m8 add $m11, $m11, 32 br $m10 .size \name, .-\name .endm GEMM_SUPERVISOR ipu_stack_gemm_f16_init_small_rows_interleaved_k64_c80_r11_r12, 1, 11, .Lgemm_f16_amp_worker_small, .Lgemm_f16_amp_worker_small_retained_output, .Lgemm_f16_amp_worker_small_retained_inner GEMM_SUPERVISOR ipu_stack_gemm_f16_init_large_rows_interleaved_k64_c80_r11_r12, 1, 12, .Lgemm_f16_amp_worker_large, .Lgemm_f16_amp_worker_large_retained_output, .Lgemm_f16_amp_worker_large_retained_inner GEMM_SUPERVISOR ipu_stack_gemm_f16_accumulate_small_rows_interleaved_k64_c80_r11_r12, 0, 11, .Lgemm_f16_amp_worker_small, .Lgemm_f16_amp_worker_small_retained_output, .Lgemm_f16_amp_worker_small_retained_inner GEMM_SUPERVISOR ipu_stack_gemm_f16_accumulate_large_rows_interleaved_k64_c80_r11_r12, 0, 12, .Lgemm_f16_amp_worker_large, .Lgemm_f16_amp_worker_large_retained_output, .Lgemm_f16_amp_worker_large_retained_inner .worker .macro GEMM_WORKER name, retained_output_name, retained_inner_name, rows .p2align 3 \name: # 289 "/srv/home/gc-sdk/ipu-stack/crates/ipu-tests/../../device/gemm_f16_amp.S" \name: PARTITION_ROWS \rows shl $m6, $m6, 5 .if (\rows) < 6 brz $m5, .Lgemm_f16_no_rows_\@ .endif ld32 $m0, $mvertex_base, $m15, 0 ld32 $m1, $mvertex_base, $m15, 1 add $m9, $m0, $m6 add $m2, $m1, $m6 add $m3, $m9, 32 add $m8, $m5, -1 bri .Lgemm_f16_load_mode_\@ \retained_output_name: .if (\rows) < 6 brz $m5, .Lgemm_f16_no_rows_\@ .endif add $m9, $m9, (\rows) * COLUMN_MICRO_DIMENSION * 2 add $m2, $m1, $m6 add $m3, $m9, 32 add $m8, $m5, -1 .Lgemm_f16_load_mode_\@: ld32 $m7, $mvertex_base, $m15, 5 brz $m7, .Lf16_accumulate_\@ setzi $a6, CLEAR_AACC { add $m7, $m2, 0 uput $FP_CLR, $a6 } ld64step $a0:1, $mzero, $m7+=, 1 { ld64step $a0:1, $mzero, $m7+=, 1 f16v4hihov4amp $a6:7, $a0:1, $azeros, (48) } { ld64step $a0:1, $mzero, $m7+=, 1 f16v4hihov4amp $a6:7, $a0:1, $azeros, (49) } { ld64step $a0:1, $mzero, $m7+=, 1 f16v4hihov4amp $a6:7, $a0:1, $azeros, (50) } { ld64step $a0:1, $mzero, $m7+=, 1 f16v4hihov4amp $a6:7, $a0:1, $azeros, (51) } { ld64step $a0:1, $mzero, $m7+=, 1 f16v4hihov4amp $a6:7, $a0:1, $azeros, (48) } tapack $m10:11, $m7, $m3, $m9 { rpt $m8, 3 fnop } { ldst64pace $a0:1, $a6:7, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $a0:1, $azeros, (49) } { ldst64pace $a0:1, $a6:7, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $a0:1, $azeros, (50) } { ldst64pace $a0:1, $a6:7, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $a0:1, $azeros, (51) } { ldst64pace $a0:1, $a6:7, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $a0:1, $azeros, (48) } { st64pace $a6:7, $m10:11+=, $mzero, 0b00 f16v4hihov4amp $a6:7, $azeros, $azeros, (49) } { st64pace $a6:7, $m10:11+=, $mzero, 0b00 f16v4hihov4amp $a6:7, $azeros, $azeros, (50) } { st64pace $a6:7, $m10:11+=, $mzero, 0b00 f16v4hihov4amp $a6:7, $azeros, $azeros, (51) } st64pace $a6:7, $m10:11+=, $mzero, 0b00 exitz $mzero \retained_inner_name: .if (\rows) < 6 brz $m5, .Lgemm_f16_no_rows_\@ .endif add $m2, $m2, (\rows) * INNER_MICRO_DIMENSION * 2 .Lf16_accumulate_\@: setzi $a6, CLEAR_AACC uput $FP_CLR, $a6 ld128 $a0:3, $m9, $m15, 0 { add $m2, $m2, 0 f16v4hihov4amp $a6:7, $azeros, $a0:1, (48) } { ld128 $a0:3, $m9, $m15, 1 f16v4hihov4amp $a6:7, $azeros, $a2:3, (49) } { tapack $m10:11, $m2, $m3, $m9 f16v4hihov4amp $a6:7, $azeros, $a0:1, (50) } { ld2x64pace $a0:1, $a2:3, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $azeros, $a2:3, (51) } { ld2x64pace $a0:1, $a2:3, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $a0:1, $a2:3, (48) } { ld2x64pace $a0:1, $a2:3, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $a0:1, $a2:3, (49) } { ld2x64pace $a0:1, $a2:3, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $a0:1, $a2:3, (50) } { ld2x64pace $a0:1, $a2:3, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $a0:1, $a2:3, (51) } { ld2x64pace $a0:1, $a2:3, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a6:7, $a0:1, $a2:3, (48) } { ld2x64pace $a0:1, $a2:3, $m10:11+=, $mzero, 0b0000 f16v4hihov4amp $a4:5, $a0:1, $a2:3, (49) } { rpt $m8, 3 fnop } { ld2xst64pace $a0:3, $a6:7, $m10:11+=, $mzero, 0b000000 f16v4hihov4amp $a6:7, $a0:1, $a2:3, (50) } { ld2xst64pace $a0:3, $a4:5, $m10:11+=, $mzero, 0b000000 f16v4hihov4amp $a4:5, $a0:1, $a2:3, (51) } { ld2xst64pace $a0:3, $a6:7, $m10:11+=, $mzero, 0b000000 f16v4hihov4amp $a6:7, $a0:1, $a2:3, (48) } { ld2xst64pace $a0:3, $a4:5, $m10:11+=, $mzero, 0b000000 f16v4hihov4amp $a4:5, $a0:1, $a2:3, (49) } { st64pace $a6:7, $m10:11+=, $mzero, 0b00 f16v4hihov4amp $a6:7, $azeros, $azeros, (50) } { st64pace $a4:5, $m10:11+=, $mzero, 0b00 f16v4hihov4amp $a4:5, $azeros, $a2:3, (51) } st64pace $a6:7, $m10:11+=, $mzero, 0b00 st64pace $a4:5, $m10:11+=, $mzero, 0b00 exitz $mzero .Lgemm_f16_no_rows_\@: exitz $mzero .endm GEMM_WORKER .Lgemm_f16_amp_worker_small, .Lgemm_f16_amp_worker_small_retained_output, .Lgemm_f16_amp_worker_small_retained_inner, 11 GEMM_WORKER .Lgemm_f16_amp_worker_large, .Lgemm_f16_amp_worker_large_retained_output, .Lgemm_f16_amp_worker_large_retained_inner, 12 > 2026-09-06T17:45:33.174680Z INFO ipu_codegen.package.phase{phase="compile_kernels"}: package build phase finished phase="compile_kernels" elapsed_ms=86 success=false Error: ELF processing failed: tool failed: popc exited with exit status: 1 Caused by: tool failed: popc exited with exit status: 1