Skip to main content

gpt-oss 20B on Surface Laptop Ultra (RTX Spark) vs DGX Spark: tok/s by Config

Published gpt-oss 20B runs put the RTX Spark laptop at 58-59 tok/s in Ollama and a GB10 desktop at about 80 tok/s in llama.cpp. Here is what each memory configuration can hold.

gpt-oss 20B runs at 58-59 tok/s on the Surface Laptop Ultra (RTX Spark) per StorageReview, against ~80 tok/s on DGX Spark. Memory configs and 120B fit.

gpt-oss 20B on Surface Laptop Ultra (RTX Spark) vs DGX Spark: tok/s by Config

gpt-oss 20B runs at 58.0 tok/s at 64K context and 59.2 tok/s at 128K context on the Microsoft Surface Laptop Ultra (RTX Spark N1X, 20-core) in Ollama, per StorageReview's Surface Laptop Ultra review. The desktop alternative, a GB10 box such as the ASUS Ascent GX10, reaches 79.74 tok/s in llama.cpp at a 2,048-token context, per llama.cpp discussion #16578 as compiled by JetsonHacks.

Who this page is for

This page is for a buyer choosing between two NVIDIA Grace Blackwell machines for local gpt-oss work. One is a Windows-on-Arm laptop built on the new RTX Spark N1X superchip. The other is a GB10 "DGX Spark" desktop box with 128 GB of unified memory.

The Surface Laptop Ultra went on sale in mid-October 2026, and the first reviews arrived that week. Tom's Hardware's Surface Laptop Ultra review titles its verdict "impresses in local AI, but gaming isn't its strong suit." That framing sets up the question here: if local AI is the reason to buy the laptop, how does it compare with the desktop GB10 boxes that have been shipping since late 2025?

According to StorageReview, the Surface Laptop Ultra ships with 24 GB, 32 GB, 48 GB, 64 GB or 128 GB of soldered LPDDR5X. The base configuration (18-core, 24 GB, 512 GB) starts at $2,599.99, and the reviewed 20-core, 128 GB, 1 TB unit lists at $5,899.99 on Microsoft's consumer store. The memory runs at LPDDR5-9400 on a 256-bit bus, about 300 GB/s theoretical. The GB10 in the ASUS Ascent GX10 and MSI EdgeXpert is fixed at 128 GB and 273 GB/s, per its hardware page.

The numbers below come from five public sources, cited row by row. None of them is a SpecPicks measurement. Where two rows use different runtimes or context lengths, the article says so, because those differences move the result as much as the silicon does.

If you are still deciding which model to run, start with the best GPU for gpt-oss 20B. If you already own a desktop with a 12 GB card, read gpt-oss 20B on an RTX 3060 12GB vs a Ryzen 5 5600G first.

Key Takeaways

  • Surface Laptop Ultra, Ollama: 58.0 tok/s at 64K and 59.2 tok/s at 128K context for gpt-oss 20B (StorageReview). Context length barely moved the figure.
  • Another N1X laptop, LM Studio: 68.86 tok/s on an ASUS ProArt P16 with 64 GB (Wccftech).
  • GB10 desktop, llama.cpp: 82.74 tok/s generation and 3,670 tok/s prefill (NVIDIA Developer Blog); 79.74 / 3,610 tok/s in the community run (llama.cpp #16578).
  • GB10 in Ollama is slower than either laptop figure: 49.7 tok/s (LMSYS). Runtime choice matters as much as the chip.
  • gpt-oss 120B needs the 128 GB tier. Its GGUF files run 62.6–65.4 GB (Unsloth on Hugging Face). No N1X run has been published; GB10 manages 60.57 tok/s (llama.cpp #16578).
  • The laptop runs at a lower power budget: the N1X laptop parts have a 45–80 W TDP, against 140 W for the desktop N1X and GB10 (StorageReview).

Benchmark table first: gpt-oss 20B tok/s on RTX Spark and GB10

Every published gpt-oss 20B run for both chips, as of October 22, 2026. Full per-chip lists are on /benchmarks/nvidia-rtx-spark-n1x-20-core and /benchmarks/nvidia-gb10-dgx-spark.

MachineRuntimeContextGen tok/sPrefill tok/sSource
Surface Laptop Ultra (N1X 20-core)Ollama64K58.0not reportedStorageReview
Surface Laptop Ultra (N1X 20-core)Ollama128K59.2not reportedStorageReview
ASUS ProArt P16 (N1X 20-core, 64 GB)LM Studio3,070-token prompt68.86not reportedWccftech
GB10 (DGX Spark), MXFP4llama.cpp2,04882.743,670NVIDIA Developer Blog
GB10 (DGX Spark), MXFP4llama.cpp (b6767)2,04879.743,610llama.cpp #16578 via JetsonHacks
GB10 (DGX Spark), MXFP4Ollamanot stated49.72,053LMSYS

Sources: StorageReview, Wccftech, NVIDIA Developer Blog, JetsonHacks compilation of llama.cpp #16578, LMSYS.

Two notes on reading this table. First, the StorageReview figures come from a Codex CLI coding-agent workload served through Ollama, not from a synthetic llama-bench loop, so they include real agent prompts. Second, the closest same-runtime comparison is Ollama against Ollama: 58–59 tok/s on the Surface against 49.7 tok/s on GB10. On that basis the laptop is not slower. In llama.cpp, the runtime most GB10 numbers use, no N1X gpt-oss 20B figure has been published yet.

What does gpt-oss need in memory at each quantization?

OpenAI shipped both gpt-oss models with their mixture-of-experts weights already in MXFP4. The gpt-oss-120b model card lists the 20B model at 21B total and 3.6B active parameters, running "within 16GB of memory," and the 120B model at 117B total and 5.1B active parameters, fitting "a single 80GB GPU." Because the expert weights are already 4-bit, re-quantizing barely changes file size. Unsloth's GGUF builds show it:

Formatgpt-oss 20B filegpt-oss 120B fileSurface Laptop Ultra tier that fitsGB10 box (128 GB)
Q4_K_M GGUF11.6 GB62.8 GB20B: 32 GB and up; 120B: 128 GB onlyBoth fit
Q8_0 GGUF12.1 GB63.4 GB20B: 32 GB and up; 120B: 128 GB onlyBoth fit
F16 GGUF (MXFP4 experts kept)13.8 GB65.4 GB20B: 32 GB and up; 120B: 128 GB onlyBoth fit

Sources: Unsloth gpt-oss-20b-GGUF, Unsloth gpt-oss-120b-GGUF. The tier column is this synthesis's reading of those file sizes against the configurations StorageReview lists, with headroom left for Windows and the KV cache.

The 24 GB tier is the doubtful one. Unified memory is split between the CPU and GPU. StorageReview's Lenovo Pro 9n 15 review did not run gpt-oss 20B on the 18-core N1X because the model needed 12.8 GB and the machine's GPU split was 12 GB. A 24 GB Surface may land in the same position, depending on how the split is configured.

Which Surface Laptop Ultra memory config should you buy for gpt-oss?

Memory is soldered, so buy for the largest model you expect to run, not the one you run today.

  • gpt-oss 20B only: 32 GB is the practical floor, and 48 GB leaves room for a 128K-token KV cache plus a browser and IDE. StorageReview's 128K run (59.2 tok/s) used the 128 GB unit with a 64/64 split and 62.5 GB usable by the GPU, so it does not show where smaller configurations top out.
  • gpt-oss 20B plus mid-size MoE models: 64 GB. That is the configuration Wccftech ran on the ProArt P16, where it measured 52.72 tok/s on Gemma 4 26B-A4B and 70.27 tok/s on GLM-4.7-Flash (Wccftech).
  • gpt-oss 120B: 128 GB, the only tier that holds a 63 GB model with context to spare. StorageReview notes the user can assign up to 96 GB of the 128 GB to the GPU.

State it plainly: no published gpt-oss 120B run on the N1X exists yet. The closest reference with the same memory is the GB10 at 60.57 tok/s in llama.cpp (build 6922, Fedora 43, per llama.cpp #16578). NVIDIA's own figure is 55.37 tok/s (NVIDIA Developer Blog). A laptop held to a 45–80 W budget is more likely to land at or below those figures than above them.

Does context length slow the RTX Spark down?

On StorageReview's data, not much. The Surface ran gpt-oss 20B at 58.0 tok/s at 64K and 59.2 tok/s at 128K (StorageReview). The two runs used different Codex CLI workload tiers (S and M), so treat the 1.2 tok/s gap as noise rather than proof that longer context is faster.

The GB10 figures come from a different setup. The 79.74 tok/s llama.cpp result is measured at depth 0 with a 2,048-token prompt. The same JetsonHacks compilation notes that generation falls to about 56 tok/s at 32K depth (JetsonHacks). Once both machines hold a long context, the gap between them shrinks to a few tok/s. That matters more than the headline 80-vs-58 gap if your use is a coding agent dragging a large repository context from turn to turn.

The caveat: StorageReview's "context" is the allocated context window, while llama.cpp's "depth" is the number of tokens actually in the cache. They are close cousins but not identical, and neither source ran the other's setup.

Prefill vs generation: why it matters for RAG and coding agents

Generation speed decides how fast the answer streams. Prefill speed decides how long you wait before the first token, and that wait grows with prompt length.

On GB10, gpt-oss 20B prefills at 3,610–3,670 tok/s at a 2,048-token prompt (llama.cpp #16578; NVIDIA). At that rate a 30,000-token prompt (a mid-size codebase slice or a long RAG bundle) takes roughly eight seconds before the first output token. Prefill rates usually fall as the prompt grows, so treat that as a best case.

No gpt-oss 20B prefill figure has been published for the N1X. The nearest data point is Phi-4-mini in StorageReview's 2,000-question RAG workload on the Surface, which prefilled at 6,955 tok/s with a 161 ms median time to first token (StorageReview). Phi-4-mini is a 3.8B dense model, so that number cannot be transferred to gpt-oss, but it shows the N1X's GPU is not starved for prompt-processing compute. StorageReview also recorded a 6.57 s cold load before the first gpt-oss 20B token, a one-time cost per model load that agent workflows hit after every model swap.

For RAG pipelines and agentic coding, prefill usually dominates wall-clock time, and GB10 has the larger published prefill numbers and the higher 140 W power budget. For chat, both machines feel instant.

Every other benchmark published for these chips

All rows below come from the SpecPicks benchmark database, each tied to its source. Model tags follow the source's naming.

Chip / machineModelRuntimeGen tok/sSource
N1X 20-core (Surface)Qwen 3.6 35B-A3B, 64KOllama89.2StorageReview
N1X 20-core (Surface)Phi-4-miniOllama102.7StorageReview
N1X 20-core (Surface)Llama 3.1 8B (MLPerf Client)llama.cpp56.4StorageReview
N1X 20-core (ProArt P16)GLM-4.7-FlashLM Studio70.27Wccftech
N1X 20-core (ProArt P16)Gemma 4 26B-A4BLM Studio52.72Wccftech
N1X 20-core (ProArt P16)Nemotron 3.5 Bolt 74BLM Studio37.67Wccftech
N1X 20-core (ProArt P16)Qwen 3.8 27BLM Studio26.32Wccftech
N1X 18-core (Lenovo Pro 9n 15)Llama 3.1 8B (MLPerf Client)llama.cpp55.1StorageReview (Lenovo)
GB10 (DGX Spark)gpt-oss 120Bllama.cpp60.57llama.cpp #16578
GB10 (DGX Spark)Qwen3-Coder 30B-A3B Q8_0llama.cpp59.95JetsonHacks
GB10 (DGX Spark)Llama 3.1 70B FP8SGLang2.7LMSYS
GB300 (DGX Station)gpt-oss 20B, one streamvLLM536StorageReview (ASUS ET900N G3)

Sources: StorageReview Surface review, StorageReview Lenovo review, Wccftech, llama.cpp #16578, JetsonHacks, LMSYS, StorageReview ASUS ExpertCenter Pro ET900N G3. Per-chip pages: N1X 18-core, GB300 DGX Station.

The Qwen 3.6 35B-A3B result (89.2 tok/s) is the one to notice. It is a larger file than gpt-oss 20B but has fewer active parameters per token (3B against 3.6B), and on the Surface it ran faster. On these bandwidth-bound machines, active parameters predict generation speed better than total size. The GB300 row is a different class of machine, a workstation tower with HBM, included only to show the ceiling.

How it compares

MachineMemoryMemory bandwidthgpt-oss 20B tok/sLaunch price tier
Surface Laptop Ultra (N1X)24–128 GB LPDDR5X~300 GB/s theoretical58.0–59.2 (Ollama)Premium laptop band, $2.6K–$5.9K
ASUS Ascent GX10 (GB10)128 GB LPDDR5X273 GB/s79.74–82.74 (llama.cpp)Premium mini-PC band
MSI EdgeXpert (GB10)128 GB LPDDR5X273 GB/sSame GB10 silicon; no separate runPremium mini-PC band
BOSGAME M5 (Ryzen AI Max+ 395)128 GB LPDDR5X256 GB/s79.8 (llama.cpp, Vulkan)Upper mini-PC band
RTX 5090 desktop32 GB GDDR7 (GPU)1,792 GB/s298.2 (llama.cpp)GPU alone from $2K
RTX 3060 12GB desktop12 GB GDDR6 (GPU)360 GB/s64–75 (llama.cpp, light offload)Budget, under $350 at launch

Sources: Surface memory, bandwidth and price range from StorageReview. GB10 bandwidth and the DGX Spark's $4,699 list price from IntuitionLabs. Strix Halo bandwidth from AMD, its gpt-oss 20B figure from the kyuz0 Strix Halo grid, and the BOSGAME M5 128 GB/2 TB at $3,599 from ComputingForGeeks. RTX 5090 bandwidth and $1,999 MSRP from Wikipedia; its gpt-oss 20B figure from Hardware Corner. RTX 3060 bandwidth and $329 launch price from Wikipedia; its gpt-oss 20B figures from llama.cpp #15396. Live prices are on each product page and may vary.

The table makes one counter-intuitive point. The Surface has the most theoretical bandwidth of the three unified-memory machines, yet posts the lowest gpt-oss 20B figure. The published runs differ in runtime and context, and the laptop chip has roughly half the power budget, so this is not a like-for-like loss. It does mean the bandwidth spec alone will not tell you which box is faster.

Hardware that runs it

Budget: MSI Gaming GeForce RTX 3060 12GB. gpt-oss 20B's 11.6–13.8 GB files are just over 12 GB, so the card keeps a layer or two of experts on the CPU. In llama.cpp #15396 one owner reports 64 tok/s at 16K context with two layers offloaded and 75 tok/s at 2,048 tokens. It cannot run gpt-oss 120B without heavy offload. Benchmarks: /benchmarks/nvidia-geforce-rtx-3060-12-gb. See price & specs.

Mid: BOSGAME M5 (Ryzen AI Max+ 395, 128 GB). A 128 GB Strix Halo mini-PC. Per the kyuz0 grid it runs gpt-oss 20B at 79.8 tok/s and gpt-oss 120B at 56.6 tok/s, roughly GB10 speed on x86 Linux or Windows. The deeper write-up is in the Strix Halo local-LLM guide. See price & specs.

Pro: ASUS Ascent GX10 or MSI EdgeXpert. Both use the same GB10 superchip with 128 GB, NVIDIA's Linux-based CUDA software stack that the published GB10 numbers were run on. Pick on chassis, warranty and price. Benchmarks: /benchmarks/nvidia-gb10-dgx-spark. See price & specs.

Desktop ceiling: ASUS ROG Astral GeForce RTX 5090. If gpt-oss 20B is the largest model you need, a 32 GB RTX 5090 runs it at 298.2 tok/s with 9,443.8 tok/s prefill (Hardware Corner), several times either Spark. It cannot hold gpt-oss 120B in VRAM. Benchmarks: /benchmarks/nvidia-rtx-5090.

Common pitfalls

  1. Buying 24 GB for gpt-oss 20B. The model's GGUF files run 11.6–13.8 GB. A 12 GB GPU split was not enough on the 18-core Lenovo N1X laptop (StorageReview), and the memory cannot be upgraded later.
  2. Comparing across runtimes. GB10 is 49.7 tok/s in Ollama and 79.74 tok/s in llama.cpp on the same model (LMSYS; llama.cpp #16578). Compare like with like.
  3. Assuming every tool is native on Windows on Arm. StorageReview notes that x64 apps run through Prism emulation, that the official Windows-on-Arm OpenBLAS build caps at 12 threads, and that some Arm64 builds lack x64 optimizations (StorageReview). Ollama and llama.cpp ran natively with CUDA; check your Python stack before buying.
  4. Expecting desktop speed on battery. The laptop N1X has a 45–80 W TDP against 140 W for GB10 (StorageReview). The published runs do not report battery-only throughput.

When NOT to buy either

If you only run models up to about 30B and work at a desk, a desktop with an RTX 5090 is several times faster at gpt-oss 20B generation (298.2 tok/s per Hardware Corner). If you are on a tight budget, an RTX 3060 12GB runs gpt-oss 20B at usable speed, though not 120B. Neither Spark machine makes sense for batch serving many users; that is GB300 or datacenter territory.

Verdict matrix

Get the Surface Laptop Ultra if… you need gpt-oss 20B on the move, you are comfortable on Windows on Arm, and roughly 58–59 tok/s at 64K–128K context (StorageReview) is enough. Buy 48 GB or more for 20B, and 128 GB if 120B is on the roadmap.

Get a GB10 box if… the machine stays on a desk, you want the fastest published llama.cpp figures for both gpt-oss sizes (79.74 and 60.57 tok/s per llama.cpp #16578), and you want NVIDIA's Linux CUDA stack and a known 128 GB configuration.

Get an RTX 5090 desktop if… the largest model you run fits in 32 GB and you want the highest single-user speed.

Recommended pick: for a dedicated local-gpt-oss machine, a GB10 box such as the ASUS Ascent GX10 has the strongest published data, including the only gpt-oss 120B figures. The Surface Laptop Ultra is the pick when portability is required, at about 27% lower generation speed than GB10's best llama.cpp figure (58.0 against 79.74 tok/s) and no deficit in the Ollama-to-Ollama comparison.

Live price comparison

Compare the two GB10 boxes side by side at ASUS Ascent GX10 vs MSI EdgeXpert, or set the GX10 against the Strix Halo option on the compare page. Prices update from the retailer and may vary.

Citations and sources

Accessed 2026-10-22.

This piece is editorial synthesis based on publicly available information. No independent first-party benchmarking is reported.

Products mentioned in this article

Amazon & eBay listings, plus full specs and alternatives on each product page.

As an Amazon Associate, SpecPicks earns from qualifying purchases; we also earn on qualifying eBay purchases via the eBay Partner Network. Prices shown were last tracked at crawl time and may vary — check the listing for the current price.

Watch a review

I Got the GPU Made With LITERAL GOLD — Linus Tech Tips on YouTube

Frequently asked questions

Can the Surface Laptop Ultra run gpt-oss 120B?
Only the 128 GB memory configuration has room for it. Unsloth's GGUF builds of gpt-oss 120B run 62.6 to 65.4 GB before any KV cache, and StorageReview notes up to 96 GB of the 128 GB can be assigned to the GPU. No published N1X run of the 120B model exists yet. The closest same-memory reference is GB10 at 60.57 tok/s in llama.cpp discussion #16578, and a 45-80 W laptop may land below that figure.
Why is DGX Spark faster than the Surface Laptop Ultra on the same model?
The published runs differ in runtime and context. GB10's 79-83 tok/s figures come from llama.cpp at a 2,048-token context. StorageReview's 58-59 tok/s Surface figures come from Ollama at 64K-128K context. Ollama on GB10 itself measured 49.7 tok/s according to LMSYS, so runtime choice moves the result as much as the chip does. The laptop N1X also runs at 45-80 W, against 140 W for GB10.
Which Surface Laptop Ultra memory configuration should a local-LLM buyer pick?
For gpt-oss 20B, whose GGUF files run 11.6 to 13.8 GB, 32 GB is the practical floor and 48 GB leaves room for long context. 64 GB adds mid-size MoE models such as Gemma 4 26B-A4B. The 128 GB tier is the only one that holds 70B-to-120B-class models such as gpt-oss 120B or Nemotron 3.5 Bolt 74B, which Wccftech measured at 37.67 tok/s on N1X. Memory is soldered, so size for the largest model you expect to run.
Does Windows on Arm limit which local-LLM runtimes work?
The published N1X benchmarks used Ollama, llama.cpp and LM Studio, and StorageReview reports Ollama and llama.cpp ran as native Arm64 builds using CUDA on the Blackwell GPU. Other tools are less settled: x64 apps run through Prism emulation, and StorageReview found the official Windows-on-Arm OpenBLAS build capped at 12 threads. Check any CUDA-dependent Python tooling before buying.
Is an RTX 3060 12GB desktop a sensible alternative for gpt-oss 20B?
For a buyer on a budget, yes, with caveats. gpt-oss 20B's GGUF files are about 12 GB, so a 12 GB card keeps a layer or two of experts on the CPU. In llama.cpp discussion #15396 one owner reports 64 tok/s at 16K context that way. It cannot hold gpt-oss 120B without heavy offload, so choose it when cost matters more than portability or 120B-class headroom.

— Mike Perry · Updated 2026-10-22

Parts this article names

Amazon Associate — prices tracked 2026-10-22, may vary.