tests : dedup fusion baseline into any mode

prefill and decode always produce the same per-graph fusion count, so
store a single row per label with mode = "any" and the per-graph count
instead of two rows. this halves the baseline size and keeps the check
stable.

Assisted-by: pi:llama.cpp/DeepSeek-V4-Flash-0731
This commit is contained in:
Georgi Gerganov
2026-09-03 17:19:50 +03:00
parent c1173e364b
commit ef38b985aa
2 changed files with 223 additions and 316 deletions
+150 -300
View File
@@ -1,302 +1,152 @@
# test-fusion baseline for device MTL
# arch ,moe ,mode ,label , count
arcee ,0 ,prefill ,RMS_NORM+MUL , 5
arcee ,0 ,decode ,RMS_NORM+MUL , 80
arctic ,0 ,prefill ,RMS_NORM+MUL , 7
arctic ,0 ,decode ,RMS_NORM+MUL , 112
baichuan ,0 ,prefill ,RMS_NORM+MUL , 5
baichuan ,0 ,decode ,RMS_NORM+MUL , 80
bailingmoe ,1 ,prefill ,RMS_NORM+MUL , 5
bailingmoe ,1 ,prefill ,ADD+ADD , 2
bailingmoe ,1 ,decode ,RMS_NORM+MUL , 80
bailingmoe ,1 ,decode ,ADD+ADD , 32
bailingmoe2 ,1 ,prefill ,RMS_NORM+MUL , 9
bailingmoe2 ,1 ,prefill ,ADD+ADD , 1
bailingmoe2 ,1 ,decode ,RMS_NORM+MUL , 144
bailingmoe2 ,1 ,decode ,ADD+ADD , 16
bailingmoe3 ,1 ,prefill ,RMS_NORM+MUL , 8
bailingmoe3 ,1 ,prefill ,ADD+ADD , 1
bailingmoe3 ,1 ,prefill ,GATED_DELTA_NET+CPY , 1
bailingmoe3 ,1 ,decode ,RMS_NORM+MUL , 128
bailingmoe3 ,1 ,decode ,ADD+ADD , 16
bailingmoe3 ,1 ,decode ,GATED_DELTA_NET+CPY , 16
bloom ,0 ,prefill ,NORM+MUL+ADD , 6
bloom ,0 ,decode ,NORM+MUL+ADD , 96
chatglm ,0 ,prefill ,RMS_NORM+MUL , 5
chatglm ,0 ,decode ,RMS_NORM+MUL , 80
codeshell ,0 ,prefill ,NORM+MUL+ADD , 5
codeshell ,0 ,decode ,NORM+MUL+ADD , 80
cogvlm ,0 ,prefill ,RMS_NORM+MUL , 5
cogvlm ,0 ,decode ,RMS_NORM+MUL , 80
command-r ,0 ,prefill ,NORM+MUL , 3
command-r ,0 ,decode ,NORM+MUL , 48
dbrx ,0 ,prefill ,NORM+MUL , 5
dbrx ,0 ,decode ,NORM+MUL , 80
deci ,0 ,prefill ,RMS_NORM+MUL , 5
deci ,0 ,decode ,RMS_NORM+MUL , 80
deepseek ,0 ,prefill ,RMS_NORM+MUL , 5
deepseek ,0 ,prefill ,ADD+ADD , 1
deepseek ,0 ,decode ,RMS_NORM+MUL , 80
deepseek ,0 ,decode ,ADD+ADD , 16
deepseek2 ,0 ,prefill ,RMS_NORM+MUL , 9
deepseek2 ,0 ,prefill ,ADD+ADD , 1
deepseek2 ,0 ,decode ,RMS_NORM+MUL , 144
deepseek2 ,0 ,decode ,ADD+ADD , 16
deepseek32 ,0 ,prefill ,NORM+MUL+ADD , 2
deepseek32 ,0 ,prefill ,RMS_NORM+MUL , 9
deepseek32 ,0 ,prefill ,ADD+ADD , 1
deepseek32 ,0 ,decode ,NORM+MUL+ADD , 32
deepseek32 ,0 ,decode ,RMS_NORM+MUL , 144
deepseek32 ,0 ,decode ,ADD+ADD , 16
deepseek4 ,0 ,prefill ,RMS_NORM+MUL , 20
deepseek4 ,0 ,decode ,RMS_NORM+MUL , 320
dots1 ,0 ,prefill ,RMS_NORM+MUL , 9
dots1 ,0 ,prefill ,ADD+ADD , 1
dots1 ,0 ,decode ,RMS_NORM+MUL , 144
dots1 ,0 ,decode ,ADD+ADD , 16
dream ,0 ,prefill ,RMS_NORM+MUL , 5
dream ,0 ,decode ,RMS_NORM+MUL , 80
ernie4_5-moe ,1 ,prefill ,RMS_NORM+MUL , 5
ernie4_5-moe ,1 ,prefill ,ADD+ADD , 1
ernie4_5-moe ,1 ,decode ,RMS_NORM+MUL , 80
ernie4_5-moe ,1 ,decode ,ADD+ADD , 16
ernie4_5 ,0 ,prefill ,RMS_NORM+MUL , 5
ernie4_5 ,0 ,decode ,RMS_NORM+MUL , 80
exaone ,0 ,prefill ,RMS_NORM+MUL , 5
exaone ,0 ,decode ,RMS_NORM+MUL , 80
exaone4 ,0 ,prefill ,RMS_NORM+MUL , 5
exaone4 ,0 ,prefill ,RMS_NORM+MUL+ADD , 4
exaone4 ,0 ,decode ,RMS_NORM+MUL , 80
exaone4 ,0 ,decode ,RMS_NORM+MUL+ADD , 64
falcon ,0 ,prefill ,NORM+MUL+ADD , 5
falcon ,0 ,prefill ,ADD+ADD , 2
falcon ,0 ,decode ,NORM+MUL+ADD , 80
falcon ,0 ,decode ,ADD+ADD , 32
falcon-h1 ,0 ,prefill ,RMS_NORM+MUL , 9
falcon-h1 ,0 ,prefill ,ADD+ADD , 2
falcon-h1 ,0 ,decode ,RMS_NORM+MUL , 144
falcon-h1 ,0 ,decode ,ADD+ADD , 32
gemma ,0 ,prefill ,RMS_NORM+MUL , 5
gemma ,0 ,decode ,RMS_NORM+MUL , 80
gemma2 ,0 ,prefill ,RMS_NORM+MUL , 5
gemma2 ,0 ,prefill ,RMS_NORM+MUL+ADD , 4
gemma2 ,0 ,decode ,RMS_NORM+MUL , 80
gemma2 ,0 ,decode ,RMS_NORM+MUL+ADD , 64
glm-dsa ,0 ,prefill ,NORM+MUL+ADD , 2
glm-dsa ,0 ,prefill ,RMS_NORM+MUL , 9
glm-dsa ,0 ,prefill ,ADD+ADD , 1
glm-dsa ,0 ,decode ,NORM+MUL+ADD , 32
glm-dsa ,0 ,decode ,RMS_NORM+MUL , 144
glm-dsa ,0 ,decode ,ADD+ADD , 16
glm4 ,0 ,prefill ,RMS_NORM+MUL , 5
glm4 ,0 ,prefill ,RMS_NORM+MUL+ADD , 4
glm4 ,0 ,decode ,RMS_NORM+MUL , 80
glm4 ,0 ,decode ,RMS_NORM+MUL+ADD , 64
glm4moe ,1 ,prefill ,RMS_NORM+MUL , 9
glm4moe ,1 ,prefill ,ADD+ADD , 1
glm4moe ,1 ,decode ,RMS_NORM+MUL , 144
glm4moe ,1 ,decode ,ADD+ADD , 16
gpt-oss ,0 ,prefill ,RMS_NORM+MUL , 5
gpt-oss ,0 ,decode ,RMS_NORM+MUL , 80
gpt2 ,0 ,prefill ,NORM+MUL+ADD , 5
gpt2 ,0 ,decode ,NORM+MUL+ADD , 80
gptneox ,0 ,prefill ,NORM+MUL+ADD , 5
gptneox ,0 ,decode ,NORM+MUL+ADD , 80
granite ,0 ,prefill ,RMS_NORM+MUL , 5
granite ,0 ,decode ,RMS_NORM+MUL , 80
granite ,0 ,prefill ,RMS_NORM+MUL , 5
granite ,0 ,decode ,RMS_NORM+MUL , 80
granitehybrid ,0 ,prefill ,RMS_NORM+MUL , 6
granitehybrid ,0 ,decode ,RMS_NORM+MUL , 96
granitemoe ,1 ,prefill ,RMS_NORM+MUL , 5
granitemoe ,1 ,decode ,RMS_NORM+MUL , 80
granitemoe ,1 ,prefill ,RMS_NORM+MUL , 5
granitemoe ,1 ,decode ,RMS_NORM+MUL , 80
grok ,0 ,prefill ,RMS_NORM+MUL , 5
grok ,0 ,prefill ,RMS_NORM+MUL+ADD , 4
grok ,0 ,decode ,RMS_NORM+MUL , 80
grok ,0 ,decode ,RMS_NORM+MUL+ADD , 64
grovemoe ,1 ,prefill ,RMS_NORM+MUL , 9
grovemoe ,1 ,prefill ,ADD+ADD , 2
grovemoe ,1 ,decode ,RMS_NORM+MUL , 144
grovemoe ,1 ,decode ,ADD+ADD , 32
hunyuan-dense ,0 ,prefill ,RMS_NORM+MUL , 9
hunyuan-dense ,0 ,decode ,RMS_NORM+MUL , 144
hunyuan-moe ,1 ,prefill ,RMS_NORM+MUL , 9
hunyuan-moe ,1 ,prefill ,ADD+ADD , 2
hunyuan-moe ,1 ,decode ,RMS_NORM+MUL , 144
hunyuan-moe ,1 ,decode ,ADD+ADD , 32
hunyuan_vl ,0 ,prefill ,RMS_NORM+MUL , 9
hunyuan_vl ,0 ,decode ,RMS_NORM+MUL , 144
hy_v3 ,0 ,prefill ,RMS_NORM+MUL , 9
hy_v3 ,0 ,prefill ,ADD+ADD , 2
hy_v3 ,0 ,decode ,RMS_NORM+MUL , 144
hy_v3 ,0 ,decode ,ADD+ADD , 32
internlm2 ,0 ,prefill ,RMS_NORM+MUL , 5
internlm2 ,0 ,decode ,RMS_NORM+MUL , 80
jais ,0 ,prefill ,NORM+MUL+ADD , 5
jais ,0 ,decode ,NORM+MUL+ADD , 80
jais2 ,0 ,prefill ,NORM+MUL+ADD , 5
jais2 ,0 ,decode ,NORM+MUL+ADD , 80
jamba ,0 ,prefill ,RMS_NORM+MUL , 8
jamba ,0 ,decode ,RMS_NORM+MUL , 128
kimi-k3 ,0 ,prefill ,RMS_NORM+MUL , 17
kimi-k3 ,0 ,prefill ,GATED_DELTA_NET+CPY , 1
kimi-k3 ,0 ,decode ,RMS_NORM+MUL , 272
kimi-k3 ,0 ,decode ,GATED_DELTA_NET+CPY , 16
kimi-linear ,0 ,prefill ,RMS_NORM+MUL , 7
kimi-linear ,0 ,prefill ,ADD+ADD , 1
kimi-linear ,0 ,prefill ,GATED_DELTA_NET+CPY , 1
kimi-linear ,0 ,decode ,RMS_NORM+MUL , 112
kimi-linear ,0 ,decode ,ADD+ADD , 16
kimi-linear ,0 ,decode ,GATED_DELTA_NET+CPY , 16
lfm2 ,0 ,prefill ,RMS_NORM+MUL , 7
lfm2 ,0 ,decode ,RMS_NORM+MUL , 112
lfm2moe ,1 ,prefill ,RMS_NORM+MUL , 7
lfm2moe ,1 ,decode ,RMS_NORM+MUL , 112
llada ,0 ,prefill ,RMS_NORM+MUL , 5
llada ,0 ,decode ,RMS_NORM+MUL , 80
llada-moe ,1 ,prefill ,RMS_NORM+MUL , 9
llada-moe ,1 ,decode ,RMS_NORM+MUL , 144
llama ,0 ,prefill ,RMS_NORM+MUL , 5
llama ,0 ,decode ,RMS_NORM+MUL , 80
llama ,0 ,prefill ,RMS_NORM+MUL , 5
llama ,0 ,decode ,RMS_NORM+MUL , 80
llama4 ,0 ,prefill ,RMS_NORM+MUL , 9
llama4 ,0 ,prefill ,ADD+ADD , 2
llama4 ,0 ,decode ,RMS_NORM+MUL , 144
llama4 ,0 ,decode ,ADD+ADD , 32
maincoder ,0 ,prefill ,RMS_NORM+MUL , 9
maincoder ,0 ,decode ,RMS_NORM+MUL , 144
mamba ,0 ,prefill ,RMS_NORM+MUL , 3
mamba ,0 ,decode ,RMS_NORM+MUL , 48
mamba2 ,0 ,prefill ,RMS_NORM+MUL , 5
mamba2 ,0 ,decode ,RMS_NORM+MUL , 80
minicpm ,0 ,prefill ,RMS_NORM+MUL , 5
minicpm ,0 ,decode ,RMS_NORM+MUL , 80
minicpm ,0 ,prefill ,RMS_NORM+MUL , 5
minicpm ,0 ,decode ,RMS_NORM+MUL , 80
minicpm3 ,0 ,prefill ,RMS_NORM+MUL , 9
minicpm3 ,0 ,decode ,RMS_NORM+MUL , 144
minimax-01 ,0 ,prefill ,RMS_NORM+MUL , 6
minimax-01 ,0 ,decode ,RMS_NORM+MUL , 96
minimax-m2 ,0 ,prefill ,RMS_NORM+MUL , 9
minimax-m2 ,0 ,decode ,RMS_NORM+MUL , 144
minimax-m3 ,0 ,prefill ,RMS_NORM+MUL , 11
minimax-m3 ,0 ,prefill ,ADD+ADD , 1
minimax-m3 ,0 ,decode ,RMS_NORM+MUL , 176
minimax-m3 ,0 ,decode ,ADD+ADD , 16
mistral3 ,0 ,prefill ,RMS_NORM+MUL , 5
mistral3 ,0 ,decode ,RMS_NORM+MUL , 80
mistral3 ,0 ,prefill ,RMS_NORM+MUL , 5
mistral3 ,0 ,decode ,RMS_NORM+MUL , 80
mistral4 ,0 ,prefill ,RMS_NORM+MUL , 9
mistral4 ,0 ,prefill ,ADD+ADD , 1
mistral4 ,0 ,decode ,RMS_NORM+MUL , 144
mistral4 ,0 ,decode ,ADD+ADD , 16
mpt ,0 ,prefill ,NORM+MUL+ADD , 5
mpt ,0 ,decode ,NORM+MUL+ADD , 80
nanbeige ,0 ,prefill ,RMS_NORM+MUL , 5
nanbeige ,0 ,decode ,RMS_NORM+MUL , 80
nemotron ,0 ,prefill ,NORM+MUL+ADD , 5
nemotron ,0 ,decode ,NORM+MUL+ADD , 80
nemotron_h ,0 ,prefill ,RMS_NORM+MUL , 5
nemotron_h ,0 ,decode ,RMS_NORM+MUL , 80
nemotron_h_moe ,1 ,prefill ,RMS_NORM+MUL , 5
nemotron_h_moe ,1 ,decode ,RMS_NORM+MUL , 80
olmoe ,1 ,prefill ,RMS_NORM+MUL , 9
olmoe ,1 ,decode ,RMS_NORM+MUL , 144
openelm ,0 ,prefill ,RMS_NORM+MUL , 9
openelm ,0 ,decode ,RMS_NORM+MUL , 144
orion ,0 ,prefill ,NORM+MUL+ADD , 5
orion ,0 ,decode ,NORM+MUL+ADD , 80
paddleocr ,0 ,prefill ,RMS_NORM+MUL , 5
paddleocr ,0 ,decode ,RMS_NORM+MUL , 80
pangu-embedded ,0 ,prefill ,RMS_NORM+MUL , 5
pangu-embedded ,0 ,decode ,RMS_NORM+MUL , 80
phi2 ,0 ,prefill ,NORM+MUL+ADD , 3
phi2 ,0 ,prefill ,ADD+ADD , 2
phi2 ,0 ,decode ,NORM+MUL+ADD , 48
phi2 ,0 ,decode ,ADD+ADD , 32
phi3 ,0 ,prefill ,RMS_NORM+MUL , 5
phi3 ,0 ,decode ,RMS_NORM+MUL , 80
phimoe ,1 ,prefill ,RMS_NORM+MUL+ADD , 5
phimoe ,1 ,decode ,RMS_NORM+MUL+ADD , 80
plamo ,0 ,prefill ,RMS_NORM+MUL , 3
plamo ,0 ,prefill ,ADD+ADD , 2
plamo ,0 ,decode ,RMS_NORM+MUL , 48
plamo ,0 ,decode ,ADD+ADD , 32
plamo2 ,0 ,prefill ,RMS_NORM+MUL , 11
plamo2 ,0 ,prefill ,RMS_NORM+MUL+ADD , 3
plamo2 ,0 ,decode ,RMS_NORM+MUL , 176
plamo2 ,0 ,decode ,RMS_NORM+MUL+ADD , 48
pockettts ,0 ,prefill ,NORM+MUL+ADD , 5
pockettts ,0 ,decode ,NORM+MUL+ADD , 80
qwen ,0 ,prefill ,RMS_NORM+MUL , 5
qwen ,0 ,decode ,RMS_NORM+MUL , 80
qwen2 ,0 ,prefill ,RMS_NORM+MUL , 5
qwen2 ,0 ,decode ,RMS_NORM+MUL , 80
qwen2moe ,1 ,prefill ,RMS_NORM+MUL , 5
qwen2moe ,1 ,prefill ,ADD+ADD , 2
qwen2moe ,1 ,decode ,RMS_NORM+MUL , 80
qwen2moe ,1 ,decode ,ADD+ADD , 32
qwen2vl ,0 ,prefill ,RMS_NORM+MUL , 5
qwen2vl ,0 ,decode ,RMS_NORM+MUL , 80
qwen3 ,0 ,prefill ,RMS_NORM+MUL , 9
qwen3 ,0 ,decode ,RMS_NORM+MUL , 144
qwen35 ,0 ,prefill ,RMS_NORM+MUL , 8
qwen35 ,0 ,prefill ,GATED_DELTA_NET+CPY , 1
qwen35 ,0 ,decode ,RMS_NORM+MUL , 128
qwen35 ,0 ,decode ,GATED_DELTA_NET+CPY , 16
qwen35moe ,1 ,prefill ,RMS_NORM+MUL , 8
qwen35moe ,1 ,prefill ,ADD+ADD , 2
qwen35moe ,1 ,prefill ,GATED_DELTA_NET+CPY , 1
qwen35moe ,1 ,decode ,RMS_NORM+MUL , 128
qwen35moe ,1 ,decode ,ADD+ADD , 32
qwen35moe ,1 ,decode ,GATED_DELTA_NET+CPY , 16
qwen3moe ,1 ,prefill ,RMS_NORM+MUL , 9
qwen3moe ,1 ,decode ,RMS_NORM+MUL , 144
qwen3next ,0 ,prefill ,RMS_NORM+MUL , 8
qwen3next ,0 ,prefill ,ADD+ADD , 2
qwen3next ,0 ,prefill ,GATED_DELTA_NET+CPY , 1
qwen3next ,0 ,decode ,RMS_NORM+MUL , 128
qwen3next ,0 ,decode ,ADD+ADD , 32
qwen3next ,0 ,decode ,GATED_DELTA_NET+CPY , 16
qwen3tts ,0 ,prefill ,RMS_NORM+MUL , 9
qwen3tts ,0 ,decode ,RMS_NORM+MUL , 144
qwen3vl ,0 ,prefill ,RMS_NORM+MUL , 9
qwen3vl ,0 ,decode ,RMS_NORM+MUL , 144
qwen3vlmoe ,1 ,prefill ,RMS_NORM+MUL , 9
qwen3vlmoe ,1 ,decode ,RMS_NORM+MUL , 144
qwen4exp ,0 ,prefill ,RMS_NORM+MUL , 5
qwen4exp ,0 ,prefill ,ADD+ADD+ADD , 5
qwen4exp ,0 ,prefill ,ADD+ADD+ADD+ADD+ADD+ADD+ADD , 9
qwen4exp ,0 ,prefill ,GATED_DELTA_NET+CPY , 1
qwen4exp ,0 ,decode ,RMS_NORM+MUL , 80
qwen4exp ,0 ,decode ,ADD+ADD+ADD , 80
qwen4exp ,0 ,decode ,ADD+ADD+ADD+ADD+ADD+ADD+ADD , 144
qwen4exp ,0 ,decode ,GATED_DELTA_NET+CPY , 16
refact ,0 ,prefill ,RMS_NORM+MUL , 5
refact ,0 ,decode ,RMS_NORM+MUL , 80
refact ,0 ,prefill ,RMS_NORM+MUL , 5
refact ,0 ,decode ,RMS_NORM+MUL , 80
rnd1 ,0 ,prefill ,RMS_NORM+MUL , 9
rnd1 ,0 ,decode ,RMS_NORM+MUL , 144
seed_oss ,0 ,prefill ,RMS_NORM+MUL , 5
seed_oss ,0 ,decode ,RMS_NORM+MUL , 80
smallthinker ,0 ,prefill ,RMS_NORM+MUL , 5
smallthinker ,0 ,decode ,RMS_NORM+MUL , 80
smollm3 ,0 ,prefill ,RMS_NORM+MUL , 5
smollm3 ,0 ,decode ,RMS_NORM+MUL , 80
stablelm ,0 ,prefill ,NORM+MUL , 4
stablelm ,0 ,prefill ,NORM+MUL+ADD , 5
stablelm ,0 ,decode ,NORM+MUL , 64
stablelm ,0 ,decode ,NORM+MUL+ADD , 80
starcoder ,0 ,prefill ,NORM+MUL+ADD , 5
starcoder ,0 ,decode ,NORM+MUL+ADD , 80
starcoder2 ,0 ,prefill ,NORM+MUL+ADD , 5
starcoder2 ,0 ,decode ,NORM+MUL+ADD , 80
talkie ,0 ,prefill ,ADD+ADD , 2
talkie ,0 ,decode ,ADD+ADD , 32
xverse ,0 ,prefill ,RMS_NORM+MUL , 5
xverse ,0 ,decode ,RMS_NORM+MUL , 80
arcee ,0 ,any ,RMS_NORM+MUL , 5
arctic ,0 ,any ,RMS_NORM+MUL , 7
baichuan ,0 ,any ,RMS_NORM+MUL , 5
bailingmoe ,1 ,any ,ADD+ADD , 2
bailingmoe ,1 ,any ,RMS_NORM+MUL , 5
bailingmoe2 ,1 ,any ,ADD+ADD , 1
bailingmoe2 ,1 ,any ,RMS_NORM+MUL , 9
bailingmoe3 ,1 ,any ,ADD+ADD , 1
bailingmoe3 ,1 ,any ,GATED_DELTA_NET+CPY , 1
bailingmoe3 ,1 ,any ,RMS_NORM+MUL , 8
bloom ,0 ,any ,NORM+MUL+ADD , 6
chatglm ,0 ,any ,RMS_NORM+MUL , 5
codeshell ,0 ,any ,NORM+MUL+ADD , 5
cogvlm ,0 ,any ,RMS_NORM+MUL , 5
command-r ,0 ,any ,NORM+MUL , 3
dbrx ,0 ,any ,NORM+MUL , 5
deci ,0 ,any ,RMS_NORM+MUL , 5
deepseek ,0 ,any ,ADD+ADD , 1
deepseek ,0 ,any ,RMS_NORM+MUL , 5
deepseek2 ,0 ,any ,ADD+ADD , 1
deepseek2 ,0 ,any ,RMS_NORM+MUL , 9
deepseek32 ,0 ,any ,ADD+ADD , 1
deepseek32 ,0 ,any ,NORM+MUL+ADD , 2
deepseek32 ,0 ,any ,RMS_NORM+MUL , 9
deepseek4 ,0 ,any ,RMS_NORM+MUL , 20
dots1 ,0 ,any ,ADD+ADD , 1
dots1 ,0 ,any ,RMS_NORM+MUL , 9
dream ,0 ,any ,RMS_NORM+MUL , 5
ernie4_5-moe ,1 ,any ,ADD+ADD , 1
ernie4_5-moe ,1 ,any ,RMS_NORM+MUL , 5
ernie4_5 ,0 ,any ,RMS_NORM+MUL , 5
exaone ,0 ,any ,RMS_NORM+MUL , 5
exaone4 ,0 ,any ,RMS_NORM+MUL , 5
exaone4 ,0 ,any ,RMS_NORM+MUL+ADD , 4
falcon ,0 ,any ,ADD+ADD , 2
falcon ,0 ,any ,NORM+MUL+ADD , 5
falcon-h1 ,0 ,any ,ADD+ADD , 2
falcon-h1 ,0 ,any ,RMS_NORM+MUL , 9
gemma ,0 ,any ,RMS_NORM+MUL , 5
gemma2 ,0 ,any ,RMS_NORM+MUL , 5
gemma2 ,0 ,any ,RMS_NORM+MUL+ADD , 4
glm-dsa ,0 ,any ,ADD+ADD , 1
glm-dsa ,0 ,any ,NORM+MUL+ADD , 2
glm-dsa ,0 ,any ,RMS_NORM+MUL , 9
glm4 ,0 ,any ,RMS_NORM+MUL , 5
glm4 ,0 ,any ,RMS_NORM+MUL+ADD , 4
glm4moe ,1 ,any ,ADD+ADD , 1
glm4moe ,1 ,any ,RMS_NORM+MUL , 9
gpt-oss ,0 ,any ,RMS_NORM+MUL , 5
gpt2 ,0 ,any ,NORM+MUL+ADD , 5
gptneox ,0 ,any ,NORM+MUL+ADD , 5
granite ,0 ,any ,RMS_NORM+MUL , 5
granite ,0 ,any ,RMS_NORM+MUL , 5
granitehybrid ,0 ,any ,RMS_NORM+MUL , 6
granitemoe ,1 ,any ,RMS_NORM+MUL , 5
granitemoe ,1 ,any ,RMS_NORM+MUL , 5
grok ,0 ,any ,RMS_NORM+MUL , 5
grok ,0 ,any ,RMS_NORM+MUL+ADD , 4
grovemoe ,1 ,any ,ADD+ADD , 2
grovemoe ,1 ,any ,RMS_NORM+MUL , 9
hunyuan-dense ,0 ,any ,RMS_NORM+MUL , 9
hunyuan-moe ,1 ,any ,ADD+ADD , 2
hunyuan-moe ,1 ,any ,RMS_NORM+MUL , 9
hunyuan_vl ,0 ,any ,RMS_NORM+MUL , 9
hy_v3 ,0 ,any ,ADD+ADD , 2
hy_v3 ,0 ,any ,RMS_NORM+MUL , 9
internlm2 ,0 ,any ,RMS_NORM+MUL , 5
jais ,0 ,any ,NORM+MUL+ADD , 5
jais2 ,0 ,any ,NORM+MUL+ADD , 5
jamba ,0 ,any ,RMS_NORM+MUL , 8
kimi-k3 ,0 ,any ,GATED_DELTA_NET+CPY , 1
kimi-k3 ,0 ,any ,RMS_NORM+MUL , 17
kimi-linear ,0 ,any ,ADD+ADD , 1
kimi-linear ,0 ,any ,GATED_DELTA_NET+CPY , 1
kimi-linear ,0 ,any ,RMS_NORM+MUL , 7
lfm2 ,0 ,any ,RMS_NORM+MUL , 7
lfm2moe ,1 ,any ,RMS_NORM+MUL , 7
llada ,0 ,any ,RMS_NORM+MUL , 5
llada-moe ,1 ,any ,RMS_NORM+MUL , 9
llama ,0 ,any ,RMS_NORM+MUL , 5
llama ,0 ,any ,RMS_NORM+MUL , 5
llama4 ,0 ,any ,ADD+ADD , 2
llama4 ,0 ,any ,RMS_NORM+MUL , 9
maincoder ,0 ,any ,RMS_NORM+MUL , 9
mamba ,0 ,any ,RMS_NORM+MUL , 3
mamba2 ,0 ,any ,RMS_NORM+MUL , 5
minicpm ,0 ,any ,RMS_NORM+MUL , 5
minicpm ,0 ,any ,RMS_NORM+MUL , 5
minicpm3 ,0 ,any ,RMS_NORM+MUL , 9
minimax-01 ,0 ,any ,RMS_NORM+MUL , 6
minimax-m2 ,0 ,any ,RMS_NORM+MUL , 9
minimax-m3 ,0 ,any ,ADD+ADD , 1
minimax-m3 ,0 ,any ,RMS_NORM+MUL , 11
mistral3 ,0 ,any ,RMS_NORM+MUL , 5
mistral3 ,0 ,any ,RMS_NORM+MUL , 5
mistral4 ,0 ,any ,ADD+ADD , 1
mistral4 ,0 ,any ,RMS_NORM+MUL , 9
mpt ,0 ,any ,NORM+MUL+ADD , 5
nanbeige ,0 ,any ,RMS_NORM+MUL , 5
nemotron ,0 ,any ,NORM+MUL+ADD , 5
nemotron_h ,0 ,any ,RMS_NORM+MUL , 5
nemotron_h_moe ,1 ,any ,RMS_NORM+MUL , 5
olmoe ,1 ,any ,RMS_NORM+MUL , 9
openelm ,0 ,any ,RMS_NORM+MUL , 9
orion ,0 ,any ,NORM+MUL+ADD , 5
paddleocr ,0 ,any ,RMS_NORM+MUL , 5
pangu-embedded ,0 ,any ,RMS_NORM+MUL , 5
phi2 ,0 ,any ,ADD+ADD , 2
phi2 ,0 ,any ,NORM+MUL+ADD , 3
phi3 ,0 ,any ,RMS_NORM+MUL , 5
phimoe ,1 ,any ,RMS_NORM+MUL+ADD , 5
plamo ,0 ,any ,ADD+ADD , 2
plamo ,0 ,any ,RMS_NORM+MUL , 3
plamo2 ,0 ,any ,RMS_NORM+MUL , 11
plamo2 ,0 ,any ,RMS_NORM+MUL+ADD , 3
pockettts ,0 ,any ,NORM+MUL+ADD , 5
qwen ,0 ,any ,RMS_NORM+MUL , 5
qwen2 ,0 ,any ,RMS_NORM+MUL , 5
qwen2moe ,1 ,any ,ADD+ADD , 2
qwen2moe ,1 ,any ,RMS_NORM+MUL , 5
qwen2vl ,0 ,any ,RMS_NORM+MUL , 5
qwen3 ,0 ,any ,RMS_NORM+MUL , 9
qwen35 ,0 ,any ,GATED_DELTA_NET+CPY , 1
qwen35 ,0 ,any ,RMS_NORM+MUL , 8
qwen35moe ,1 ,any ,ADD+ADD , 2
qwen35moe ,1 ,any ,GATED_DELTA_NET+CPY , 1
qwen35moe ,1 ,any ,RMS_NORM+MUL , 8
qwen3moe ,1 ,any ,RMS_NORM+MUL , 9
qwen3next ,0 ,any ,ADD+ADD , 2
qwen3next ,0 ,any ,GATED_DELTA_NET+CPY , 1
qwen3next ,0 ,any ,RMS_NORM+MUL , 8
qwen3tts ,0 ,any ,RMS_NORM+MUL , 9
qwen3vl ,0 ,any ,RMS_NORM+MUL , 9
qwen3vlmoe ,1 ,any ,RMS_NORM+MUL , 9
qwen4exp ,0 ,any ,ADD+ADD+ADD , 5
qwen4exp ,0 ,any ,ADD+ADD+ADD+ADD+ADD+ADD+ADD , 9
qwen4exp ,0 ,any ,GATED_DELTA_NET+CPY , 1
qwen4exp ,0 ,any ,RMS_NORM+MUL , 5
refact ,0 ,any ,RMS_NORM+MUL , 5
refact ,0 ,any ,RMS_NORM+MUL , 5
rnd1 ,0 ,any ,RMS_NORM+MUL , 9
seed_oss ,0 ,any ,RMS_NORM+MUL , 5
smallthinker ,0 ,any ,RMS_NORM+MUL , 5
smollm3 ,0 ,any ,RMS_NORM+MUL , 5
stablelm ,0 ,any ,NORM+MUL , 4
stablelm ,0 ,any ,NORM+MUL+ADD , 5
starcoder ,0 ,any ,NORM+MUL+ADD , 5
starcoder2 ,0 ,any ,NORM+MUL+ADD , 5
talkie ,0 ,any ,ADD+ADD , 2
xverse ,0 ,any ,RMS_NORM+MUL , 5
1 # test-fusion baseline for device MTL
2 # arch ,moe ,mode ,label , count
3 arcee ,0 ,prefill ,RMS_NORM+MUL , 5 arcee ,0 ,any ,RMS_NORM+MUL , 5
4 arcee ,0 ,decode ,RMS_NORM+MUL , 80 arctic ,0 ,any ,RMS_NORM+MUL , 7
5 arctic ,0 ,prefill ,RMS_NORM+MUL , 7 baichuan ,0 ,any ,RMS_NORM+MUL , 5
6 arctic ,0 ,decode ,RMS_NORM+MUL , 112 bailingmoe ,1 ,any ,ADD+ADD , 2
7 baichuan ,0 ,prefill ,RMS_NORM+MUL , 5 bailingmoe ,1 ,any ,RMS_NORM+MUL , 5
8 baichuan ,0 ,decode ,RMS_NORM+MUL , 80 bailingmoe2 ,1 ,any ,ADD+ADD , 1
9 bailingmoe ,1 ,prefill ,RMS_NORM+MUL , 5 bailingmoe2 ,1 ,any ,RMS_NORM+MUL , 9
10 bailingmoe ,1 ,prefill ,ADD+ADD , 2 bailingmoe3 ,1 ,any ,ADD+ADD , 1
11 bailingmoe ,1 ,decode ,RMS_NORM+MUL , 80 bailingmoe3 ,1 ,any ,GATED_DELTA_NET+CPY , 1
12 bailingmoe ,1 ,decode ,ADD+ADD , 32 bailingmoe3 ,1 ,any ,RMS_NORM+MUL , 8
13 bailingmoe2 ,1 ,prefill ,RMS_NORM+MUL , 9 bloom ,0 ,any ,NORM+MUL+ADD , 6
14 bailingmoe2 ,1 ,prefill ,ADD+ADD , 1 chatglm ,0 ,any ,RMS_NORM+MUL , 5
15 bailingmoe2 ,1 ,decode ,RMS_NORM+MUL , 144 codeshell ,0 ,any ,NORM+MUL+ADD , 5
16 bailingmoe2 ,1 ,decode ,ADD+ADD , 16 cogvlm ,0 ,any ,RMS_NORM+MUL , 5
17 bailingmoe3 ,1 ,prefill ,RMS_NORM+MUL , 8 command-r ,0 ,any ,NORM+MUL , 3
18 bailingmoe3 ,1 ,prefill ,ADD+ADD , 1 dbrx ,0 ,any ,NORM+MUL , 5
19 bailingmoe3 ,1 ,prefill ,GATED_DELTA_NET+CPY , 1 deci ,0 ,any ,RMS_NORM+MUL , 5
20 bailingmoe3 ,1 ,decode ,RMS_NORM+MUL , 128 deepseek ,0 ,any ,ADD+ADD , 1
21 bailingmoe3 ,1 ,decode ,ADD+ADD , 16 deepseek ,0 ,any ,RMS_NORM+MUL , 5
22 bailingmoe3 ,1 ,decode ,GATED_DELTA_NET+CPY , 16 deepseek2 ,0 ,any ,ADD+ADD , 1
23 bloom ,0 ,prefill ,NORM+MUL+ADD , 6 deepseek2 ,0 ,any ,RMS_NORM+MUL , 9
24 bloom ,0 ,decode ,NORM+MUL+ADD , 96 deepseek32 ,0 ,any ,ADD+ADD , 1
25 chatglm ,0 ,prefill ,RMS_NORM+MUL , 5 deepseek32 ,0 ,any ,NORM+MUL+ADD , 2
26 chatglm ,0 ,decode ,RMS_NORM+MUL , 80 deepseek32 ,0 ,any ,RMS_NORM+MUL , 9
27 codeshell ,0 ,prefill ,NORM+MUL+ADD , 5 deepseek4 ,0 ,any ,RMS_NORM+MUL , 20
28 codeshell ,0 ,decode ,NORM+MUL+ADD , 80 dots1 ,0 ,any ,ADD+ADD , 1
29 cogvlm ,0 ,prefill ,RMS_NORM+MUL , 5 dots1 ,0 ,any ,RMS_NORM+MUL , 9
30 cogvlm ,0 ,decode ,RMS_NORM+MUL , 80 dream ,0 ,any ,RMS_NORM+MUL , 5
31 command-r ,0 ,prefill ,NORM+MUL , 3 ernie4_5-moe ,1 ,any ,ADD+ADD , 1
32 command-r ,0 ,decode ,NORM+MUL , 48 ernie4_5-moe ,1 ,any ,RMS_NORM+MUL , 5
33 dbrx ,0 ,prefill ,NORM+MUL , 5 ernie4_5 ,0 ,any ,RMS_NORM+MUL , 5
34 dbrx ,0 ,decode ,NORM+MUL , 80 exaone ,0 ,any ,RMS_NORM+MUL , 5
35 deci ,0 ,prefill ,RMS_NORM+MUL , 5 exaone4 ,0 ,any ,RMS_NORM+MUL , 5
36 deci ,0 ,decode ,RMS_NORM+MUL , 80 exaone4 ,0 ,any ,RMS_NORM+MUL+ADD , 4
37 deepseek ,0 ,prefill ,RMS_NORM+MUL , 5 falcon ,0 ,any ,ADD+ADD , 2
38 deepseek ,0 ,prefill ,ADD+ADD , 1 falcon ,0 ,any ,NORM+MUL+ADD , 5
39 deepseek ,0 ,decode ,RMS_NORM+MUL , 80 falcon-h1 ,0 ,any ,ADD+ADD , 2
40 deepseek ,0 ,decode ,ADD+ADD , 16 falcon-h1 ,0 ,any ,RMS_NORM+MUL , 9
41 deepseek2 ,0 ,prefill ,RMS_NORM+MUL , 9 gemma ,0 ,any ,RMS_NORM+MUL , 5
42 deepseek2 ,0 ,prefill ,ADD+ADD , 1 gemma2 ,0 ,any ,RMS_NORM+MUL , 5
43 deepseek2 ,0 ,decode ,RMS_NORM+MUL , 144 gemma2 ,0 ,any ,RMS_NORM+MUL+ADD , 4
44 deepseek2 ,0 ,decode ,ADD+ADD , 16 glm-dsa ,0 ,any ,ADD+ADD , 1
45 deepseek32 ,0 ,prefill ,NORM+MUL+ADD , 2 glm-dsa ,0 ,any ,NORM+MUL+ADD , 2
46 deepseek32 ,0 ,prefill ,RMS_NORM+MUL , 9 glm-dsa ,0 ,any ,RMS_NORM+MUL , 9
47 deepseek32 ,0 ,prefill ,ADD+ADD , 1 glm4 ,0 ,any ,RMS_NORM+MUL , 5
48 deepseek32 ,0 ,decode ,NORM+MUL+ADD , 32 glm4 ,0 ,any ,RMS_NORM+MUL+ADD , 4
49 deepseek32 ,0 ,decode ,RMS_NORM+MUL , 144 glm4moe ,1 ,any ,ADD+ADD , 1
50 deepseek32 ,0 ,decode ,ADD+ADD , 16 glm4moe ,1 ,any ,RMS_NORM+MUL , 9
51 deepseek4 ,0 ,prefill ,RMS_NORM+MUL , 20 gpt-oss ,0 ,any ,RMS_NORM+MUL , 5
52 deepseek4 ,0 ,decode ,RMS_NORM+MUL , 320 gpt2 ,0 ,any ,NORM+MUL+ADD , 5
53 dots1 ,0 ,prefill ,RMS_NORM+MUL , 9 gptneox ,0 ,any ,NORM+MUL+ADD , 5
54 dots1 ,0 ,prefill ,ADD+ADD , 1 granite ,0 ,any ,RMS_NORM+MUL , 5
55 dots1 ,0 ,decode ,RMS_NORM+MUL , 144 granite ,0 ,any ,RMS_NORM+MUL , 5
56 dots1 ,0 ,decode ,ADD+ADD , 16 granitehybrid ,0 ,any ,RMS_NORM+MUL , 6
57 dream ,0 ,prefill ,RMS_NORM+MUL , 5 granitemoe ,1 ,any ,RMS_NORM+MUL , 5
58 dream ,0 ,decode ,RMS_NORM+MUL , 80 granitemoe ,1 ,any ,RMS_NORM+MUL , 5
59 ernie4_5-moe ,1 ,prefill ,RMS_NORM+MUL , 5 grok ,0 ,any ,RMS_NORM+MUL , 5
60 ernie4_5-moe ,1 ,prefill ,ADD+ADD , 1 grok ,0 ,any ,RMS_NORM+MUL+ADD , 4
61 ernie4_5-moe ,1 ,decode ,RMS_NORM+MUL , 80 grovemoe ,1 ,any ,ADD+ADD , 2
62 ernie4_5-moe ,1 ,decode ,ADD+ADD , 16 grovemoe ,1 ,any ,RMS_NORM+MUL , 9
63 ernie4_5 ,0 ,prefill ,RMS_NORM+MUL , 5 hunyuan-dense ,0 ,any ,RMS_NORM+MUL , 9
64 ernie4_5 ,0 ,decode ,RMS_NORM+MUL , 80 hunyuan-moe ,1 ,any ,ADD+ADD , 2
65 exaone ,0 ,prefill ,RMS_NORM+MUL , 5 hunyuan-moe ,1 ,any ,RMS_NORM+MUL , 9
66 exaone ,0 ,decode ,RMS_NORM+MUL , 80 hunyuan_vl ,0 ,any ,RMS_NORM+MUL , 9
67 exaone4 ,0 ,prefill ,RMS_NORM+MUL , 5 hy_v3 ,0 ,any ,ADD+ADD , 2
68 exaone4 ,0 ,prefill ,RMS_NORM+MUL+ADD , 4 hy_v3 ,0 ,any ,RMS_NORM+MUL , 9
69 exaone4 ,0 ,decode ,RMS_NORM+MUL , 80 internlm2 ,0 ,any ,RMS_NORM+MUL , 5
70 exaone4 ,0 ,decode ,RMS_NORM+MUL+ADD , 64 jais ,0 ,any ,NORM+MUL+ADD , 5
71 falcon ,0 ,prefill ,NORM+MUL+ADD , 5 jais2 ,0 ,any ,NORM+MUL+ADD , 5
72 falcon ,0 ,prefill ,ADD+ADD , 2 jamba ,0 ,any ,RMS_NORM+MUL , 8
73 falcon ,0 ,decode ,NORM+MUL+ADD , 80 kimi-k3 ,0 ,any ,GATED_DELTA_NET+CPY , 1
74 falcon ,0 ,decode ,ADD+ADD , 32 kimi-k3 ,0 ,any ,RMS_NORM+MUL , 17
75 falcon-h1 ,0 ,prefill ,RMS_NORM+MUL , 9 kimi-linear ,0 ,any ,ADD+ADD , 1
76 falcon-h1 ,0 ,prefill ,ADD+ADD , 2 kimi-linear ,0 ,any ,GATED_DELTA_NET+CPY , 1
77 falcon-h1 ,0 ,decode ,RMS_NORM+MUL , 144 kimi-linear ,0 ,any ,RMS_NORM+MUL , 7
78 falcon-h1 ,0 ,decode ,ADD+ADD , 32 lfm2 ,0 ,any ,RMS_NORM+MUL , 7
79 gemma ,0 ,prefill ,RMS_NORM+MUL , 5 lfm2moe ,1 ,any ,RMS_NORM+MUL , 7
80 gemma ,0 ,decode ,RMS_NORM+MUL , 80 llada ,0 ,any ,RMS_NORM+MUL , 5
81 gemma2 ,0 ,prefill ,RMS_NORM+MUL , 5 llada-moe ,1 ,any ,RMS_NORM+MUL , 9
82 gemma2 ,0 ,prefill ,RMS_NORM+MUL+ADD , 4 llama ,0 ,any ,RMS_NORM+MUL , 5
83 gemma2 ,0 ,decode ,RMS_NORM+MUL , 80 llama ,0 ,any ,RMS_NORM+MUL , 5
84 gemma2 ,0 ,decode ,RMS_NORM+MUL+ADD , 64 llama4 ,0 ,any ,ADD+ADD , 2
85 glm-dsa ,0 ,prefill ,NORM+MUL+ADD , 2 llama4 ,0 ,any ,RMS_NORM+MUL , 9
86 glm-dsa ,0 ,prefill ,RMS_NORM+MUL , 9 maincoder ,0 ,any ,RMS_NORM+MUL , 9
87 glm-dsa ,0 ,prefill ,ADD+ADD , 1 mamba ,0 ,any ,RMS_NORM+MUL , 3
88 glm-dsa ,0 ,decode ,NORM+MUL+ADD , 32 mamba2 ,0 ,any ,RMS_NORM+MUL , 5
89 glm-dsa ,0 ,decode ,RMS_NORM+MUL , 144 minicpm ,0 ,any ,RMS_NORM+MUL , 5
90 glm-dsa ,0 ,decode ,ADD+ADD , 16 minicpm ,0 ,any ,RMS_NORM+MUL , 5
91 glm4 ,0 ,prefill ,RMS_NORM+MUL , 5 minicpm3 ,0 ,any ,RMS_NORM+MUL , 9
92 glm4 ,0 ,prefill ,RMS_NORM+MUL+ADD , 4 minimax-01 ,0 ,any ,RMS_NORM+MUL , 6
93 glm4 ,0 ,decode ,RMS_NORM+MUL , 80 minimax-m2 ,0 ,any ,RMS_NORM+MUL , 9
94 glm4 ,0 ,decode ,RMS_NORM+MUL+ADD , 64 minimax-m3 ,0 ,any ,ADD+ADD , 1
95 glm4moe ,1 ,prefill ,RMS_NORM+MUL , 9 minimax-m3 ,0 ,any ,RMS_NORM+MUL , 11
96 glm4moe ,1 ,prefill ,ADD+ADD , 1 mistral3 ,0 ,any ,RMS_NORM+MUL , 5
97 glm4moe ,1 ,decode ,RMS_NORM+MUL , 144 mistral3 ,0 ,any ,RMS_NORM+MUL , 5
98 glm4moe ,1 ,decode ,ADD+ADD , 16 mistral4 ,0 ,any ,ADD+ADD , 1
99 gpt-oss ,0 ,prefill ,RMS_NORM+MUL , 5 mistral4 ,0 ,any ,RMS_NORM+MUL , 9
100 gpt-oss ,0 ,decode ,RMS_NORM+MUL , 80 mpt ,0 ,any ,NORM+MUL+ADD , 5
101 gpt2 ,0 ,prefill ,NORM+MUL+ADD , 5 nanbeige ,0 ,any ,RMS_NORM+MUL , 5
102 gpt2 ,0 ,decode ,NORM+MUL+ADD , 80 nemotron ,0 ,any ,NORM+MUL+ADD , 5
103 gptneox ,0 ,prefill ,NORM+MUL+ADD , 5 nemotron_h ,0 ,any ,RMS_NORM+MUL , 5
104 gptneox ,0 ,decode ,NORM+MUL+ADD , 80 nemotron_h_moe ,1 ,any ,RMS_NORM+MUL , 5
105 granite ,0 ,prefill ,RMS_NORM+MUL , 5 olmoe ,1 ,any ,RMS_NORM+MUL , 9
106 granite ,0 ,decode ,RMS_NORM+MUL , 80 openelm ,0 ,any ,RMS_NORM+MUL , 9
107 granite ,0 ,prefill ,RMS_NORM+MUL , 5 orion ,0 ,any ,NORM+MUL+ADD , 5
108 granite ,0 ,decode ,RMS_NORM+MUL , 80 paddleocr ,0 ,any ,RMS_NORM+MUL , 5
109 granitehybrid ,0 ,prefill ,RMS_NORM+MUL , 6 pangu-embedded ,0 ,any ,RMS_NORM+MUL , 5
110 granitehybrid ,0 ,decode ,RMS_NORM+MUL , 96 phi2 ,0 ,any ,ADD+ADD , 2
111 granitemoe ,1 ,prefill ,RMS_NORM+MUL , 5 phi2 ,0 ,any ,NORM+MUL+ADD , 3
112 granitemoe ,1 ,decode ,RMS_NORM+MUL , 80 phi3 ,0 ,any ,RMS_NORM+MUL , 5
113 granitemoe ,1 ,prefill ,RMS_NORM+MUL , 5 phimoe ,1 ,any ,RMS_NORM+MUL+ADD , 5
114 granitemoe ,1 ,decode ,RMS_NORM+MUL , 80 plamo ,0 ,any ,ADD+ADD , 2
115 grok ,0 ,prefill ,RMS_NORM+MUL , 5 plamo ,0 ,any ,RMS_NORM+MUL , 3
116 grok ,0 ,prefill ,RMS_NORM+MUL+ADD , 4 plamo2 ,0 ,any ,RMS_NORM+MUL , 11
117 grok ,0 ,decode ,RMS_NORM+MUL , 80 plamo2 ,0 ,any ,RMS_NORM+MUL+ADD , 3
118 grok ,0 ,decode ,RMS_NORM+MUL+ADD , 64 pockettts ,0 ,any ,NORM+MUL+ADD , 5
119 grovemoe ,1 ,prefill ,RMS_NORM+MUL , 9 qwen ,0 ,any ,RMS_NORM+MUL , 5
120 grovemoe ,1 ,prefill ,ADD+ADD , 2 qwen2 ,0 ,any ,RMS_NORM+MUL , 5
121 grovemoe ,1 ,decode ,RMS_NORM+MUL , 144 qwen2moe ,1 ,any ,ADD+ADD , 2
122 grovemoe ,1 ,decode ,ADD+ADD , 32 qwen2moe ,1 ,any ,RMS_NORM+MUL , 5
123 hunyuan-dense ,0 ,prefill ,RMS_NORM+MUL , 9 qwen2vl ,0 ,any ,RMS_NORM+MUL , 5
124 hunyuan-dense ,0 ,decode ,RMS_NORM+MUL , 144 qwen3 ,0 ,any ,RMS_NORM+MUL , 9
125 hunyuan-moe ,1 ,prefill ,RMS_NORM+MUL , 9 qwen35 ,0 ,any ,GATED_DELTA_NET+CPY , 1
126 hunyuan-moe ,1 ,prefill ,ADD+ADD , 2 qwen35 ,0 ,any ,RMS_NORM+MUL , 8
127 hunyuan-moe ,1 ,decode ,RMS_NORM+MUL , 144 qwen35moe ,1 ,any ,ADD+ADD , 2
128 hunyuan-moe ,1 ,decode ,ADD+ADD , 32 qwen35moe ,1 ,any ,GATED_DELTA_NET+CPY , 1
129 hunyuan_vl ,0 ,prefill ,RMS_NORM+MUL , 9 qwen35moe ,1 ,any ,RMS_NORM+MUL , 8
130 hunyuan_vl ,0 ,decode ,RMS_NORM+MUL , 144 qwen3moe ,1 ,any ,RMS_NORM+MUL , 9
131 hy_v3 ,0 ,prefill ,RMS_NORM+MUL , 9 qwen3next ,0 ,any ,ADD+ADD , 2
132 hy_v3 ,0 ,prefill ,ADD+ADD , 2 qwen3next ,0 ,any ,GATED_DELTA_NET+CPY , 1
133 hy_v3 ,0 ,decode ,RMS_NORM+MUL , 144 qwen3next ,0 ,any ,RMS_NORM+MUL , 8
134 hy_v3 ,0 ,decode ,ADD+ADD , 32 qwen3tts ,0 ,any ,RMS_NORM+MUL , 9
135 internlm2 ,0 ,prefill ,RMS_NORM+MUL , 5 qwen3vl ,0 ,any ,RMS_NORM+MUL , 9
136 internlm2 ,0 ,decode ,RMS_NORM+MUL , 80 qwen3vlmoe ,1 ,any ,RMS_NORM+MUL , 9
137 jais ,0 ,prefill ,NORM+MUL+ADD , 5 qwen4exp ,0 ,any ,ADD+ADD+ADD , 5
138 jais ,0 ,decode ,NORM+MUL+ADD , 80 qwen4exp ,0 ,any ,ADD+ADD+ADD+ADD+ADD+ADD+ADD , 9
139 jais2 ,0 ,prefill ,NORM+MUL+ADD , 5 qwen4exp ,0 ,any ,GATED_DELTA_NET+CPY , 1
140 jais2 ,0 ,decode ,NORM+MUL+ADD , 80 qwen4exp ,0 ,any ,RMS_NORM+MUL , 5
141 jamba ,0 ,prefill ,RMS_NORM+MUL , 8 refact ,0 ,any ,RMS_NORM+MUL , 5
142 jamba ,0 ,decode ,RMS_NORM+MUL , 128 refact ,0 ,any ,RMS_NORM+MUL , 5
143 kimi-k3 ,0 ,prefill ,RMS_NORM+MUL , 17 rnd1 ,0 ,any ,RMS_NORM+MUL , 9
144 kimi-k3 ,0 ,prefill ,GATED_DELTA_NET+CPY , 1 seed_oss ,0 ,any ,RMS_NORM+MUL , 5
145 kimi-k3 ,0 ,decode ,RMS_NORM+MUL , 272 smallthinker ,0 ,any ,RMS_NORM+MUL , 5
146 kimi-k3 ,0 ,decode ,GATED_DELTA_NET+CPY , 16 smollm3 ,0 ,any ,RMS_NORM+MUL , 5
147 kimi-linear ,0 ,prefill ,RMS_NORM+MUL , 7 stablelm ,0 ,any ,NORM+MUL , 4
148 kimi-linear ,0 ,prefill ,ADD+ADD , 1 stablelm ,0 ,any ,NORM+MUL+ADD , 5
149 kimi-linear ,0 ,prefill ,GATED_DELTA_NET+CPY , 1 starcoder ,0 ,any ,NORM+MUL+ADD , 5
150 kimi-linear ,0 ,decode ,RMS_NORM+MUL , 112 starcoder2 ,0 ,any ,NORM+MUL+ADD , 5
151 kimi-linear ,0 ,decode ,ADD+ADD , 16 talkie ,0 ,any ,ADD+ADD , 2
152 kimi-linear ,0 ,decode ,GATED_DELTA_NET+CPY , 16 xverse ,0 ,any ,RMS_NORM+MUL , 5
lfm2 ,0 ,prefill ,RMS_NORM+MUL , 7
lfm2 ,0 ,decode ,RMS_NORM+MUL , 112
lfm2moe ,1 ,prefill ,RMS_NORM+MUL , 7
lfm2moe ,1 ,decode ,RMS_NORM+MUL , 112
llada ,0 ,prefill ,RMS_NORM+MUL , 5
llada ,0 ,decode ,RMS_NORM+MUL , 80
llada-moe ,1 ,prefill ,RMS_NORM+MUL , 9
llada-moe ,1 ,decode ,RMS_NORM+MUL , 144
llama ,0 ,prefill ,RMS_NORM+MUL , 5
llama ,0 ,decode ,RMS_NORM+MUL , 80
llama ,0 ,prefill ,RMS_NORM+MUL , 5
llama ,0 ,decode ,RMS_NORM+MUL , 80
llama4 ,0 ,prefill ,RMS_NORM+MUL , 9
llama4 ,0 ,prefill ,ADD+ADD , 2
llama4 ,0 ,decode ,RMS_NORM+MUL , 144
llama4 ,0 ,decode ,ADD+ADD , 32
maincoder ,0 ,prefill ,RMS_NORM+MUL , 9
maincoder ,0 ,decode ,RMS_NORM+MUL , 144
mamba ,0 ,prefill ,RMS_NORM+MUL , 3
mamba ,0 ,decode ,RMS_NORM+MUL , 48
mamba2 ,0 ,prefill ,RMS_NORM+MUL , 5
mamba2 ,0 ,decode ,RMS_NORM+MUL , 80
minicpm ,0 ,prefill ,RMS_NORM+MUL , 5
minicpm ,0 ,decode ,RMS_NORM+MUL , 80
minicpm ,0 ,prefill ,RMS_NORM+MUL , 5
minicpm ,0 ,decode ,RMS_NORM+MUL , 80
minicpm3 ,0 ,prefill ,RMS_NORM+MUL , 9
minicpm3 ,0 ,decode ,RMS_NORM+MUL , 144
minimax-01 ,0 ,prefill ,RMS_NORM+MUL , 6
minimax-01 ,0 ,decode ,RMS_NORM+MUL , 96
minimax-m2 ,0 ,prefill ,RMS_NORM+MUL , 9
minimax-m2 ,0 ,decode ,RMS_NORM+MUL , 144
minimax-m3 ,0 ,prefill ,RMS_NORM+MUL , 11
minimax-m3 ,0 ,prefill ,ADD+ADD , 1
minimax-m3 ,0 ,decode ,RMS_NORM+MUL , 176
minimax-m3 ,0 ,decode ,ADD+ADD , 16
mistral3 ,0 ,prefill ,RMS_NORM+MUL , 5
mistral3 ,0 ,decode ,RMS_NORM+MUL , 80
mistral3 ,0 ,prefill ,RMS_NORM+MUL , 5
mistral3 ,0 ,decode ,RMS_NORM+MUL , 80
mistral4 ,0 ,prefill ,RMS_NORM+MUL , 9
mistral4 ,0 ,prefill ,ADD+ADD , 1
mistral4 ,0 ,decode ,RMS_NORM+MUL , 144
mistral4 ,0 ,decode ,ADD+ADD , 16
mpt ,0 ,prefill ,NORM+MUL+ADD , 5
mpt ,0 ,decode ,NORM+MUL+ADD , 80
nanbeige ,0 ,prefill ,RMS_NORM+MUL , 5
nanbeige ,0 ,decode ,RMS_NORM+MUL , 80
nemotron ,0 ,prefill ,NORM+MUL+ADD , 5
nemotron ,0 ,decode ,NORM+MUL+ADD , 80
nemotron_h ,0 ,prefill ,RMS_NORM+MUL , 5
nemotron_h ,0 ,decode ,RMS_NORM+MUL , 80
nemotron_h_moe ,1 ,prefill ,RMS_NORM+MUL , 5
nemotron_h_moe ,1 ,decode ,RMS_NORM+MUL , 80
olmoe ,1 ,prefill ,RMS_NORM+MUL , 9
olmoe ,1 ,decode ,RMS_NORM+MUL , 144
openelm ,0 ,prefill ,RMS_NORM+MUL , 9
openelm ,0 ,decode ,RMS_NORM+MUL , 144
orion ,0 ,prefill ,NORM+MUL+ADD , 5
orion ,0 ,decode ,NORM+MUL+ADD , 80
paddleocr ,0 ,prefill ,RMS_NORM+MUL , 5
paddleocr ,0 ,decode ,RMS_NORM+MUL , 80
pangu-embedded ,0 ,prefill ,RMS_NORM+MUL , 5
pangu-embedded ,0 ,decode ,RMS_NORM+MUL , 80
phi2 ,0 ,prefill ,NORM+MUL+ADD , 3
phi2 ,0 ,prefill ,ADD+ADD , 2
phi2 ,0 ,decode ,NORM+MUL+ADD , 48
phi2 ,0 ,decode ,ADD+ADD , 32
phi3 ,0 ,prefill ,RMS_NORM+MUL , 5
phi3 ,0 ,decode ,RMS_NORM+MUL , 80
phimoe ,1 ,prefill ,RMS_NORM+MUL+ADD , 5
phimoe ,1 ,decode ,RMS_NORM+MUL+ADD , 80
plamo ,0 ,prefill ,RMS_NORM+MUL , 3
plamo ,0 ,prefill ,ADD+ADD , 2
plamo ,0 ,decode ,RMS_NORM+MUL , 48
plamo ,0 ,decode ,ADD+ADD , 32
plamo2 ,0 ,prefill ,RMS_NORM+MUL , 11
plamo2 ,0 ,prefill ,RMS_NORM+MUL+ADD , 3
plamo2 ,0 ,decode ,RMS_NORM+MUL , 176
plamo2 ,0 ,decode ,RMS_NORM+MUL+ADD , 48
pockettts ,0 ,prefill ,NORM+MUL+ADD , 5
pockettts ,0 ,decode ,NORM+MUL+ADD , 80
qwen ,0 ,prefill ,RMS_NORM+MUL , 5
qwen ,0 ,decode ,RMS_NORM+MUL , 80
qwen2 ,0 ,prefill ,RMS_NORM+MUL , 5
qwen2 ,0 ,decode ,RMS_NORM+MUL , 80
qwen2moe ,1 ,prefill ,RMS_NORM+MUL , 5
qwen2moe ,1 ,prefill ,ADD+ADD , 2
qwen2moe ,1 ,decode ,RMS_NORM+MUL , 80
qwen2moe ,1 ,decode ,ADD+ADD , 32
qwen2vl ,0 ,prefill ,RMS_NORM+MUL , 5
qwen2vl ,0 ,decode ,RMS_NORM+MUL , 80
qwen3 ,0 ,prefill ,RMS_NORM+MUL , 9
qwen3 ,0 ,decode ,RMS_NORM+MUL , 144
qwen35 ,0 ,prefill ,RMS_NORM+MUL , 8
qwen35 ,0 ,prefill ,GATED_DELTA_NET+CPY , 1
qwen35 ,0 ,decode ,RMS_NORM+MUL , 128
qwen35 ,0 ,decode ,GATED_DELTA_NET+CPY , 16
qwen35moe ,1 ,prefill ,RMS_NORM+MUL , 8
qwen35moe ,1 ,prefill ,ADD+ADD , 2
qwen35moe ,1 ,prefill ,GATED_DELTA_NET+CPY , 1
qwen35moe ,1 ,decode ,RMS_NORM+MUL , 128
qwen35moe ,1 ,decode ,ADD+ADD , 32
qwen35moe ,1 ,decode ,GATED_DELTA_NET+CPY , 16
qwen3moe ,1 ,prefill ,RMS_NORM+MUL , 9
qwen3moe ,1 ,decode ,RMS_NORM+MUL , 144
qwen3next ,0 ,prefill ,RMS_NORM+MUL , 8
qwen3next ,0 ,prefill ,ADD+ADD , 2
qwen3next ,0 ,prefill ,GATED_DELTA_NET+CPY , 1
qwen3next ,0 ,decode ,RMS_NORM+MUL , 128
qwen3next ,0 ,decode ,ADD+ADD , 32
qwen3next ,0 ,decode ,GATED_DELTA_NET+CPY , 16
qwen3tts ,0 ,prefill ,RMS_NORM+MUL , 9
qwen3tts ,0 ,decode ,RMS_NORM+MUL , 144
qwen3vl ,0 ,prefill ,RMS_NORM+MUL , 9
qwen3vl ,0 ,decode ,RMS_NORM+MUL , 144
qwen3vlmoe ,1 ,prefill ,RMS_NORM+MUL , 9
qwen3vlmoe ,1 ,decode ,RMS_NORM+MUL , 144
qwen4exp ,0 ,prefill ,RMS_NORM+MUL , 5
qwen4exp ,0 ,prefill ,ADD+ADD+ADD , 5
qwen4exp ,0 ,prefill ,ADD+ADD+ADD+ADD+ADD+ADD+ADD , 9
qwen4exp ,0 ,prefill ,GATED_DELTA_NET+CPY , 1
qwen4exp ,0 ,decode ,RMS_NORM+MUL , 80
qwen4exp ,0 ,decode ,ADD+ADD+ADD , 80
qwen4exp ,0 ,decode ,ADD+ADD+ADD+ADD+ADD+ADD+ADD , 144
qwen4exp ,0 ,decode ,GATED_DELTA_NET+CPY , 16
refact ,0 ,prefill ,RMS_NORM+MUL , 5
refact ,0 ,decode ,RMS_NORM+MUL , 80
refact ,0 ,prefill ,RMS_NORM+MUL , 5
refact ,0 ,decode ,RMS_NORM+MUL , 80
rnd1 ,0 ,prefill ,RMS_NORM+MUL , 9
rnd1 ,0 ,decode ,RMS_NORM+MUL , 144
seed_oss ,0 ,prefill ,RMS_NORM+MUL , 5
seed_oss ,0 ,decode ,RMS_NORM+MUL , 80
smallthinker ,0 ,prefill ,RMS_NORM+MUL , 5
smallthinker ,0 ,decode ,RMS_NORM+MUL , 80
smollm3 ,0 ,prefill ,RMS_NORM+MUL , 5
smollm3 ,0 ,decode ,RMS_NORM+MUL , 80
stablelm ,0 ,prefill ,NORM+MUL , 4
stablelm ,0 ,prefill ,NORM+MUL+ADD , 5
stablelm ,0 ,decode ,NORM+MUL , 64
stablelm ,0 ,decode ,NORM+MUL+ADD , 80
starcoder ,0 ,prefill ,NORM+MUL+ADD , 5
starcoder ,0 ,decode ,NORM+MUL+ADD , 80
starcoder2 ,0 ,prefill ,NORM+MUL+ADD , 5
starcoder2 ,0 ,decode ,NORM+MUL+ADD , 80
talkie ,0 ,prefill ,ADD+ADD , 2
talkie ,0 ,decode ,ADD+ADD , 32
xverse ,0 ,prefill ,RMS_NORM+MUL , 5
xverse ,0 ,decode ,RMS_NORM+MUL , 80
+73 -16
View File
@@ -2,7 +2,8 @@
//
// for every dummy model generated by test-llama-archs, the tool runs the model on a single
// device (single-threaded encoding, n_cb = 0) with fusion enabled and disabled, and reports:
// - the per-fusion-type counters for each mode (prefill / decode)
// - the per-fusion-type counters for each mode (prefill / decode, merged into "any" when the
// per-graph counts match)
// - the NMSE between the fused and unfused logits
// - the NMSE between the device and a CPU reference
//
@@ -23,6 +24,7 @@
#include "gguf.h"
#include <algorithm>
#include <array>
#include <cmath>
#include <cstring>
#include <filesystem>
@@ -164,7 +166,7 @@ static std::vector<float> decode_prefill(llama_model * model, llama_context * lc
}
// decode one token at a time; returns the logits of the last token of each step
static std::vector<float> decode_token_by_token(llama_model * model, llama_context * lctx, const std::vector<llama_token> & tokens) {
static std::vector<float> decode_gen(llama_model * model, llama_context * lctx, const std::vector<llama_token> & tokens) {
const uint32_t n_vocab = llama_vocab_n_tokens(llama_model_get_vocab(model));
llama_batch batch = llama_batch_init(1, 0, 1);
std::vector<float> ret;
@@ -197,7 +199,7 @@ struct fusion_row {
std::string arch;
bool moe;
std::string mode;
const char * label;
std::string label;
uint64_t count_fused;
uint64_t count_unfused;
uint64_t expected;
@@ -381,13 +383,28 @@ int main(int argc, char ** argv) {
std::string name;
std::vector<float> (*decode)(llama_model *, llama_context *, const std::vector<llama_token> &);
int n_tokens;
int n_graphs; // graph runs per mode (prefill=1, decode=16)
};
const mode_cfg modes[] = {
{ "prefill", decode_prefill, 32 },
{ "decode", decode_token_by_token, 16 },
{ "prefill", decode_prefill, 32, 1 },
{ "decode", decode_gen, 16, 16 },
};
for (const auto & mode : modes) {
// per-label, per-mode data for this model; prefill and decode are merged into a single
// "any" row when their per-graph counts match
struct mode_data {
bool present;
uint64_t count_fused; // per graph
uint64_t count_unfused; // per graph
double nmse_fus;
double nmse_dev;
bool skip_nmse;
bool ok_nmse;
};
std::map<std::string, std::array<mode_data, 2>> mdata;
for (int mi = 0; mi < 2; mi++) {
const mode_cfg & mode = modes[mi];
const auto tokens = get_tokens(mode.n_tokens, n_vocab, seed);
// CPU reference for this mode (fresh context, fresh state)
@@ -439,20 +456,22 @@ int main(int argc, char ** argv) {
// TODO: run in Debug build to get an assert in `ggml-alloc.c` and fix it
const bool dev_broken = !std::isnan(nmse_dev) && nmse_dev > 1e-4;
// build the per-label rows
if (has_counts) {
for (int i = 0; i < (int) labels.size(); i++) {
if (counts_fused[i] == 0 && counts_unfused[i] == 0) {
const uint64_t fused = counts_fused[i] / mode.n_graphs;
const uint64_t unfused = counts_unfused[i] / mode.n_graphs;
if (fused == 0 && unfused == 0) {
continue;
}
const std::string key = arch + "|" + (moe ? "1" : "0") + "|" + mode.name + "|" + labels[i];
const uint64_t expected = baseline.count(key) ? baseline.at(key) : 0;
const bool skip_nmse = dev_broken || std::isnan(nmse_fus);
rows.push_back({ arch, moe, mode.name, labels[i], counts_fused[i], counts_unfused[i],
expected, nmse_fus, nmse_dev,
!check_path.empty() ? (counts_fused[i] == expected) : true,
!skip_nmse && nmse_fus <= 1e-4,
skip_nmse });
auto & d = mdata[labels[i]][mi];
d.present = true;
d.count_fused = fused;
d.count_unfused = unfused;
d.nmse_fus = nmse_fus;
d.nmse_dev = nmse_dev;
d.skip_nmse = skip_nmse;
d.ok_nmse = !skip_nmse && nmse_fus <= 1e-4;
}
} else {
const bool skip_nmse = dev_broken || std::isnan(nmse_fus);
@@ -461,6 +480,44 @@ int main(int argc, char ** argv) {
}
}
// build the per-label rows, merging prefill and decode into "any" when the per-graph
// counts match (they always do for the deterministic fusion table)
if (has_counts) {
for (auto & kv : mdata) {
const std::string & label = kv.first;
const auto & d = kv.second;
const bool both = d[0].present && d[1].present;
const bool match = both && d[0].count_fused == d[1].count_fused;
if (match) {
// one "any" row; use the worst NMSE across the two modes
const std::string any_key = arch + "|" + (moe ? "1" : "0") + "|any|" + label;
const uint64_t expected = baseline.count(any_key) ? baseline.at(any_key) : 0;
const bool ok_count = check_path.empty() || d[0].count_fused == expected;
const bool skip_nmse = d[0].skip_nmse || d[1].skip_nmse;
const bool ok_nmse = d[0].ok_nmse && d[1].ok_nmse;
const double nmse_fus = std::max(d[0].nmse_fus, d[1].nmse_fus);
const double nmse_dev = std::max(d[0].nmse_dev, d[1].nmse_dev);
rows.push_back({ arch, moe, "any", label, d[0].count_fused, d[0].count_unfused,
expected, nmse_fus, nmse_dev, ok_count, ok_nmse, skip_nmse });
} else {
// counts differ - keep a separate row per mode
for (int mi = 0; mi < 2; mi++) {
if (!d[mi].present) {
continue;
}
const mode_data & a = d[mi];
const std::string mode_key = arch + "|" + (moe ? "1" : "0") + "|" +
modes[mi].name + "|" + label;
const uint64_t expected = baseline.count(mode_key) ? baseline.at(mode_key) : 0;
const bool ok_count = check_path.empty() || a.count_fused == expected;
rows.push_back({ arch, moe, modes[mi].name, label, a.count_fused, a.count_unfused,
expected, a.nmse_fus, a.nmse_dev, ok_count, a.ok_nmse, a.skip_nmse });
}
}
}
}
LOG_INF("%s: %-20s (%s) done\n", __func__, arch.c_str(), model_path.c_str());
}
@@ -489,7 +546,7 @@ int main(int argc, char ** argv) {
if (r.skip_nmse) { n_skip++; }
if (ok) { n_ok++; } else { n_bad++; }
LOG_INF("%-20s %-4s %-8s %-22s %7llu %7llu %7llu %10.2e %10.2e %s\n",
r.arch.c_str(), r.moe ? "moe" : "dense", r.mode.c_str(), r.label,
r.arch.c_str(), r.moe ? "moe" : "dense", r.mode.c_str(), r.label.c_str(),
(unsigned long long) r.count_fused, (unsigned long long) r.count_unfused,
(unsigned long long) r.expected, r.nmse_fus, r.nmse_dev, status);
if (!record_path.empty()) {