I am not sure if I can talk about this on Nvidia forum, but at least I do not see rule or announcement about not to, and saw other Nvidia linux forum talk about this unlocked cards, but no mention on this forum.
My intention is sharing info that there is some side step to achieve extra missing (alot of ) Vram that 2 x sparks or 4 x sparks to run upcoming getting bigger llm models, which is current trend.
So, basically getting 8 x Nvidia CMP 170hx 64GB HBM2e unlockable crytomining card. Well, fully going 16 cards is another option but this is Spark forum and I already invested 4 sparks + switch, then I come up with mixing them together. (and probably getting 1 or 2 cards for dense model or sub 120B model would be great option since it has 1.49T/s memory bandwidth)
I have bought 10 cards and paying about 1100 USD per piece ( I had been hesitated for a week and pulled trigger, so I was late to this party) and still in the middle of shipping.
I was planning to benchmark but I found recent one by done someone on GLM5.2 4 bit.
At the moment, 8 x 170hx cards can do 30 tg/s, 2600+ pp/s even with pcie 1 x 4 condition. Yet you can get pcie 2 x 16 max, but there is still chance to see 3 x 16 or more later.
So my plan is simple, 478ish UMA + 471 Vram
4 sparks - mikrotic switch - qsfp - 8 x 170hx single server
I do not have any expertise on how to optimize but later later I will just let Sol does job, I guess.
But on 5.6 pro’s simulation based on our forum’s benchmark and 170hx’s benchmark, 1.13T model (virtual 1.5x GLM5.2 but A48B) is fine.
like.. 128k ctx, c1: 1600 pp/s, 17 tg/s, c2: 2700 pp/s, 28 tg/s
1.49T model (virtual 2 x GLM5.2 but A56B) is barely doable TG/s.
like.. 128k ctx, c1: 1270 pp/s, 13 tg/s, c2: 2100 pp/s, 21 tg/s .
It’s just assumption + simulation, so nothing promising.
Nvlink might not be implemented even later, but hoping for TP possibility by faster pcie speed. then concurrency might be less problem.
So I am kinda hoping + gambling on it, but I see it’s about half price of adding another 4 sparks with trade off power consumption + less concurrency + noise vs speed + cheaper price.
original benchmark text below.
# CMP 170HX (unlocked, 64GB) — LLM + Diffusion Benchmark Results
8× unlocked 170HX, driver 610.43.02, sm_*80 (GA100), PCIe **Gen1 x4 (~1 GB/s)**, stock (no cap mod / no Gen2). Rented, July 2026.
---
## Raw compute (per-card, torch GEMM)
| precision | TFLOPS/TOPS | note |
|---|---|---|
| FP16 | **162.7** | tensor, unlocked |
| BF16 | **171.4** | tensor, unlocked |
| TF32 | 79.0 | tensor |
| FP32 | 12.6 | FMA restored (locked = 0.39) |
| FP64 | 11.6 | |
| **INT8**|**44.1 TOPS**|**STILL GATED** (3.7× slower than FP16; A100 = 2× faster) |
| HBM bandwidth | **1600 GB/s** | measured, above 1493 datasheet |
| VRAM integrity | 8/8 PASS | full byte-compare |
Per-card spread <2.5% across 8 cards. INT8/IMMA gated → **use W4A16, not W8A8**.
---
## GLM-5.2 (744B, 40B active, glm_moe_dsa) — THE headline
### vLLM + `TRITON_MLA_SPARSE` (PR #38476), PP8, W4A16 — **WORKS**
| ctx | prefill t/s |
|---|---|
| 4k | 665 |
| 32k | 1,497 |
| 65k | 2,342 |
| **131k**|**2,675** |
- **Decode (PP8, no MTP): 30.2 t/s**
- **KV capacity @0.92 util: 438,107 tokens** (BF16 KV; ~88–100 KB/token, MLA)
- Model load: ~440–620 s
- 315k prefill: **~2 min (extrapolated from 131k, not directly measured)**
- Prefill RISES with context (chunked prefill + sparse attn)
### llama.cpp (Q4_K_S GGUF, 8 cards, `-sm layer`) — **UNUSABLE**
| ctx | prefill t/s |
|---|---|
| 512 | 141 |
| 4k | 162 |
| 16k | 124 (degrades) |
- Decode: 17.2 t/s
- Cause: **no DSA — dense-attention fallback** (llama.cpp issue #24730). ~42 min for 315k prompt.
- `-sm layer` runs 1 GPU at a time (no chunked-prefill pipelining).
### TP8 (QuantTrio Int4-Int8Mix, enforce*_eager) — **BAD**
- Prefill 4k/16k/32k: 382 / 435 / 629 t/s (**~4× worse than PP8**)
- Decode: 3.4 t/s (eager) — OR crashes in CUDA-graph capture (vLLM #48285)
- MTP=ON: OOM
**GLM-5.2 verdict: PP8 only. PP prefill excellent, decode 30 t/s, no MTP.**
---
## Qwen3-Coder-480B-A35B (35B active, GQA) — vLLM PP, AWQ
| ctx | prefill t/s |
|---|---|
| 1k | 745 |
| 4k | 1,511 |
| 16k | 1,853 |
| 32k | 2,452 |
- Decode: **46.6 t/s** (untuned fused_*moe, no MTP). Standard GQA → runs on stock vLLM, no patched backend.
---
## Qwen2.5-72B dense (AWQ) — TP vs PP
| config | pp1k | pp4k | pp16k | decode |
|---|---|---|---|---|
| 1 card | 839 | 1,092 | 960 | 27.3 |
| PP2 | 829 | 1,084 | 1,167 | 29.1 |
| **TP2**|**316**|**420**|**416**|**33.7** |
**TP wrecks prefill (2.3–2.8× worse) for +23% decode. On Gen1 x4, PP mandatory.**
---
## Diffusion — 170HX vs RTX 3090 (identical script)
| test | 170HX | RTX 3090 | 170HX advantage |
|---|---|---|---|
| SDXL 1024² 30-step | 4.73 s (6.35 it/s), 10.5 GB | 7.59 s (3.95 it/s) | **1.60×** |
| Wan2.1-T2V 81f@480p | 73.4 s (0.91 s/f), 18.5 GB | 132.8 s (1.64 s/f) | **1.81×** |
| LTX-Video 81f | 11.0 s (0.14 s/f), 15.9 GB | 20.0 s (0.25 s/f) | **1.82×** |
| Wan2.1 129f@720p | 1,485 s, **33.3 GB**|**OOM (24 GB)** | runs vs can't |
---
## Best quants (sm_80)
- **USE:** W4A16 / AWQ / GPTQ (INT4 weights + BF16 activations → unlocked fast path)
- **AVOID:** W8A8 / INT8 (gated IMMA, 44 TOPS), FP8 / NVFP4 (need sm_89+/sm_120 tensor cores)
- **GLM-5.2 on vLLM: SYMMETRIC quant REQUIRED** (MoE kernels reject asymmetric):
- ✅ `lowbitcoffee/GLM-5.2-W4A16` (sym g128, 388 GB)
- ✅ `QuantTrio/GLM-5.2-Int4-Int8Mix`
- ❌ `cyankiwi/GLM-5.2-AWQ-INT4` (asym g32 — **FAILS**, and it's the one most guides cite)
- **KV: BF16 only** — FP8 KV unsupported by TRITON_MLA_SPARSE on sm_80
---
## Working GLM-5.2 vLLM recipe
```
pip install vllm==0.20.2 # release, for compiled* _C
# apply PR #38476 python files as a DIFF onto site-packages
**# (VLLM_USE_PRECOMPILED editable install ships NO vllm._C — will fail)
pip install -U transformers # need 5.x; 4.57 doesn't know glm_moe_dsa
export VLLM_ATTENTION_BACKEND=TRITON_MLA_SPARSE
export VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS=0
vllm ... --pipeline-parallel-size 8 --gpu-memory-utilization 0.90
# --block-size 64 auto-set by DEEPSEEK_V32_INDEXER
# max_model_*len MUST fit KV capacity or engine won't boot
```
---
## MTP
- MTP-head checkpoints **refuse PP** ("not SupportsPP") → MTP needs TP.
- TP8 crashes graph capture (#48285) → `enforce*_eager` → decode 3.4 t/s.**
- **No usable MTP on PP today.** General vLLM bug, fix in RFC #44697 (unmerged). If it lands: ~1.7× decode (30→~50 t/s) on PP8, no hardware mod.
---
## Stability
- **0 hard faults** across full session on a healthy host (hundreds of 60 s health samples).
- Transient "GPU requires reset" only at `gpu-mem-util 0.95` + huge ctx — **self-recovered**. Keep util ≤ 0.90.
- Repeatedly hard-killing multi-GPU jobs → ~32 zombie CUDA procs → **host CUDA runtime wedges** (`cuInit`=999 for all frameworks while nvidia-smi stays healthy). Unfixable inside a container; needs host reboot. Don't `kill -9` live multi-GPU jobs.
- Peak 60 °C @ 254 W under load.
---
## One-line summary
GLM-5.2 (744B DSA) **runs on 8× unlocked 170HX via vLLM PR #38476**: **2,675 t/s prefill @131k, 30 t/s decode, 438k ctx, 0 faults** — PP only, W4A16 symmetric quant, no MTP yet. Prefill is A100-class; decode is bandwidth-limited by PP. INT8 stays gated (use W4A16). Diffusion beats a 3090 by 1.6–1.8× with 64 GB headroom.
