Issues / #3056
#3056 RTX 2080 Ti (sm_75) x2: STRATA_SM75_PERF=1 verified bitwise; prefill +46% from 0.1.43.1 to 0.1.45
open · @jiuyinssf · 0 comentarios · En GitHub
BenchmarksSetup & installMulti-GPUNVIDIA / CUDAModels & quantsDocumentation
Descripción
## Hardware
- **2× GeForce RTX 2080 Ti 22 GB** (modded VRAM, Turing **sm_75**), PCIe 3.0, no NVLink
- Intel Xeon E5-2673 v3 (12C/24T, **AVX2 only — no AVX-512**), 62 GB DDR3-1866 ECC (quad channel)
- Xuanan X99-TF, Ubuntu 22.04.5, NVIDIA driver 580.167.08, CUDA 13.0
## Software
| | Before | After |
|---|---|---|
| Strata | 0.1.43.1 (`a0116b27`) | **0.1.45 (`477ac13c`)** |
| Build | from source, `-DCMAKE_CUDA_ARCHITECTURES=75` | same flags |
| Toolchain | CUDA 13.0, GCC 12.3, Ninja | same |
| llama.cpp pin | `3cf03257` | `3cf03257` (unchanged) |
The engine was rebuilt for sm_75 with the recorded setup flags; `third_party/ggml` is tree-identical between the two
revisions (`0893b23e`), and the packed model below is accepted by both versions unchanged.
## Model
`SC117/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-GGUF`, **IQ3_XXS** native IQ pack — shard 1 **47.34 GB**, shard 2
28.8 GB. MTP draft layer, BF16 mmproj on the GPU. Context 262144, `--kv int8`, `parallel: 1`.
## Configuration
```
--expert-cache auto --prefill auto --spec 4 --spec-min-p 0.5 --mtp <rt>
--max-context 262144 --kv int8 --vision --vram-reserve-mib 960 --layer-split auto
```
`env`: `STRATA_BF16_TC=1`, `STRATA_SELECT_SIMT=1`, `STRATA_SM75_PERF=1`
The server raised `--vram-reserve-mib` from 896 to 960 by itself after a low-VRAM warning; with 960 the start reports
**621 / 557 MiB free**, no warnings during the runs below.
## Main result: `STRATA_SM75_PERF=1` is bitwise on a real sm_75 card
The docs say the Turing kernels are *"bitwise equal to the kernels they replace"* but **"nobody on the team has an
sm_75 card to confirm them"**. This is that confirmation.
**Method.** 10 prompts × 3 greedy runs (`temperature: 0`), engine 0.1.45, everything identical except
`STRATA_SM75_PERF`. One engine start per arm.
**Result: 30 of 30 outputs are byte-identical between the two arms, and 30/30 are correct in both.**
Prompts covered single-step arithmetic (23×17, 12×12, 999+1, 1000−1, √144, counting the "r" in *strawberry*), recall
(capital of France, largest planet by volume, mean days per month) and an open-ended explanation of floating point.
### A note on what this test can and cannot show
A fully deterministic baseline is **not reachable with this pack**: the native IQ pack refuses to run without
`--spec ≥ 2` (`this pack is a native (IQ) pack: it needs --native SHARD1, --spec T (T >= 2) and --prefill CHUNK`),
so MTP cannot be switched off. Greedy output therefore varies run to run in a few near-tie positions.
I first suspected the Turing kernels because 1234×5678 changed answer once after enabling them. A control run with
`STRATA_SM75_PERF` **off** reproduced the same instability (`7022752` / `7022772` vs the correct `7006652`), and the
same wrong value appears in both arms. So 4-digit × 4-digit multiplication is unstable at temperature 0 with or
without the Turing series — a near-tie effect, not a kernel difference. I am reporting this because it may interest
you independently of sm_75.
## Speed
Prefill, tokens/s. Each request carried a unique prefix so no prompt cache could help; `max_tokens=1`.
| prompt tokens | 0.1.43.1 baseline | 0.1.43.1 + `BF16_TC`+`SELECT_SIMT` | 0.1.45 + both | **0.1.45 + both + `SM75_PERF`** |
| ---: | ---: | ---: | ---: | ---: |
| ~2.36 K | 816 | 905 | 913 | **932** |
| ~9.16 K | 1,014 | 1,203 | 1,238 | **1,299** |
| ~36.4 K | 1,669 | 2,051 | 2,120 | **2,254** |
| ~77.2 K | 1,791 | 2,367 | 2,451 | **2,614** |
vs the original baseline: **+14 % / +28 % / +35 % / +46 %**. At 77 K that is 43.1 s → 29.5 s to read the prompt.
`STRATA_SM75_PERF=1` alone adds **+2.1 / +4.9 / +6.3 / +6.7 %** over 0.1.45 with the other two switches — growing
with depth, as the docs predict.
Decode: 63–70 tok/s before, 67–79 tok/s after. **Sample counts here are small (2–5 runs per arm) and the spread
within an arm is as large as the difference between arms, so I would not claim a decode gain.** The docs' +5–6 %
figure is plausible but unconfirmed by my data.
Expert-cache decode hit rate stayed at 99.4–99.9 % throughout.
## Suggestion
1. The bitwise claim for the Turing series holds on real sm_75 hardware for the workloads above. If you want a
second data point before changing a default, consider asking for more reports; otherwise making
`STRATA_SM75_PERF=1` the default on 7.5 cards looks safe on this evidence.
2. `docs/OLDER_GPUS.md` still lists only `STRATA_BF16_TC=1` for the RTX 20 row, even though `STRATA_SM75_PERF` is
documented in `DETAILS.md`. A pointer from the support matrix would help people find it.
3. Two sm_75 cards with a layer split work well: 99.4 %+ cache hit, 262 K context, 621/557 MiB VRAM free.
## Reproduction
```sh
cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Release -DSTRATA_ENABLE_CUDA=ON -DSTRATA_BUILD_TESTS=OFF \
-DCMAKE_CUDA_ARCHITECTURES=75 -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc \
-DCUDAToolkit_ROOT=/usr/local/cuda-13.0 -DSTRATA_GGML_DIR=third_party/llama.cpp
cmake --build build --target strata -j 12
# then the config above, with and without STRATA_SM75_PERF=1 in the config's "env" object
```
Build time on this machine: **2 min 55 s** (153 targets, 12 threads). Binary 0.1.45 is 79 MB vs 0.1.43.1's 59 MB.
En el sitio
Enlaces a install, modelos, releases.