Glyd

Report · Sep 26, 2026 · Glyd

Against DFloat11 and ZipServ on an RTX 4080 SUPER

Qwen3-8B on a 16 GB RTX 4080 SUPER: Glyd generates 2.5 to 3.4 times DFloat11's tokens a second at the same size, and its kernels keep pace with ZipServ's.

Glyd is not the only lossless format for model weights. DFloat11 and ZipServ also keep every weight bit for bit at about 11 bits instead of 16. This report runs them on the same 16 GB RTX 4080 SUPER; the wider picture is on related work.

Three lossless formats

Method Bits a weight Same model?
Glyd (2026) 10.9 / 12.0 Yes, bit for bit
DFloat11 (NeurIPS 2025) 10.9 Yes, bit for bit
ZipServ (ASPLOS 2026) 11.4 Yes, bit for bit
4-bit quantization (GGUF Q4, AWQ, GPTQ) 4 + scales No, rounded: smallest by far, and its answers change

Bits a weight on Qwen3-8B: the whole model for Glyd’s two layouts and DFloat11, the matrices for ZipServ.

End to end against DFloat11

Qwen3-8B takes 16.38 GB in bf16, which leaves no room to run on a 16 GB card. Both DFloat11 and Glyd hold its weights in about 11.2 GB.

Sequences a step DFloat11, tokens/s Glyd, tokens/s Glyd against DFloat11, ×
1 13.8 47.2 3.4
8 104.7 360.2 3.4
32 387.5 1,268.6 3.3
64 746.2 1,897.2 2.5

DFloat11’s log · Glyd’s log

Tokens per second at 1, 8, 32 and 64 sequences: DFloat11 13.8, 104.7, 387.5 and 746.2; Glyd 47.2, 360.2, 1,268.6 and 1,897.2.
Sequences a stepDFloat11Glyd
113.847.2
8104.7360.2
32387.51,268.6
64746.21,897.2
Tokens per second, Qwen3-8B on an RTX 4080 SUPER, DFloat11 against Glyd at the same size. Higher is better; log scale. Sep 26, 2026.

The matrix multiply against ZipServ and cuBLAS

The comparison with ZipServ is product against product: Qwen3-8B’s layer 18 matrices, microseconds a call with the L2 cache flushed, as ZipServ times itself. Lower is better; Glyd’s time in bold where it is the fastest.

Bits a weight1 token, µs16 tokens, µs32 tokens, µs64 tokens, µs
q_proj, o_proj (4096 × 4096)
cuBLAS, bf1616.0073737477
ZipServ11.3557575869
Glyd10.8156586273
k_proj (1024 × 4096)
cuBLAS, bf1616.0023272628
ZipServ11.4322232325
Glyd10.8319212430
gate_proj (12288 × 4096)
cuBLAS, bf1616.00175204235225
ZipServ11.35151152155162
Glyd10.76144148153172
down_proj (4096 × 12288)
cuBLAS, bf1616.00176208228214
ZipServ11.35153154155187
Glyd10.75147150153181

Glyd is the fastest of the three in 10 of the 16 cells, and ZipServ in the other 6. Glyd ran its smallest layout at 1 to 32 tokens and its 12-bit layout at 64. ZipServ’s log · Glyd’s log

Against bf16 on the same card

For scale, Glyd against bf16 itself on this GPU: Qwen2.5-7B-Instruct, GPU time a token after the prompt, with q, k, v and gate, up merged as vLLM runs them.

Sequences a stepbf16, msGlyd, msChange, %
121.9716.52−25
822.8517.37−24
3226.1918.80−28
6427.6725.14−9
The log

Method

  • End to end: tokens per second generating with Qwen3-8B, DFloat11 and Glyd on the same RTX 4080 SUPER.
  • Kernels: microseconds a call of each matrix product with the L2 cache flushed, as ZipServ times itself.
  • Against bf16: GPU time a token after the prompt, over 16 steps; q, k, v as one product and gate, up as another, for bf16 and Glyd alike.
  • Exactness: every matrix packed, unpacked and compared bit for bit.

The logs of every run are in the repository, under benchmarks/gpu; how the harness is run: the GPU docs.