NVIDIA RTX PRO 6000 — Ryzen 9 9950X3D, 16-core · RTX PRO 6000 Blackwell, 96 GB · CUDA sm_120 · 185 GB RAM + 96 GB VRAM · llama.cpp CUDA, vLLM, SGLang, Ollama.
21 models in this tree. A row appears only when the run used the shared
profile (temperature 0 on every trial, seed 42, one 16384-token slot, C compiled -std=gnu11).
Aya-23 clamps that context to 8192. Older sweeps used different stacks, context sizes, and a 0.7-temperature retry, so they are
not in this table. Their raw JSON is still on disk. Click any column header to sort.
Generated 2026-10-01 17:21.
Where to look: this page ranks the models and prices them by what a working answer costs. Analysis covers behaviour under load, whether the code they write is fast, whether the wording of the prompt changes the answer, and self-repair. The failing samples are split by technology — C, Python, Bash, research — and models shows how to reproduce every number. Charts is the same data as pictures.
How many times does each test run? Coding suites (C, Python, Bash — easy, hard and brutal) and the research paper: 3 trials per task, all at temperature 0 with seed 42, so a miss is the same answer again. Framing, from the older sweep: 20 trials per wording. Decode speed: median of 3 repeated 2048-token generations — the tok/s column shows ±1 std across those runs (hover a cell for the exact count), as does the dot plot on the analysis page. Quality: 6 probes × 3 trials (temp 0, then 0.7×2). Concurrency: one pass per stream level (no repeats). Self-repair: one initial attempt, then up to 5 rounds of compiler feedback. Two writing tasks that are easy to confuse: tok/s is measured on a 1500-word essay about MIT (speed only, content not graded — each model's essay is on its detail page), while the research column is a different test: extracting NFS facts from RHEL 10 documentation. All raw data is downloadable as CSV files.
| model | type | coding total | flaky ↓ | tok/s ± | RAM GB | quality | ppl-w ↓ | ppl-t ↓ | C | Py | Bash | C-hard | Py-hard | Sh-hard | C-brutal | Py-brutal | Sh-brutal | research |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| qwen3.8-flash-next 125B llama.cpp CUDA | MoE | 117/126 | 0 | — | — | — | — | 3.60 | 48/48 | 24/24 | 18/24 | 9/9 | 9/9 | 6/9 | — | — | — | 3/3 |
| gpt-oss-120b llama.cpp CUDA | MoE | 111/126 | 4 | — | — | — | — | — | 45/48 | 24/24 | 18/24 | 8/9 | 9/9 | 4/9 | — | — | — | 3/3 |
| laguna-s 2.1 117B llama.cpp CUDA | MoE | 108/126 | 0 | — | — | — | — | 8.51 | 48/48 | 24/24 | 18/24 | 6/9 | 9/9 | 3/9 | — | — | — | 0/3 |
| gemma-4-26b llama.cpp CUDA | MoE | 105/126 | 0 | — | — | — | — | 14,931 | 42/48 | 24/24 | 15/24 | 9/9 | 9/9 | 3/9 | — | — | — | 3/3 |
| qwen3.5-35b llama.cpp CUDA | MoE | 105/126 | 0 | — | — | — | — | 6.20 | 42/48 | 24/24 | 18/24 | 6/9 | 9/9 | 3/9 | — | — | — | 3/3 |
| laguna-xs.2 llama.cpp CUDA | MoE | 105/126 | 3 | — | — | — | — | 13.06 | 38/48 | 24/24 | 21/24 | 6/9 | 9/9 | 5/9 | — | — | — | 2/3 |
| nemotron-3-super 120B llama.cpp CUDA | MoE | 105/126 | 0 | — | — | — | — | 4.08 | 45/48 | 24/24 | 18/24 | 3/9 | 9/9 | 3/9 | — | — | — | 3/3 |
| gpt-oss-20b llama.cpp CUDA | MoE | 102/126 | 8 | — | — | — | — | 121.31 | 44/48 | 23/24 | 18/24 | 6/9 | 7/9 | 4/9 | — | — | — | 0/3 |
| qwen3.8-27b llama.cpp CUDA | dense | 102/126 | 0 | — | — | — | — | 6.28 | 42/48 | 24/24 | 15/24 | 6/9 | 9/9 | 3/9 | — | — | — | 3/3 |
| qwen3-coder-next 80B llama.cpp CUDA | MoE | 99/126 | 0 | — | — | — | — | 7.06 | 39/48 | 21/24 | 18/24 | 6/9 | 6/9 | 6/9 | — | — | — | 3/3 |
| qwen3.6-27b llama.cpp CUDA | dense | 99/126 | 0 | — | — | — | — | 6.50 | 36/48 | 24/24 | 21/24 | 6/9 | 9/9 | 3/9 | — | — | — | 0/3 |
| devstral-2 24b llama.cpp CUDA | dense | 96/126 | 0 | — | — | — | — | 4.82 | 36/48 | 24/24 | 18/24 | 3/9 | 6/9 | 6/9 | — | — | — | 3/3 |
| qwen3.6-35b llama.cpp CUDA | MoE | 96/126 | 0 | — | — | — | — | 6.35 | 39/48 | 21/24 | 18/24 | 6/9 | 9/9 | 3/9 | — | — | — | 0/3 |
| glm-4.7-flash llama.cpp CUDA | MoE | 94/126 | 1 | — | — | — | — | 16.08 | 45/48 | 24/24 | 15/24 | 3/9 | 3/9 | 1/9 | — | — | — | 3/3 |
| qwen3-coder-30b llama.cpp CUDA | MoE | 93/126 | 0 | — | — | — | — | 9.05 | 36/48 | 24/24 | 12/24 | 6/9 | 9/9 | 3/9 | — | — | — | 3/3 |
| qwen3.5-122b-a10b llama.cpp CUDA | MoE | 93/126 | 0 | — | — | — | — | 4.87 | 36/48 | 24/24 | 18/24 | 3/9 | 9/9 | 3/9 | — | — | — | 0/3 |
| qwen3.5-27b llama.cpp CUDA | dense | 93/126 | 0 | — | — | — | — | 6.36 | 30/48 | 24/24 | 15/24 | 6/9 | 9/9 | 6/9 | — | — | — | 3/3 |
| k2-horizon 36B-A4B llama.cpp CUDA | MoE | 91/126 | 5 | — | — | — | — | 7.89 | 37/48 | 21/24 | 15/24 | 4/9 | 6/9 | 5/9 | — | — | — | 3/3 |
| mistral-small-4 119B llama.cpp CUDA | MoE | 87/126 | 4 | — | — | — | — | — | 35/48 | 22/24 | 15/24 | 7/9 | 3/9 | 3/9 | — | — | — | 2/3 |
| seed-oss 36b llama.cpp CUDA | dense | 82/126 | 10 | — | — | — | — | 8.91 | 29/48 | 24/24 | 17/24 | 3/9 | 4/9 | 2/9 | — | — | — | 3/3 |
| aya-23 35b llama.cpp CUDA | dense | 61/126 | 1 | — | — | — | — | 6.12 | 25/48 | 21/24 | 12/24 | 0/9 | 3/9 | 0/9 | — | — | — | 0/3 |
A dense model runs every parameter on every token; a mixture-of-experts model routes each token to a few of its experts, so only the active column does compute. That is why the 125B flash-next decodes like a 6B model and the whole top of the table is MoE — on memory-bandwidth-bound Apple silicon, active parameters are what you pay per token, and MoE buys a large total capacity at a small active cost. The last column, tok/s per active billion, is the efficiency of that trade; dense models are 1x by definition and omitted.
| model | type | total | active | experts | coding | tok/s | tok/s per act-B |
|---|---|---|---|---|---|---|---|
| qwen3.8-flash-next 125B | MoE | 125B | 6B | 512, top-10 +1 | 93% | 0 | — |
| gpt-oss-120b | MoE | 117B | 5.1B | 128, top-4 | 88% | 0 | — |
| laguna-s 2.1 117B | MoE | 117B | 3B | 256, top-10 +1 shared | 86% | 0 | — |
| gemma-4-26b | MoE | 25.2B | 3.8B | 128, top-8 +1 | 83% | 0 | — |
| qwen3.5-35b | MoE | 35B | 3B | 256, top-8 +1 | 83% | 0 | — |
| laguna-xs.2 | MoE | 33.4B | 3B | 256 +1 shared | 83% | 0 | — |
| nemotron-3-super 120B | MoE | 120B | 12B | 512, top-22 +1 | 83% | 0 | — |
| gpt-oss-20b | MoE | 21B | 3.6B | 32, top-4 | 81% | 0 | — |
| qwen3.8-27b | dense | 27B | 27B | — | 81% | 0 | — |
| qwen3-coder-next 80B | MoE | 80B | 3B | 512, top-10 +1 | 79% | 0 | — |
| qwen3.6-27b | dense | 27B | 27B | — | 79% | 0 | — |
| devstral-2 24b | dense | 24B | 24B | — | 76% | 0 | — |
| qwen3.6-35b | MoE | 35B | 3B | 256, top-8 +1 | 76% | 0 | — |
| glm-4.7-flash | MoE | 30B | 3B | 64, top-4 +1 | 75% | 0 | — |
| qwen3-coder-30b | MoE | 30B | 3B | 128, top-8 | 74% | 0 | — |
| qwen3.5-122b-a10b | MoE | 122B | 10B | 256, top-8 +1 | 74% | 0 | — |
| qwen3.5-27b | dense | 27B | 27B | — | 74% | 0 | — |
| k2-horizon 36B-A4B | MoE | 36B | 4B | — | 72% | 0 | — |
| mistral-small-4 119B | MoE | 119B | 6B | 128, top-4 | 69% | 0 | — |
| seed-oss 36b | dense | 36B | 36B | — | 65% | 0 | — |
| aya-23 35b | dense | 35B | 35B | — | 48% | 0 | — |
Green cells are strong, red weak — shaded by percentage so a column can be scanned without reading every number. Perplexity is llama-perplexity on WikiText-2 (50 chunks). It is not comparable to the MLX numbers on the other machine. Gemma's absurd PPL is a tokenizer artifact — trust the coding score.
Correctness alone picks a model that is right and unusably slow; tok/s alone picks one that is fast and wrong. The number that decides it is the two divided: seconds of wall clock per solution that passes. Across the 41 coding tasks (research excluded), 3 trials each at temperature 0 — timed end to end, failures included, because a wrong answer costs you its generation time too.
| model | type | C min | Python min | Bash min | total min | per attempt |
|---|---|---|---|---|---|---|
| qwen3-coder-30b | MoE | 0.5 | 0.2 | 0.2 | 0.9 | 0.4 |
| laguna-xs.2 | MoE | 0.5 | 0.2 | 0.2 | 1.0 | 0.5 |
| qwen3-coder-next 80B | MoE | 0.7 | 0.3 | 0.3 | 1.2 | 0.6 |
| mistral-small-4 119B | MoE | 0.7 | 0.3 | 0.3 | 1.3 | 0.6 |
| qwen3.5-35b | MoE | 0.8 | 0.3 | 0.3 | 1.4 | 0.7 |
| qwen3.6-35b | MoE | 0.8 | 0.3 | 0.3 | 1.4 | 0.7 |
| glm-4.7-flash | MoE | 0.8 | 0.3 | 0.4 | 1.5 | 0.7 |
| k2-horizon 36B-A4B | MoE | 0.9 | 0.3 | 0.3 | 1.6 | 0.8 |
| gemma-4-26b | MoE | 0.9 | 0.4 | 0.4 | 1.7 | 0.8 |
| laguna-s 2.1 117B | MoE | 1.1 | 0.4 | 0.4 | 1.8 | 0.9 |
| devstral-2 24b | dense | 1.5 | 0.6 | 0.4 | 2.6 | 1.3 |
| nemotron-3-super 120B | MoE | 1.4 | 0.6 | 0.6 | 2.6 | 1.3 |
| qwen3.8-flash-next 125B | MoE | 1.7 | 0.7 | 0.6 | 3.0 | 1.5 |
| qwen3.5-122b-a10b | MoE | 1.7 | 0.6 | 0.8 | 3.1 | 1.5 |
| gpt-oss-120b | MoE | 1.6 | 0.7 | 1.2 | 3.5 | 1.7 |
| aya-23 35b | dense | 2.1 | 0.9 | 0.9 | 3.9 | 1.9 |
| qwen3.8-27b | dense | 2.3 | 1.1 | 0.9 | 4.4 | 2.1 |
| qwen3.6-27b | dense | 2.7 | 1.0 | 1.0 | 4.6 | 2.3 |
| qwen3.5-27b | dense | 3.2 | 1.1 | 0.9 | 5.2 | 2.5 |
| gpt-oss-20b | MoE | 2.2 | 1.1 | 1.9 | 5.2 | 2.6 |
| seed-oss 36b | dense | 36.9 | 17.0 | 19.7 | 73.5 | 35.8 |
Those totals are everything the model spent, right or wrong. Dividing by the answers that actually worked gives the figure below. first try is trial 1 alone, the honest number if you paste the first thing you get. with retry re-asks only when the previous attempt failed and stops at the first pass, so unused retries cost nothing — what a loop around the model really costs.
| model | type | first try | sec/solution | with retry | sec/solution | retry gain | rank |
|---|---|---|---|---|---|---|---|
| qwen3.8-flash-next 125B | MoE | 38/41 | 1.6s | 38/41 | 1.9s | +0 | 1 frontier |
| laguna-s 2.1 117B | MoE | 36/41 | 1.0s | 36/41 | 1.3s | +0 | 2 frontier |
| laguna-xs.2 | MoE | 33/41 | 0.6s | 35/41 | 0.8s | +2 | 3 frontier |
| gpt-oss-120b | MoE | 37/41 | 1.9s | 38/41 | 2.4s | +1 | 4 beaten |
| gpt-oss-20b | MoE | 34/41 | 2.9s | 38/41 | 4.0s | +4 | 5 beaten |
| qwen3.5-35b | MoE | 34/41 | 0.8s | 34/41 | 1.1s | +0 | 6 beaten |
| gemma-4-26b | MoE | 34/41 | 1.1s | 34/41 | 1.4s | +0 | 7 beaten |
| nemotron-3-super 120B | MoE | 34/41 | 1.6s | 34/41 | 2.2s | +0 | 8 beaten |
| qwen3.8-27b | dense | 33/41 | 2.6s | 33/41 | 4.1s | +0 | 9 beaten |
| qwen3.6-27b | dense | 33/41 | 2.8s | 33/41 | 4.6s | +0 | 10 beaten |
| qwen3-coder-next 80B | MoE | 32/41 | 0.8s | 32/41 | 1.3s | +0 | 11 beaten |
| qwen3.6-35b | MoE | 32/41 | 0.9s | 32/41 | 1.4s | +0 | 12 beaten |
| k2-horizon 36B-A4B | MoE | 30/41 | 1.0s | 32/41 | 1.6s | +2 | 13 beaten |
| seed-oss 36b | dense | 29/41 | 50.4s | 32/41 | 78.3s | +3 | 14 beaten |
| glm-4.7-flash | MoE | 31/41 | 1.0s | 31/41 | 1.7s | +0 | 15 beaten |
| devstral-2 24b | dense | 31/41 | 1.7s | 31/41 | 3.0s | +0 | 16 beaten |
| qwen3.5-122b-a10b | MoE | 31/41 | 2.0s | 31/41 | 3.5s | +0 | 17 beaten |
| qwen3-coder-30b | MoE | 30/41 | 0.6s | 30/41 | 1.0s | +0 | 18 beaten |
| mistral-small-4 119B | MoE | 29/41 | 0.9s | 30/41 | 1.5s | +1 | 19 beaten |
| qwen3.5-27b | dense | 30/41 | 3.5s | 30/41 | 6.4s | +0 | 20 beaten |
| aya-23 35b | dense | 21/41 | 3.7s | 21/41 | 8.6s | +0 | 21 beaten |
Rank is the frontier first (most solutions, then cheapest), then everyone else. beaten means another model is at least as accurate and cheaper — drop it.
kimi-k3 (referee) is not in these tables: the cost here is generation wall-clock, and the referee is a hosted cloud model whose solutions were written in-session, not generated through the harness — there is no timing to report.