CPU: Runs with llama.cpp (4 threads). The main model is a GGUF (Q4_K_M for E2B, QAT Q4_0 for E4B) and the assistant is a Q4_0 GGUF.
MTP: "With MTP" opens the assistant (draft length 3). The acceptance rate is the fraction of assistant candidates accepted by the main model's verification.
Method: Greedy decoding, median of 2 runs per condition. Decode uses 81 input tokens and 1,000 generated tokens; prefill uses 64 to 2,048 input tokens and generates 1 token.
Image / audio input: One 768x768 image (100 output tokens) and a transcription of one English recording (32 output tokens). TTFT includes the encoder and excludes model opening.
CPU usage: Process CPU usage during decode, with all 8 cores fully used as 100%. The CPU runs 4 threads, so it stays around 50%.
NPU (with MTP) TTFT is 1/4.8 (image) and 1/4.8 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.95x for image input and 3.38x for audio input.
SM8475 (E2B / FP16) VLM (left) / audio input (right) TTFT breakdown: prompt setup including the encoder, and decoder prefill + first tokenSM8475 (E2B / FP16) VLM (left) / audio input (right) decode throughput
CPU usage
Input
CPU (without MTP)
CPU (with MTP)
NPU (without MTP)
NPU (with MTP)
Text
48.9%
48.3%
2.6%
4.4%
Image
48.7%
48.1%
3.7%
4.8%
Audio
48.6%
47.3%
3.6%
4.8%
SM8475 (E2B / FP16) process CPU usage during text generation decodeSM8475 (E2B / FP16) average process CPU usage during prefill (mean of 64 to 2,048-token inputs)SM8475 (E2B / FP16) process CPU usage during image (left) / audio input (right) TTFT
NPU (with MTP) TTFT is 1/2.3 (image) and 1/1.9 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.45x for image input and 2.57x for audio input.
SM7635 (E2B / Int16) VLM (left) / audio input (right) TTFT breakdown: prompt setup including the encoder, and decoder prefill + first tokenSM7635 (E2B / Int16) VLM (left) / audio input (right) decode throughput
CPU usage
Input
CPU (without MTP)
CPU (with MTP)
NPU (without MTP)
NPU (with MTP)
Text
49.0%
48.0%
2.4%
4.1%
Image
48.7%
47.7%
2.4%
4.2%
Audio
48.7%
47.0%
2.4%
4.3%
SM7635 (E2B / Int16) process CPU usage during text generation decodeSM7635 (E2B / Int16) average process CPU usage during prefill (mean of 64 to 2,048-token inputs)SM7635 (E2B / Int16) process CPU usage during image (left) / audio input (right) TTFT
NPU (with MTP) TTFT is 1/6.6 (image) and 1/4.0 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.03x for image input and 1.81x for audio input.
SM7635 (E4B / Int16) VLM (left) / audio input (right) TTFT breakdown: prompt setup including the encoder, and decoder prefill + first tokenSM7635 (E4B / Int16) VLM (left) / audio input (right) decode throughput
CPU usage
Input
CPU (without MTP)
CPU (with MTP)
NPU (without MTP)
NPU (with MTP)
Text
48.3%
46.5%
1.4%
2.0%
Image
48.5%
46.8%
1.7%
2.0%
Audio
48.1%
42.5%
2.0%
2.1%
SM7635 (E4B / Int16) process CPU usage during text generation decodeSM7635 (E4B / Int16) average process CPU usage during prefill (mean of 64 to 2,048-token inputs)SM7635 (E4B / Int16) process CPU usage during image (left) / audio input (right) TTFT
Windows
Test Conditions
OS: Windows 11 Pro on SC8380XP, and Windows 11 IoT Enterprise LTSC on QCS6490.
NPU: v1.5.1 MTP models (FP16 / W4 on SC8380XP, Int16 on QCS6490), QAIRT 2.47, context length 8192.
CPU / GPU: The CPU runs with llama.cpp (OpenMP disabled, on the 4 performance cores), with a QAT Q4_0 main model and a Q4_0 GGUF assistant. The GPU uses the llama.cpp OpenCL backend on the SC8380XP Adreno X1-45 (not measured on QCS6490).
Method: Greedy decoding, one run per configuration. Decode, prefill and acceptance rate are defined as on Android.
Image / audio input: One 768x768 image (100 output tokens) and a transcription of one English recording (33 output tokens). The encoders run on the CPU in the CPU and GPU configurations, and on the NPU in the NPU configurations.
CPU usage: Process CPU usage during decode, with all 8 cores fully used as 100%. The CPU uses only the 4 performance cores, so it stays around 50%.
Snapdragon X Plus (SC8380XP / Hexagon v73)
E2B / FP16
Decode throughput
Path
Without MTP
With MTP
MTP speedup
Acceptance
CPU
36.097 tokens/s
45.952 tokens/s
1.27x
31.1%
GPU
15.789 tokens/s
7.956 tokens/s
0.50x
39.0%
NPU
7.396 tokens/s
10.725 tokens/s
1.45x
31.2%
Decode is fastest on the CPU. On the GPU, decode became slower with MTP.
For inputs of 128 tokens or more the NPU is the fastest; for a 2,048-token input it is 3.29x the CPU (without MTP). NPU prefill is almost the same with and without MTP.
NPU TTFT is 1/13.0 (image) and 1/6.9 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.62x for image input and 2.67x for audio input.
SC8380XP (E2B / FP16) VLM (left) and audio input (right) TTFT breakdown (prompt setup including the encoder, and decoder prefill plus the first token)SC8380XP (E2B / FP16) VLM (left) and audio input (right) decode throughput
CPU usage
Input
CPU (without MTP)
CPU (with MTP)
GPU (without MTP)
GPU (with MTP)
NPU (without MTP)
NPU (with MTP)
Text
48.0%
46.1%
6.6%
1.4%
2.8%
4.9%
Image
48.5%
47.7%
6.2%
2.8%
2.9%
5.4%
Audio
49.1%
46.6%
7.4%
1.2%
2.7%
4.9%
The CPU runs on the 4 performance cores, so CPU usage stays around 50%.
SC8380XP (E2B / FP16) process CPU usage during text generation decodeSC8380XP (E2B / FP16) average process CPU usage during prefill (average over 64 to 2,048-token inputs)SC8380XP (E2B / FP16) process CPU usage during image (left) and audio input (right) TTFT
E4B / FP16
Decode throughput
Path
Without MTP
With MTP
MTP speedup
Acceptance
CPU
20.209 tokens/s
34.010 tokens/s
1.68x
43.3%
GPU
8.434 tokens/s
4.962 tokens/s
0.59x
38.2%
NPU
4.346 tokens/s
7.172 tokens/s
1.65x
33.4%
Decode is fastest on the CPU. On the GPU, decode became slower with MTP.
For inputs of 128 tokens or more the NPU is the fastest; for a 2,048-token input it is 3.20x the CPU (without MTP). NPU prefill is almost the same with and without MTP.
NPU TTFT is 1/9.7 (image) and 1/5.6 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.86x for image input and 3.05x for audio input.
SC8380XP (E4B / FP16) VLM (left) and audio input (right) TTFT breakdown (prompt setup including the encoder, and decoder prefill plus the first token)SC8380XP (E4B / FP16) VLM (left) and audio input (right) decode throughput
CPU usage
Input
CPU (without MTP)
CPU (with MTP)
GPU (without MTP)
GPU (with MTP)
NPU (without MTP)
NPU (with MTP)
Text
48.7%
48.1%
4.6%
2.1%
1.8%
3.0%
Image
49.0%
47.9%
5.4%
2.6%
1.8%
3.2%
Audio
48.9%
46.0%
5.6%
2.3%
1.7%
3.2%
The CPU runs on the 4 performance cores, so CPU usage stays around 50%.
SC8380XP (E4B / FP16) process CPU usage during text generation decodeSC8380XP (E4B / FP16) average process CPU usage during prefill (average over 64 to 2,048-token inputs)SC8380XP (E4B / FP16) process CPU usage during image (left) and audio input (right) TTFT
QCS6490 (Hexagon v68)
E2B / Int16
Decode throughput
Path
Without MTP
With MTP
MTP speedup
Acceptance
CPU
8.268 tokens/s
12.551 tokens/s
1.52x
32.4%
NPU
4.326 tokens/s
7.131 tokens/s
1.65x
36.0%
Decode is fastest on the CPU. MTP made decode 1.52x on the CPU and 1.65x on the NPU.
For inputs of 128 tokens or more the NPU is the fastest; for a 2,048-token input it is 3.96x the CPU (without MTP). NPU prefill is almost the same with and without MTP.
NPU TTFT is 1/10.2 (image) and 1/5.8 (audio) of the CPU (without MTP). With MTP, NPU decode became 1.77x for image input and 2.82x for audio input, and CPU decode became 1.82x and 3.09x.
QCS6490 (E2B / Int16) VLM (left) and audio input (right) TTFT breakdown (prompt setup including the encoder, and decoder prefill plus the first token)QCS6490 (E2B / Int16) VLM (left) and audio input (right) decode throughput
CPU usage
Input
CPU (without MTP)
CPU (with MTP)
NPU (without MTP)
NPU (with MTP)
Text
47.9%
47.9%
0.9%
1.4%
Image
47.9%
47.7%
0.9%
1.4%
Audio
47.9%
47.1%
1.0%
1.3%
The CPU runs on the 4 performance cores, so CPU usage stays around 50%.
QCS6490 (E2B / Int16) process CPU usage during text generation decodeQCS6490 (E2B / Int16) average process CPU usage during prefill (average over 64 to 2,048-token inputs)QCS6490 (E2B / Int16) process CPU usage during image (left) and audio input (right) TTFT