Skip to content

Calculate timing for each thread#36

Open
pt13762104 wants to merge 1 commit into
pigirons:masterfrom
pt13762104:master
Open

Calculate timing for each thread#36
pt13762104 wants to merge 1 commit into
pigirons:masterfrom
pt13762104:master

Conversation

@pt13762104

@pt13762104 pt13762104 commented May 8, 2026

Copy link
Copy Markdown

Instead of getting the maximum runtime of every thread, I have calculated the respective run-times of each thread and calculated the peak result based on it.

Also for the original assembly code on ARM, it runs at half-rate on Cortex-X2. Possibly other cores are affected, too (cores that can do more than 2xFMA per cycle). I've changed the code so this is fixed.

On a Dimensity 9000+ (all threads):

Before:

Instruction Set Core Computation Peak Performance
i8mm mmla(s32,s8,s8) 919.17 GOPS
i8mm mmla(u32,u8,u8) 917.01 GOPS
i8mm mmla(s32,u8,s8) 918.82 GOPS
i8mm dp4a.vs(s32,s8,u8) 459.47 GOPS
i8mm dp4a.vs(s32,u8,s8) 459.38 GOPS
i8mm dp4a.vv(s32,u8,s8) 458.91 GOPS
asimd_dp dp4a.vs(s32,s8,s8) 451.77 GOPS
asimd_dp dp4a.vv(s32,s8,s8) 459.58 GOPS
asimd_dp dp4a.vs(u32,u8,u8) 459.03 GOPS
asimd_dp dp4a.vv(u32,u8,u8) 459.4 GOPS
bf16 mmla(f32,bf16,bf16) 83.569 GFLOPS
bf16 dp2a.vs(f32,bf16,bf16) 95.732 GFLOPS
bf16 dp2a.vv(f32,bf16,bf16) 101.42 GFLOPS
asimd_hp fmla.vs(fp16,fp16,fp16) 229.05 GFLOPS
asimd_hp fmla.vv(fp16,fp16,fp16) 226.56 GFLOPS
asimd fmla.vs(f32,f32,f32) 114.84 GFLOPS
asimd fmla.vv(f32,f32,f32) 114.91 GFLOPS
asimd fmla.vs(f64,f64,f64) 57.451 GFLOPS
asimd fmla.vv(f64,f64,f64) 57.405 GFLOPS

After:

Instruction Set Core Computation Peak Performance
i8mm mmla(s32,s8,s8) 2.5148 TOPS
i8mm mmla(u32,u8,u8) 2.5188 TOPS
i8mm mmla(s32,u8,s8) 2.5273 TOPS
i8mm dp4a.vs(s32,s8,u8) 1.2479 TOPS
i8mm dp4a.vs(s32,u8,s8) 1.2483 TOPS
i8mm dp4a.vv(s32,u8,s8) 1.2617 TOPS
asimd_dp dp4a.vs(s32,s8,s8) 1.2433 TOPS
asimd_dp dp4a.vv(s32,s8,s8) 1.2716 TOPS
asimd_dp dp4a.vs(u32,u8,u8) 1.2471 TOPS
asimd_dp dp4a.vv(u32,u8,u8) 1.2566 TOPS
bf16 mmla(f32,bf16,bf16) 1.0732 TFLOPS
bf16 dp2a.vs(f32,bf16,bf16) 566.16 GFLOPS
bf16 dp2a.vv(f32,bf16,bf16) 566.23 GFLOPS
asimd_hp fmla.vs(fp16,fp16,fp16) 631.28 GFLOPS
asimd_hp fmla.vv(fp16,fp16,fp16) 634.03 GFLOPS
asimd fmla.vs(f32,f32,f32) 317.33 GFLOPS
asimd fmla.vv(f32,f32,f32) 315.58 GFLOPS
asimd fmla.vs(f64,f64,f64) 159 GFLOPS
asimd fmla.vv(f64,f64,f64) 158.72 GFLOPS

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.

1 participant