## 经 TC VMEM:数值检查通过 cfence: 1 dma.simple: 2 sadd.s32: 2 sand.u32: 3 seq.s32: 1 simm.s32: 1 sld: 3 sor.u32: 2 sshll.u32: 2 sshrl.u32: 1 vsyncadd.remote.s32: 1 vsyncadd.s32: 3 vtrace: 2 vwait.ge: 3 # function jit(through_vmem)/through_vmem/mpmd_map [symbol 4, through_vmem.1]; image bundles [503, 529) { misc: vtrace 0x80000000 } # entry bundle: %through_vmem.1 = custom-call(%x_hbm.1) { s1: sld s6, [smem:0x1] } { s0: seq.s32 p0, s6, 0 } { s0: simm.s32 s7, 0 ; # materialized constant .encoding { s0.y = lo(imm0) } } { s0: @p0 dma.simple [vmem:s7], [hbm:s0], length=64, dst_flag=[sflag:52] } { misc: @p0 vwait.ge [sflag:52], 64 ; # chapter01/04_local_dma/01_pallas_f32_copy_64x128.py:38:12-38:55 .encoding { misc.value = imm2 } } { misc: @p0 vsyncadd.s32 [sflag:52], -64 ; # chapter01/04_local_dma/01_pallas_f32_copy_64x128.py:38:12-38:55 .encoding { misc.value = imm2 } } { s0: @p0 dma.simple [hbm:s1], [vmem:s7], length=64, dst_flag=[sflag:52] } { misc: @p0 vwait.ge [sflag:52], 64 ; # chapter01/04_local_dma/01_pallas_f32_copy_64x128.py:39:12-39:55 .encoding { misc.value = imm2 } } # exit bundle: %through_vmem.1 = custom-call(%x_hbm.1) { misc: @p0 vsyncadd.s32 [sflag:52], -64 ; # chapter01/04_local_dma/01_pallas_f32_copy_64x128.py:39:12-39:55 .encoding { misc.value = imm2 } } { s1: sld s20, [smem:0x0] } { s1: sld s21, [smem:0x1] } { s0: sand.u32 s24, 0xfff, s20 } { s0: sadd.s32 s22, 1, s21 ; s1: sshll.u32 s27, s24, 0x12 } { s0: sand.u32 s23, 0x1, s22 } # smod.u32 w/div 2 { s0: sand.u32 s25, 0x3, s23 } { s0: sshll.u32 s26, s25, 0x10 } { s0: sadd.s32 s28, 131072, s26 } { s0: sshrl.u32 s29, s28, 0x2 } { s0: sor.u32 s30, 0x2d, s29 } { s0: sor.u32 s2, s30, s27 } { misc: vsyncadd.remote.s32 [sflag:s2], 1 } { misc: vwait.ge [sflag:45], 1 ; .encoding { misc.value = imm2 } } { misc: vsyncadd.s32 [sflag:45], -1 ; .encoding { misc.value = imm2 } } { misc: cfence } { misc: vtrace 0x90000000 } # end function jit(through_vmem)/through_vmem/mpmd_map [symbol 4, through_vmem.1] ## HBM→HBM:数值检查通过 cfence: 1 dma.general: 1 sadd.s32: 2 sand.u32: 3 seq.s32: 1 simm.s32: 3 sld: 3 sor.u32: 2 sshll.u32: 2 sshrl.u32: 1 vsyncadd.remote.s32: 1 vsyncadd.s32: 2 vtrace: 2 vwait.ge: 2 # function jit(hbm_to_hbm)/hbm_to_hbm/mpmd_map [symbol 4, hbm_to_hbm.1]; image bundles [503, 527) { misc: vtrace 0x80000000 } # entry bundle: %hbm_to_hbm.1 = custom-call(%x_hbm.1) { s1: sld s6, [smem:0x1] } { s0: seq.s32 p0, s6, 0 } { s0: simm.s32 s7, 52 ; # materialized constant s1: simm.s32 s8, 0 } # materialized constant { s0: simm.s32 s9, 0 } # materialized constant { s0: @p0 dma.general [hbm:s1], [hbm:s0], length=64, stride_descriptor=[smem:0x0], stride_count=0, src_flag=[sflag:s8], dst_flag=[sflag:s7], ici_dest=s9 } # chapter01/04_local_dma/01_pallas_f32_copy_64x128.py:58:12-58:47 | hbm-to-hbm { misc: @p0 vwait.ge [sflag:52], 64 ; # chapter01/04_local_dma/01_pallas_f32_copy_64x128.py:58:12-58:54 .encoding { misc.value = imm2 } } # exit bundle: %hbm_to_hbm.1 = custom-call(%x_hbm.1) { misc: @p0 vsyncadd.s32 [sflag:52], -64 ; # chapter01/04_local_dma/01_pallas_f32_copy_64x128.py:58:12-58:54 .encoding { misc.value = imm2 } } { s1: sld s20, [smem:0x0] } { s1: sld s21, [smem:0x1] } { s0: sand.u32 s24, 0xfff, s20 } { s0: sadd.s32 s22, 1, s21 ; s1: sshll.u32 s27, s24, 0x12 } { s0: sand.u32 s23, 0x1, s22 } # smod.u32 w/div 2 { s0: sand.u32 s25, 0x3, s23 } { s0: sshll.u32 s26, s25, 0x10 } { s0: sadd.s32 s28, 131072, s26 } { s0: sshrl.u32 s29, s28, 0x2 } { s0: sor.u32 s30, 0x2d, s29 } { s0: sor.u32 s2, s30, s27 } { misc: vsyncadd.remote.s32 [sflag:s2], 1 } { misc: vwait.ge [sflag:45], 1 ; .encoding { misc.value = imm2 } } { misc: vsyncadd.s32 [sflag:45], -1 ; .encoding { misc.value = imm2 } } { misc: cfence } { misc: vtrace 0x90000000 } # end function jit(hbm_to_hbm)/hbm_to_hbm/mpmd_map [symbol 4, hbm_to_hbm.1]