TinkerLab
01 // HOMELABNVIDIA GPUStreaming / API~14 min read & lab

128GB vs 192GB Unified-Memory AI PCs (Fall 2026): NVIDIA RTX Spark (N1X · Windows on ARM) vs AMD Ryzen AI Max+ PRO 495 (Gorgon Halo) — Model Fit, Decode Ceilings & a Reproduction Protocol

RTX Spark laptops/mini desktops (shipping since mid-October 2026) and Ryzen AI Max+ 400 "Gorgon Halo" mini PCs both promise "run 100B+ models locally". The real difference is not TOPS: it is ~300 GB/s vs ~273 GB/s memory bandwidth (decode speed), CUDA Tensor Cores vs RDNA 3.5 (prefill speed), and 128GB vs 160GB GPU-addressable memory (whether Qwen3-235B-A22B Q4 fits at all). This guide derives decode ceilings from published specs, marks every number as an estimate, and ships a script so you can replace our estimates with your own measurements.

[SPEC-DERIVED TAKEAWAY / TL;DR][Evidence level: spec-derived estimate, not lab-measured] "128GB vs 192GB Unified-Memory AI PCs (Fall 2026): NVIDIA RTX Spark (N1X · Windows on ARM) vs AMD Ryzen AI Max+ PRO 495 (Gorgon Halo) — Model Fit, Decode Ceilings & a Reproduction Protocol" (spec basis: Spec basis (not lab-measured): NVIDIA RTX Spark N1X top bin (20-core Grace ARM CPU + Blackwell GPU 6,144 CUDA cores · up to 128GB LPDDR5X 256-bit · ~300 GB/s reported) vs AMD Ryzen AI Max+ PRO 495 (16C Zen 5 + Radeon 8065S 40CU RDNA 3.5 gfx1151 · up to 192GB LPDDR5X-8533 256-bit · ~273 GB/s · up to 160GB GPU-allocatable); suggested stack: llama.cpp master (2026-11) — CUDA ARM64 build on RTX Spark; Vulkan (RADV) or ROCm build on gfx1151, vLLM — Windows ARM64 community port (NVFP4) on RTX Spark; Linux ROCm build on Gorgon Halo, Ollama (latest stable, used only as a sanity-check runner), Models: Qwen3-30B-A3B / Qwen3-32B / Llama-3.3-70B / Qwen3-Next-80B-A3B / Qwen3-235B-A22B (GGUF Q4_K_M unless noted); specs checked 2026-11-05): RTX Spark laptops/mini desktops (shipping since mid-October 2026) and Ryzen AI Max+ 400 "Gorgon Halo" mini PCs both promise "run 100B+ models locally". The real difference is not TOPS: it is ~300 GB/s vs ~273 GB/s memory bandwidth (decode speed), CUDA Tensor Cores vs RDNA 3.5 (prefill speed), and 128GB vs 160GB GPU-addressable memory (whether Qwen3-235B-A22B Q4 fits at all). This guide derives decode ceilings from published specs, marks every number as an estimate, and ships a script so you can replace our estimates with your own measurements. Offline capability: "Fully Offline After Model Download" (Both platforms run llama.cpp/vLLM entirely on local unified memory. Windows Copilot / OEM AI assistants preinstalled on RTX Spark devices are cloud-hybrid by default and are out of scope here.).
REPRODUCIBILITY MANIFEST // SPEC ESTIMATE & PROTOCOL
Spec estimate · not lab-measured · specs checked 2026-11-05
Spec Basis Hardware (Not Lab-Measured)

Spec basis (not lab-measured): NVIDIA RTX Spark N1X top bin (20-core Grace ARM CPU + Blackwell GPU 6,144 CUDA cores · up to 128GB LPDDR5X 256-bit · ~300 GB/s reported) vs AMD Ryzen AI Max+ PRO 495 (16C Zen 5 + Radeon 8065S 40CU RDNA 3.5 gfx1151 · up to 192GB LPDDR5X-8533 256-bit · ~273 GB/s · up to 160GB GPU-allocatable)

Pinned Stack & Model Versions
llama.cpp master (2026-11) — CUDA ARM64 build on RTX Spark; Vulkan (RADV) or ROCm build on gfx1151vLLM — Windows ARM64 community port (NVFP4) on RTX Spark; Linux ROCm build on Gorgon HaloOllama (latest stable, used only as a sanity-check runner)Models: Qwen3-30B-A3B / Qwen3-32B / Llama-3.3-70B / Qwen3-Next-80B-A3B / Qwen3-235B-A22B (GGUF Q4_K_M unless noted)
Offline & Network Boundary
Fully Offline After Model Download

Both platforms run llama.cpp/vLLM entirely on local unified memory. Windows Copilot / OEM AI assistants preinstalled on RTX Spark devices are cloud-hybrid by default and are out of scope here.

Known Limits & Failure Modes
  • Evidence level: SPEC-DERIVED ESTIMATE. Tinker has not yet run these two machines in-house; every tok/s number below is computed as bandwidth × 0.68 ÷ active-weight bytes (the same formula as our VRAM calculator). Run the attached script and treat your own numbers as authoritative.
  • NVIDIA has not published an official memory-bandwidth figure for RTX Spark; ~300 GB/s comes from press reports of a 256-bit LPDDR5X-9400/9600 interface. Lower-RAM SKUs (24GB/32GB) may ship with a narrower bus — check your exact model.
  • On Gorgon Halo, the 160GB GPU allocation is a BIOS/driver setting (Windows: AMD Variable Graphics Memory; Linux: amdgpu GTT/TTM limits). Out-of-the-box defaults are usually far lower.
  • Windows on ARM: Python/PyTorch wheels must be native ARM64. An x64 Python interpreter running under Prism emulation silently falls back to CPU-only inference.
Hit an edge-case failure?Open Troubleshooter →

1. What Actually Changed This Fall: Two 256-bit Unified-Memory Platforms, Two Very Different Software Stacks

Both chips share the same fundamental shape as last year's DGX Spark (GB10) and Strix Halo (Max+ 395): a 256-bit LPDDR5X bus feeding CPU and GPU from one pool. That means **decode speed on large models is capped by memory bandwidth, not by TOPS marketing**. What is genuinely new: (1) **RTX Spark brings CUDA to Windows on ARM** in a 45–80W laptop / ~140W desktop envelope — native CUDA-X, TensorRT-LLM, llama.cpp recipes, and a community vLLM ARM64 port with NVFP4; (2) **Gorgon Halo raises the ceiling from 128GB to 192GB** (up to 160GB GPU-allocatable) and bumps memory to LPDDR5X-8533 (~273 GB/s, +6.6% vs Max+ 395), but keeps the same RDNA 3.5 40CU GPU without dedicated matrix cores. In practice: RTX Spark wins on prompt processing and tooling breadth; Gorgon Halo wins on the single question "does a 235B MoE at Q4 fit in GPU memory at all?"
Table 1: Spec comparison relevant to local LLMs (sources: NVIDIA / AMD launch materials and press coverage, Oct–Nov 2026)
ItemNVIDIA RTX Spark (N1X top bin)AMD Ryzen AI Max+ PRO 495Why it matters
Max memory / GPU-addressable128GB / ~110GB practical (est.)192GB / up to 160GB (configured)Decides which models fit without CPU offload
Memory bandwidth~300 GB/s (reported, unofficial)~273 GB/s (LPDDR5X-8533 × 256-bit)Caps decode tok/s on dense & large-active models
GPU matrix hardwareBlackwell 5th-gen Tensor Cores (FP4/NVFP4)RDNA 3.5 WMMA (no dedicated matrix cores)Prefill / long-prompt speed; batch throughput
OS / runtime pathWindows 11 ARM64 (CUDA, TensorRT-LLM, llama.cpp, vLLM port) or WSL2Windows x64 (Vulkan / Lemonade) or Linux (ROCm, Vulkan RADV)x64-only tools need emulation on RTX Spark
Power envelope45–80W laptop · up to ~140W desktop45–120W cTDP (55W nominal)Sustained decode in thin laptops drops when throttled

2. Model Fit & Decode Ceilings (Estimated, Not Measured)

Decode (token generation) on unified-memory machines is almost purely a memory-read problem: each new token must stream the **active** weights once. We therefore estimate `ceiling = bandwidth ÷ active_bytes` and `expected ≈ ceiling × 0.68` (the efficiency factor our VRAM calculator uses, consistent with what we measured on Strix Halo and DGX Spark earlier this year). MoE models with ~3B active parameters are the big winners on both machines; dense 70B is painful on both. The one row where the platforms diverge qualitatively is Qwen3-235B-A22B: at Q4_K_M (~142GB) it only fits on the 192GB Gorgon Halo box with a 160GB GPU carve-out; on 128GB RTX Spark you must drop to ~Q2_K (~86GB) and accept the quality loss.
Table 2: ESTIMATED decode tok/s (single request, ≤8K context). ceiling = BW ÷ active GB; expected = ceiling × 0.68. Replace with your own measurements.
Model (GGUF)File size / active per tokenRTX Spark 128GB (~300 GB/s)Max+ PRO 495 192GB (~273 GB/s)
Qwen3-30B-A3B Q4_K_M~18.6 GB / ~2.0 GBfits · ceiling ~150 · expected ~100 tok/sfits · ceiling ~136 · expected ~93 tok/s
Qwen3-32B (dense) Q4_K_M~19.8 GB / ~19.8 GBfits · ceiling ~15 · expected ~10 tok/sfits · ceiling ~14 · expected ~9 tok/s
Llama-3.3-70B (dense) Q4_K_M~42.5 GB / ~42.5 GBfits · ceiling ~7 · expected ~4.8 tok/sfits · ceiling ~6.4 · expected ~4.4 tok/s
Qwen3-Next-80B-A3B Q4_K_M~48 GB / ~1.8 GBfits · ceiling ~165 · expected ~110 tok/s*fits · ceiling ~150 · expected ~100 tok/s*
Qwen3-235B-A22B Q4_K_M~142 GB / ~13.2 GB**does not fit** (use Q2_K ~86 GB: expected ~25 tok/s, lower quality)fits with 160GB carve-out · ceiling ~21 · expected ~14 tok/s
[WARNING]* Hybrid-attention / linear-attention architectures such as Qwen3-Next depend on backend kernel maturity; real numbers may fall well below the bandwidth ceiling until CUDA-ARM64 / ROCm gfx1151 kernels are optimized. Prefill is compute-bound and is NOT estimated here — expect RTX Spark to lead clearly thanks to Tensor Cores, but measure it with the script below.

3. Reproduction Protocol: Measure Instead of Trusting Anyone's Table (Including Ours)

Use the same fixed protocol on both machines so results are comparable: identical GGUF files (verify SHA256), `llama-bench` with `-p 2048 -n 128 -r 3`, flash attention on, and a 10-minute sustained run to expose thermal throttling on laptops. On RTX Spark, confirm you are running a native ARM64 build (`file llama-bench.exe` / Task Manager "Architecture" column shows ARM64) and that CUDA sees the GPU. On Gorgon Halo, confirm the GPU carve-out actually took effect before loading anything above ~96GB.
Fixed benchmark protocol (run identically on both machines)
# 0) Same model file on both machines — verify the hash first
sha256sum Qwen3-30B-A3B-Q4_K_M.gguf

# 1a) RTX Spark (Windows 11 ARM64, PowerShell): confirm native ARM64 + CUDA
#     python -c "import platform; print(platform.machine())"   # must print ARM64
#     nvidia-smi --query-gpu=name,memory.total --format=csv

# 1b) Gorgon Halo (Linux): confirm GPU-addressable memory after raising GTT/TTM limits
cat /sys/class/drm/card*/device/mem_info_gtt_total | awk '{printf "GTT: %.1f GB\n", $1/1024/1024/1024}'

# 2) Throughput: prompt 2048 / generate 128, 3 repetitions, flash attention on
./llama-bench -m Qwen3-30B-A3B-Q4_K_M.gguf -ngl 99 -fa 1 -p 2048 -n 128 -r 3 -o md

# 3) Sustained decode (10 min) — exposes laptop thermal throttling
timeout 600 ./llama-cli -m Qwen3-30B-A3B-Q4_K_M.gguf -ngl 99 -fa \
  -n -1 --ignore-eos -p "Write a long technical report about memory bandwidth." \
  2>&1 | tail -n 5
FIELD Q&A // 常见实测疑问与边界解答

Frequently Asked Questions & Edge Cases

Q: If I mainly run ~30B MoE coding models, which one should I buy?

For 30B-A3B-class MoE models the two are within ~10% on decode (bandwidth-bound), so the decision is about everything else: RTX Spark if you want CUDA tooling, faster prefill on long code contexts, and a thin laptop; Gorgon Halo if you need x64 Windows/Linux compatibility or plan to grow into 200B+ MoE models that need more than 128GB.

Q: Is the 192GB Gorgon Halo just a 128GB Strix Halo with more RAM?

Mostly yes for LLM inference: same 40CU RDNA 3.5 GPU class and gfx1151 target, ~6.6% more bandwidth (8533 vs 8000 MT/s). If your target models already fit in 96–110GB, an existing Max+ 395 box gives nearly the same tok/s. The upgrade only pays off when you need the extra ~50–60GB of GPU-addressable memory.

Q: Why do you publish estimates instead of benchmarks for this guide?

Because we have not run these two machines in-house yet, and we would rather label a number as an estimate than invent a "measured" figure. The guide is marked SPEC-ESTIMATE in its manifest; when we get hardware time, we will replace Table 2 with measured results and update the verified date.

REPRODUCIBLE ARTIFACT // 配套可参数化附件

RTX Spark / Gorgon Halo Unified-Memory Fixed Benchmark (llama-bench + sustained decode)

Verifies model SHA256, reports platform (ARM64/CUDA or gfx1151 GTT size), runs llama-bench pp2048/tg128 ×3 and a sustained decode run, and writes a Markdown result file so you can replace the guide estimates with measured numbers. Run under Linux, WSL2, or Git Bash on Windows.

bench-unified-memory-ai-pc.sh ↗
Edit variables above to update the configuration live
#!/usr/bin/env bash
# Tinker AI — Unified-Memory AI PC Fixed Benchmark: RTX Spark (N1X) / Ryzen AI Max+ PRO 495 (Guide #37)
set -euo pipefail

MODEL="./models/Qwen3-30B-A3B-Q4_K_M.gguf"
BIN="./build/bin"
SUSTAIN="600"
OUT="bench-$(hostname)-$(date +%Y%m%d-%H%M).md"

echo "=== [1/4] Model integrity ==="
sha256sum "$MODEL" | tee -a "$OUT"

echo "=== [2/4] Platform snapshot ==="
{
  echo "- arch: $(uname -m)"
  if command -v nvidia-smi >/dev/null 2>&1; then
    echo "- gpu: $(nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader)"
  fi
  for f in /sys/class/drm/card*/device/mem_info_gtt_total; do
    [ -r "$f" ] && echo "- amdgpu GTT total: $(awk '{printf "%.1f GB", $1/1024/1024/1024}' "$f")"
  done
} | tee -a "$OUT"

echo "=== [3/4] llama-bench pp2048 / tg128 x3 (flash attention on) ==="
"$BIN/llama-bench" -m "$MODEL" -ngl 99 -fa 1 -p 2048 -n 128 -r 3 -o md | tee -a "$OUT"

echo "=== [4/4] Sustained decode for $SUSTAIN s (thermal check) ==="
timeout "$SUSTAIN" "$BIN/llama-cli" -m "$MODEL" -ngl 99 -fa -n -1 --ignore-eos \
  -p "Write a long technical report about memory bandwidth and local LLM inference." \
  2>&1 | grep -E "eval time|tokens per second" | tail -n 3 | tee -a "$OUT" || true

echo "Results written to $OUT — compare against Table 2 estimates in the guide."

More Reproducible Engineering Guides

View All 42 Guides →