Glyd

Benchmarks

Measured on real GPUs, bf16 and Glyd in the same run, the 2026 models first and each earlier release's tables as measured. Every number links to the run's raw log, and every run can be repeated from the repository.

Updated Oct 5, 2026RTX 4090 · RTX 5090 · H100 SXM · H100 PCIe · A100 · A10 · A10G · RTX PRO 6000 · RTX 4080 SUPER

2026 models: the weights in vLLM

The weights as vLLM 0.30.0 gives them, Glyd against vLLM's own bf16 on the same GPU, a row a release run. Lower is smaller.

Weights, GiB
GPU, modelbf16GlydChange, %
RTX 4090, Qwen3.5-9Bv0.29.0, 2026-10-05log17.6612.68−28
RTX 5090, Qwen3.5-9Bv0.29.0, 2026-10-05log17.6613.89−21
H100 SXM, Qwen3.8-27Bv0.28.0, 2026-10-03log50.2238.77−23
  • RTX 4090, Qwen3.5-9B: bf16 did not start on this GPU with vLLM's default settings (out of memory at a 4,096-token context); glyd run runs the model with a 189,440-token context.
  • H100 SXM, Qwen3.8-27B: The KV cache held 204,117 tokens against bf16's 122,538 (1.67 times).

Parts of these models are not compressed yet (the vision tower, the multi-token-prediction head and the linear-attention layers), and on the RTX 5090 and the H100 Glyd picks a larger layout by default because it is faster there: the known gaps. Qwen3.8-27B's serving run: below. The tables that follow are the earlier releases' measurements, on the models of 2025, as measured.

Model files, v0.29.0

The 21 files cut from 2026 models in the record (Qwen3.8, Gemma 4, GLM-5.3-Flash, MiniMax-M3 and Mistral Small 4; 3.72 GB of BF16, FP8, Q8_0 and Q4_K_M files), as one set, computed from the record's table, each file weighted by its size: how much smaller each program makes the set, every file read back bit for bit. Higher is smaller.

ProgramSmaller, %
glyd --max (v0.29.0)32.5
xz -927.3
zstd -1925.4
glyd --max (v0.28.0)24.7

2026-10-05. Table and logs

How fast it responds (v0.25.1, Qwen3-8B and Qwen3-32B)

Through generate(), greedy: Glyd's default against bf16 compiled the same way, each in a process of its own. Tokens a second after a 128-token prompt, 256 new; the first token of a 2,048-token prompt; a chat (a 200-token prompt, a 300-token reply) and a long document (2,000 and 200), each to its last token. Over 1 is faster for tokens a second, under 1 sooner for the times.

Tokens a second, Glyd ÷ bf16Time, Glyd ÷ bf16
GPU, model1 sequence832First token, 2,048ChatLong document
L4, Qwen3-8Bsmallest layoutlog1.271.271.221.150.790.81
A10, Qwen3-8B12-bit layoutlog1.310.941.111.050.750.80
A100 SXM4 40 GB, Qwen3-8B12-bit layout, v0.25.1log1.231.051.041.090.820.95
A100 SXM4 40 GB, Qwen3-14B12-bit layout, v0.25.1log1.271.051.051.190.790.96
GH200, Qwen3-8B12-bit layout, v0.25.1log1.061.211.201.170.950.83
GH200, Qwen3-32B12-bit layout, v0.25.1log1.191.331.301.220.850.78
Tokens a second
Where bf16 does not fitOn the GPU, GB1 sequence832First token, 2,048, ms
A10, Qwen3-14B, bf16does not fit
A10, Qwen3-14B, Glydsmallest layoutlog20.5418.3131.2345.01,261

The A100's and GH200's at v0.25.1, before v0.26.0's faster long prompts there. Every time and rate

Serving with vLLM

vllm bench serve, bf16 against --quantization glyd at the same memory setting: servers warm, 1,024 tokens in and 256 out, vLLM 0.30.0; one GPU each, and Qwen3-30B-A3B is a mixture of experts. Low load: 1 request a second, 0.25 on the L4; saturated: every request at once. Higher is better for the ratios, lower for the times.

Low load, change %Saturated, change %
GPU, modelKV cache, ×Requests/s saturated, ×First tokenEach tokenFirst tokenEach token
L4, Qwen3-8Bsmallest layoutlog1.891.33+16−21−25+42
A10, Qwen3-8B12-bit layoutlog1.731.31+16−21−25+30
A100 40 GB, Qwen3-8B12-bit layoutlog1.140.98+19−10+9+17
A100 40 GB, Qwen3-14B12-bit layoutlog1.771.28+19−13−21+33
GH200, Qwen3-8B12-bit layoutlog1.040.93+6+1+5+9
GH200, Qwen3-32B12-bit layoutlog1.660.89+27−6−24+58
H100 SXM, Qwen3-30B-A3B12-bit layoutlog2.110.84+35+5−37+126

Qwen2.5-72B on two H100s: the KV cache holds 111,328 tokens with Glyd and 8,800 with bf16, room for about 27 conversations of 4,096 tokens at once against 2. The report

The memory the packed weights save goes to vLLM's KV cache, so more requests run at once. These rows are v0.26.0's and v0.27.0's plugin, before the embedding and the output layer were packed too (the L4 against v0.28.0); Qwen3-30B-A3B on the H100 SXM, 0.84 times here, is served at 1.07 times by v0.28.0 (mixtures of experts). The A100, GH200 and H100 rows were measured again with each pass's prompts new to the server; the L4's and the A10's saturated passes served none from vLLM's prefix cache. 2× RTX A6000: being re-measured after a benchmark fix. Serving with vLLM, its options and exact mode. Every rate and the checks, as of v0.26.0

The whole model smaller, on an L4

From v0.28.0 vLLM packs the embedding and the output layer too. v0.27.0 from PyPI against v0.28.0 on one L4, vLLM 0.30.0 in its default mode (compiled, CUDA graphs), alternated in one session. Weights and KV cache as vLLM's log gives them with its own KV cache (--max-model-len 4096, 0.9 of the GPU's memory); the first start is on an empty compile cache. Higher is better for the ratios.

Weights, GiBKV cache, tokensFirst start, tokens
Modelbf16v0.27.0v0.28.0bf16v0.27.0v0.28.0v0.27.0v0.28.0
Qwen3-8Blog15.2711.3810.3827,02454,46460,73638,91260,736
Llama-3.1-8B15.0011.0510.1632,59264,36870,11250,03270,112
Qwen3-4B7.565.485.1683,40897,48899,31288,04899,120
One user, tokens a secondServing, 1 request a secondServing, all 256 at once
Modelv0.27.0v0.28.0×Requests/s, ×First token, %Each token, %Requests/s, ×First token, %Each token, %KV cache, tokens
Qwen3-8B21.1622.541.0651.010, 1.013−3.9, −2.5−5.2, −6.21.095, 1.095−6.4, −5.6+3.1, +3.171,248 to 79,600
Llama-3.1-8B21.9223.011.0501.008, 1.009−0.2, −2.1−4.6, −4.51.040, 1.041−6.7, −6.9+3.7, +3.681,792 to 90,384
Qwen3-4B37.5439.621.0551.005, 1.004−0.7, −1.3−2.0, −2.71.031, 1.037−2.8, −3.4−1.7, −2.3127,152 to 129,344

One user: one request of a 1,024-token prompt decoded for 256 tokens, the median of three rounds with the two alternating. Serving is vllm bench serve as users run it, the KV cache at its default (auto: lossless on an L4), a seed of its own for each pass, 64 requests at 1 a second and then 256 at once, the prefix cache's hit rate in the servers' logs at most 0.4%. The faster steps of the smallest layout, which an L4 takes by default, give 1.042 times v0.27.0's tokens a second on Qwen3-8B with the embedding and the output layer left as vLLM runs them (22.07 against 21.19); with them packed too, 1.065. The output layer's product is within the same tolerance as every other product; exact is unchanged. What is packed and what stays

Mixtures of experts in vLLM

vllm bench serve, 1,024 tokens in and 256 out, vLLM 0.30.0: 64 requests at 1 a second, then 256 at once, 0.9 of the GPU's memory, every pass with prompts of its own. The baseline is vLLM's own bf16 path with its default, untuned MoE settings (its log: Using default MoE config. Performance might be sub-optimal!); a tuned bf16 would be faster than that baseline, which was not measured. Higher is better for the requests a second, lower for the times.

Requests a secondFirst token, msEach token, ms
All 256 at onceRate×Time×Time×KV cache, tokensWeights, GiB
H100 SXM, Qwen3-30B-A3Bbf16log12.321.006,9201.0027.21.00118,72056.88
Glyd13.131.073,8530.5645.91.69251,69644.65
Glyd, lossless KV cache17.101.393,4370.5043.71.61331,00845.41
A100 SXM4 40 GB, Qwen3-16B-A3Bbf16log4.121.0027,1001.0030.91.0040,28829.87
Glyd, lossless KV cache6.181.5014,2330.5362.92.04144,89623.97
Requests a secondFirst token, msEach token, ms
1 request a secondRate×Time×Time×
H100 SXM, Qwen3-30B-A3Bbf160.971.00621.006.61.00
Glyd0.981.01560.906.30.95
Glyd, lossless KV cache0.971.00600.976.30.95
A100 SXM4 40 GB, Qwen3-16B-A3Bbf160.941.001021.0013.91.00
Glyd, lossless KV cache0.951.011101.0812.30.88

Glyd serves more requests a second because the weights leave room for more of them at once; each token then takes longer, and the first token comes sooner. Prompt steps are where Glyd is behind: on the H100, with the lossless cache, 5.7 s of the saturated pass's 14.3 s were prompt steps, 22 microseconds a prompt token against bf16's 15. Qwen3-16B-A3B is Qwen3-30B-A3B with half its experts; the 30B does not fit this GPU in bf16. The attention products and the router stay bf16. Both runs are of the code as it stood on 2026-10-03. Mixtures of experts in the docs

Newer models in vLLM

vllm bench serve, 1,024 tokens in and 256 out, vLLM 0.30.0: 64 requests at 1 a second, then 256 at once, 0.9 of the GPU's memory, every pass with prompts of its own, against vLLM's own bf16. Higher is better for the requests a second, lower for the times.

Requests a secondFirst token, msEach token, ms
All 256 at onceRate×Time×Time×KV cache, tokensWeights, GiB
H100 SXM, Qwen3.8-27Bbf16log4.721.0022,9721.0046.41.00122,53850.22
Glyd5.051.0719,3940.8466.21.43204,11738.77
Requests a secondFirst token, msEach token, ms
1 request a secondRate×Time×Time×
H100 SXM, Qwen3.8-27Bbf160.921.001991.0023.41.00
Glyd0.921.012271.1421.70.92

Qwen3.8-27B, text only (the vision tower not loaded). Its attention layers keep vLLM's own KV cache: the lossless KV cache does not hold linear attention or a head size of 256 yet, so the room for more requests comes from the weights alone. bf16's continuations scored on Glyd: top-1 99.22%, as on bf16 started again. Glyd's saturated pass drew more power and ran at a lower GPU clock (1,852 MHz against 1,980). The code of v0.28.0rc1, 2026-10-03.

The lossless KV cache in vLLM

kv: lossless, vLLM's KV cache held in fewer bits with every value read back bit for bit, against vLLM's own cache: Qwen3-8B unless it says otherwise, bf16 weights, vLLM 0.30.0 in its default mode (compiled, CUDA graphs). Decode: 128 new tokens a request, at the same batch, the median of three rounds with the two alternating on the L4 and the A100, one run each on the H100 and the GH200. Higher is better for the ratios.

KV cache, tokensvLLM's ownLossless×
L4at the decode runs' settinglog32,20841,4081.286
A100 SXM4 40 GBat the decode runs' settinglog136,592177,3921.299
H100 SXMat the decode runs' settinglog382,448499,3121.306
GH200at the decode runs' settinglog482,864630,1121.305
L4, Qwen3-4B36 layers, 8 KV headslog83,008107,7601.2982
L4, Qwen3-8B36 layers, 8 KV heads25,23232,3841.2834
L4, Qwen2.5-7B28 layers, 4 KV heads77,15298,5441.2773
L4, Mistral-7B-v0.332 layers, 8 KV heads43,52055,4561.2743
L4, Llama-3.1-8B32 layers, 8 KV heads30,46438,1601.2526

The first four rows are each decode run's own setting (0.96 of the GPU's memory on the L4, 0.9 on the A100, the H100 and the GH200). The other five: an L4, eager, --max-model-len 8704, 0.9, five models.

Decode tokens a second
GPUBatch × tokensvLLM's ownLossless×
L41 × 1,02416.616.71.007
6 × 4,09677.581.61.053
24 × 1,024289.5302.41.047
1 × 8,19215.515.91.023
3 × 8,19238.840.81.052
A100 SXM4 40 GB1 × 1,02475.376.71.018
1 × 8,19271.473.71.032
H100 SXM1 × 1,024152.8153.61.005
1 × 8,192144.8148.11.023
4 × 8,192499.3514.51.030
32 × 1,0243,811.24,030.11.057
32 × 8,1921,733.92,075.41.197
46 and 60 × 8,1921,950.62,618.41.342
GH2001 × 1,024176.6177.21.003
1 × 8,192166.4168.21.011
4 × 8,192576.6584.01.013
32 × 1,0244,566.24,661.51.021
32 × 8,1922,051.22,435.01.187
58 and 76 × 8,1922,395.13,126.61.305

On the H100 and the GH200, the last row is each cache at the largest batch it holds: 46 requests of 8,192 tokens with vLLM's own, 60 with the lossless cache; the GH200's, 58 and 76.

H100 SXM, 8,192 tokens in, 256 out, saturatedvLLM's ownLossless×
Requests a second2.672.801.05
First token, ms9,1998,1960.89
Each token, ms43.949.21.12
KV cache, tokenslog377,024494,2561.31
Weights, GiB15.2716.341.07
GH200, 8,192 tokens in, 256 out, saturatedvLLM's ownLossless×
Requests a second2.783.121.12
First token, ms8,3217,9440.95
Each token, ms49.547.80.97
KV cache, tokenslog477,456625,0401.31
Weights, GiB15.2716.591.09

With long prompts it serves more requests a second and its first token comes sooner; on the H100 each generated token takes longer, on the GH200 it takes less. An H200 is not measured; auto holds the cache on an A100, an L4, an H100 and a GH200 only. The option, its defaults and what is exact.

Requests a secondLossless against vLLM's own, ×
1,024 tokens in, 256 out, saturatedvLLM's ownLossless×First tokenEach tokenKV cache
L4bf16 weights, the lossless cache against vLLM's ownlog0.760.931.230.811.061.29
L4Glyd's weights and the lossless cache against bf16 and vLLM's ownlog0.761.201.590.581.552.64
A100 SXM4 40 GBbf16 weights, the lossless cache against vLLM's ownlog5.927.621.290.810.931.30
H100 SXMbf16 weights, the lossless cache against vLLM's ownlog20.5821.681.051.020.921.31
GH200bf16 weights, the lossless cache against vLLM's ownlog21.1822.471.061.010.911.31

Every pass draws prompts of its own: the prefix cache's hit rate in the servers' logs was 0.0% on the L4 and the GH200, at most 0.9% on the A100 and 1.4% on the H100 (one prompt of 328 repeated). The second row is Glyd's weights and the lossless cache against bf16 and vLLM's own: each token takes longer there, the first token sooner.

A fraction of the layers, on an H100 SXM

Qwen3-32B on an 80 GB H100 SXM, bf16 against --quantization glyd with fraction, the share of the decoder layers packed (0 is bf16, 1 every layer). Every request sent at once: 192 prompts, 1,024 tokens in and 256 out, each server started cold with the same memory setting, --max-model-len 4096 --max-num-seqs 128, one run each. Glyd's layout is the 12-bit one. Higher is better for the ratios, lower for the times.

KV cacheRequests a secondChange against bf16, %
ModeLayers packedWeights, GiBTokens×Number×First tokenEach token
bf1664 layerslog61.0332,3202.51
fraction 00 of 6461.0332,3201.002.511.0000
fraction 0.2516 of 6458.2043,8721.362.851.14−18+14
fraction 0.532 of 6454.8957,3921.783.541.41−30+26
fraction 0.7548 of 6451.5970,9122.193.501.40−37+44
fraction 164 of 6448.2784,5282.623.911.56−39+55

One GPU, one model and one load: the first token at low load was not measured here, nor a fraction on a GH200, where the same model served 0.89 times bf16's requests a second with every layer packed in the table above (another bench: warm servers, 128 prompts at once). bf16 ran at most 25 requests at a time with up to 175 waiting, every layer packed at most 81. The option.

What bf16, FP8 and Glyd change in a model's answers

Qwen3-4B-Instruct-2507 on an RTX 4080 SUPER, each mode against bf16's own answers: Glyd 0.22.0, and FP8 as Qwen releases it (Qwen/Qwen3-4B-Instruct-2507-FP8).

ModeWeights, GBPerplexityTop token as bf16's, %Greedy answers as bf16's, of 50MMLU, %MMLU answers changed, of 1,000
bf168.0411.2435100.005068.300log
bf16, eager attention8.0411.246998.633568.3016log
Glyd, exact=True6.7811.2435100.005068.300log
Glyd6.2711.243699.993468.1013log
FP84.4111.259795.981468.1046log
  • The weights are exact. Every weight Glyd holds decodes to its bf16 value, in both modes.
  • With exact=True the model is bf16's, bit for bit: the same perplexity, top tokens and greedy answers, and 0 MMLU answers changed.
  • By default, about as much as bf16's own attention kernels: 13 MMLU answers changed, against 16 for bf16 with eager attention in place of SDPA. Glyd's products round a little differently from bf16's.
  • FP8 changes 3.5 times as many: 46 MMLU answers, and 14 of 50 greedy answers are bf16's.

Perplexity on WikiText-2 (64 windows of 1,024 tokens); 50 greedy answers of 64 tokens; MMLU on 1,000 questions, 0-shot. Weights: memory after loading, Glyd's with its scratch. The run

Against DFloat11 on a 16 GB GPU

Qwen3-8B on an RTX 4080 SUPER, where its 16.38 GB of bf16 does not fit; both hold the weights in about 11.2 GB. Higher is better.

Sequences a stepDFloat11, tokens/sGlyd, tokens/sGlyd against DFloat11, ×
113.847.23.4
8104.7360.23.4
32387.51,268.63.3
64746.21,897.22.5

DFloat11's logGlyd's log

Fewer 48 GB GPUs

RTX A6000s: bf16 across as many GPUs as it needs, Glyd on fewer. Higher is better.

Sequences a stepbf16, tokens/sGlyd, tokens/sChange, %
Qwen3-32Bbf16 on 2 GPUs, Glyd on 1
19.511.8+24
874.494.9+28
32275.9289.9+5
64488.4400.5−18
Qwen2.5-72B-Instructbf16 on 4 GPUs, Glyd on 3
14.56.4+42
835.049.0+40
32134.6153.8+14
64254.3218.1−14

The run's logs

The matrix multiply against ZipServ and cuBLAS

Qwen3-8B, layer 18's matrices on an RTX 4080 SUPER, with the L2 cache flushed as ZipServ times itself. Lower is better; Glyd's time in bold where it is the fastest. Glyd's smallest layout at 1 to 32 tokens, its 12-bit layout at 64.

Microseconds a call, at tokens
MatrixBits a weight1163264
q_proj, o_proj4096 × 4096
cuBLAS, bf1616.0073737477
ZipServ11.3557575869
Glyd10.8156586273
k_proj1024 × 4096
cuBLAS, bf1616.0023272628
ZipServ11.4322232325
Glyd10.8319212430
gate_proj12288 × 4096
cuBLAS, bf1616.00175204235225
ZipServ11.35151152155162
Glyd10.76144148153172
down_proj4096 × 12288
cuBLAS, bf1616.00176208228214
ZipServ11.35153154155187
Glyd10.75147150153181

ZipServ's logGlyd's log

How we measure

Speed
Through generate(), greedy: Glyd's default against bf16 compiled the same way, each in a process of its own.
Serving
vllm bench serve, bf16 against --quantization glyd at the same memory setting, servers warm (the fraction sweep's and the Qwen2.5-72B run's, cold).
Quality
Perplexity, the top token, greedy answers and MMLU, against bf16 in the same run.
Exactness
Every matrix packed, unpacked and compared bit for bit.
Hardware
An RTX 4080 SUPER; Lambda Cloud A10, A100, H100, GH200 and RTX A6000; AWS A10G, L4, L40S and RTX PRO 6000; Runpod RTX 4090, RTX 5090 and H100 SXM for the 2026 models. Versions in each log.
Releases
Each table names the release and the day it was measured; earlier releases' tables stay as measured, the 2026 models' first.

Known gaps

  • v0.29.0: 33% on the newest modelsQwen3.5-9B's weights are 28.2% under bf16's on an RTX 4090 and 21.3% on an RTX 5090; Qwen3.8-27B's 22.8% on an H100. Not compressed yet: vision towers, multi-token-prediction heads and the linear-attention layers. The RTX 5090, the A10, the A100 and the H100 take a larger layout by default because it is faster there; the smallest becomes the default where it is as fast.RTX 4090, RTX 5090H100 SXM
  • Speed at full load on an H100Qwen3.8-27B, 256 requests at once: 1.07 times bf16's requests a second and the first token after 0.84 times its time, but each token took 1.43 times as long (66.2 ms against 46.4). At 1 request a second the first token came after 227 ms against 199.H100 SXMThe run
  • The lossless KV cache and the newest attentionThe lossless KV cache does not hold linear attention or a head size of 256 yet, so Qwen3.5 and Qwen3.8 keep vLLM's own KV cache, and their room for more requests comes from the weights alone.H100 SXM
  • Glyd's own engineIt runs Gemma 4 31B and 12B (v0.31.0) on Linux with an RTX 30 series card or newer: text only, one request at a time. Gemma 4 26B-A4B, E4B and E2B are not supported yet.
  • FP8 and 4-bit modelsFP8 weights have 17 to 18% to take, measured on three (v0.21.0), but lossless FP8 checkpoints (GLM-5.3, DeepSeek-V4, Mistral Small 4) are not shipped yet: Glyd keeps their weights as they are. 4-bit weights have little left to take.The roadmap
  • vLLM on a GH200, at full load (v0.27.0)Saturated, Glyd served 0.93 and 0.89 times bf16's requests a second on a GH200, Qwen3-8B and Qwen3-32B. On an 80 GB H100 SXM, Qwen3-32B with every layer packed served 1.56 times bf16's (another bench, where bf16 was short of KV cache); Qwen3-8B, which leaves bf16 room to spare, was not served at full load there.GH200H100 SXM, Qwen3-32B
  • Mixtures of experts in vLLM, prompts (v0.28.0)At full load a mixture of experts serves faster than bf16 since v0.28.0: 1.07 times its requests a second on an H100 SXM and 1.50 times with the lossless KV cache on an A100 40 GB, against vLLM's own bf16 path with its default MoE settings (a tuned bf16 would be faster; not measured). Its prompt steps are slower: 22 microseconds a prompt token against bf16's 15 on the H100 and 72 against 52 on the A100, and the experts' layer takes 1.38 to 2.01 times bf16's time at 1,152 to 8,192 tokens a step on the H100. At 1 request a second the first token on the A100 comes 8% later (110 ms against 102). The 2× RTX A6000 row is being re-measured after a benchmark fix.H100 SXMA100 40 GB
  • Qwen3-8B in vLLM on an A100, at full load (v0.27.0)Saturated, Glyd served 0.98 times bf16's requests a second (5.73 against 5.85) with 1.14 times the KV cache, and each token came 17% later; with Qwen3-14B, where bf16 is short of KV cache, 1.28 times.A100 40 GB
  • The lossless KV cache on an H100, with long prompts (v0.27.0)With 8,192 tokens in and 256 out, saturated, on an H100 SXM it served 1.05 times vLLM's requests a second and its first token came after 0.89 times the time, but each generated token took 1.12 times as long (49.2 ms against 43.9). On a GH200 the same run served 1.12 times the requests a second, with the first token after 0.95 times the time and each token 0.97 times as long. An H200, an L40S, an RTX 40 and an A10 are not measured: the default leaves vLLM's own cache there.H100 SXMGH200
  • Prompts of rare tokens in the lossless KV cache (v0.27.0)40 prompts of a model's rare tokens, 1,400 tokens each, at once with 8 ordinary prompts: all 40 served on every one of five models, and the flood ran at 0.88 times (Llama-3.1-8B) and 0.77 times (Mistral-7B-v0.3) vLLM's prompt tokens a second, and at 1.00 to 1.01 times on the Qwen models, which have no such token.L4
  • The first tokenAt low load the first token comes 6 to 27% later than bf16's in vLLM (27% for Qwen3-32B on a GH200, v0.27.0), and at most 31% through generate() (a 512-token prompt on an A100 SXM, v0.25.1).vLLM, GH200vLLM, A100generate(), A100
  • generate() at 8 sequences on an A100.94 times bf16 compiled's tokens a second, both eager there (v0.25.1).A10
  • Long prompts on datacenter GPUsStill slower than bf16: Qwen3-8B's pass over 1,024 tokens takes 101.2 ms against bf16's 93.0 on an A100 SXM (v0.26.0) and 45.0 against 36.9 on an H100 SXM (v0.24.0), and Qwen3-14B's over 2,048 tokens 134.4 against 119.2 on an H100 SXM (v0.26.0); work is under way.A100 SXMH100 SXMH100 SXM, 14B
  • Prompts on the L4 and L40SLong prompts are close to bf16's since v0.25.1: Qwen3-8B at 8,192 tokens +4.7% on an L4 and +3.8% on an L40S. Shorter ones in the smallest layout are still slower, +25.5% and +30.3% at 1,024 tokens; layout="mma12" is faster there.L4 and L40S
  • Many sequences a stepFrom 64 or 128 sequences a step, 2 to 10% more GPU time than bf16 on the A100, H100 PCIe, RTX PRO 6000 and RTX 4080 SUPER (v0.22.0).A100H100 PCIeRTX PRO 6000RTX 4080 SUPER
  • Exact mode and the longest prompts, on an A10Since v0.25.0 exact mode and the longest prompts take 1.0 to 1.6% longer on an A10; on Hopper v0.25.1 made them 2.5 to 3.6% faster than before, measured on a GH200 (the H100 SXM not run again).A10GH200
  • BlackwellMeasured on two Blackwell GPUs, the RTX PRO 6000 (v0.22.0) and the RTX 5090 (v0.29.0); not yet on the B200.Its numbers