CanRun

DGX Spark for local LLMs: what runs on 64GB, 128GB and two or four linked units

By CanRun · Updated October 23, 2026

The DGX Spark is NVIDIA's desktop built on its GB10 chip, sold with 64GB or 128GB of unified memory at the same bandwidth. In CanRun's calculation, the 128GB model holds gpt-oss-120b and Qwen3.5 122B-A10B on its GPU, while the 64GB model still holds Llama 3.3 70B at Q4_K_M with an 8k context, but not gpt-oss-120b. Linking two or four units adds memory for larger models, but with llama.cpp it does not make a model run faster.

What runs on one, two or four DGX Sparks

The grid shows six models on each of the six configurations the DGX Spark page lists: one unit with 64GB or 128GB, and two or four linked units of either size. Each cell is the verdict at an 8k context with an f16 (unquantized 16-bit) KV cache, the memory that holds the conversation so far, at each model's default quant. That is Q4_K_M, the 4-bit GGUF quant CanRun uses as its baseline, or MXFP4 for gpt-oss and DeepSeek V4 Flash 0731. Every model here except Llama 3.3 70B has a thinking mode, so CanRun rates those with 1.5× stricter speed thresholds. On a linked row, a model whose default quant already fits fully on the GPU of one unit with the same memory says “One unit is enough” instead of a verdict, because linking would only slow it down. The same rows appear on the NVIDIA DGX Spark page for every model in the catalog.

Verdicts at 8k context with an f16 KV cache. A row that names a memory size uses that configuration; PCs with a graphics card assume 32 GB of DDR5 system RAM and Windows. Speeds are estimates with an error band and a confidence label.
HardwareQwen3.6 35B-A3BGemma 4 31BLlama 3.3 70Bgpt-oss-120bQwen3.5 122B-A10BDeepSeek V4 Flash 0731
NVIDIA DGX Spark64 GB
Runs great
est. 70.5 tok/s56.4–84.6calibrated estimate ±20%
Runs slowly
10.1 tok/s8k estimate 11.2 tok/s (9.0–13.5, calibrated estimate ±20%)measured (1 run, 512 context)
Runs slowly
4.7 tok/s8k estimate 4.7 tok/s (3.8–5.7, calibrated estimate ±20%)measured (2 runs, 512 context)
Won't run—
Won't runTry UD-Q2_K_XL (heavy quality loss): Runs great
est. 34.9 tok/s27.9–41.9calibrated estimate ±20%
Won't run—
NVIDIA DGX Spark128 GB
Runs great
est. 70.5 tok/s56.4–84.6calibrated estimate ±20%
Runs slowly
10.1 tok/s8k estimate 11.2 tok/s (9.0–13.5, calibrated estimate ±20%)measured (1 run, 512 context)
Runs slowly
4.7 tok/s8k estimate 4.7 tok/s (3.8–5.7, calibrated estimate ±20%)measured (2 runs, 512 context)
Runs great
58.7 tok/s8k estimate 50.8 tok/s (40.6–60.9, calibrated estimate ±20%)measured (1 run, 2k context)
Runs well
29.0 tok/s8k estimate 24.0 tok/s (19.2–28.8, calibrated estimate ±20%)measured (1 run, 4k context)
Won't run—
NVIDIA DGX Spark64 GB × 2One unit is enoughOne unit is enoughOne unit is enough
Runs great
est. 40.5 tok/s28.3–52.6theoretical estimate ±30%
Runs well
est. 21.4 tok/s15.0–27.8theoretical estimate ±30%
Won't run—
NVIDIA DGX Spark128 GB × 2One unit is enoughOne unit is enoughOne unit is enoughOne unit is enoughOne unit is enough
Runs well
est. 17.2 tok/s12.1–22.4theoretical estimate ±30%
NVIDIA DGX Spark64 GB × 4One unit is enoughOne unit is enoughOne unit is enough
Runs well
est. 28.8 tok/s20.2–37.5theoretical estimate ±30%
Runs well
est. 17.6 tok/s12.3–22.9theoretical estimate ±30%
Runs well
est. 14.7 tok/s10.3–19.1theoretical estimate ±30%
NVIDIA DGX Spark128 GB × 4One unit is enoughOne unit is enoughOne unit is enoughOne unit is enoughOne unit is enough
Runs well
est. 14.7 tok/s10.3–19.1theoretical estimate ±30%

Rows marked “× 2” or “× 4” link two or four units over the built-in ConnectX-7 networking and run llama.cpp RPC, which splits the layers across the units. Memory adds up, but each token still passes through every unit, and every hop between units adds time to each token. So linking is never faster than CanRun’s one-unit estimate: in public runs, gpt-oss-120b ran about 20% slower on two units than on one. A model whose baseline quant already fits fully on the GPU of one unit with the same memory therefore shows “One unit is enough” on these rows instead of a verdict and speed. The verdicts on these rows are theoretical estimates (±30%). vLLM tensor parallelism, which NVIDIA’s official playbooks use, can be faster. Three units can be checked in the calculator.

An MoE (mixture-of-experts) model reads only a small share of its weights for each token, and that is what runs fast here. Qwen3.6 35B-A3B runs great on one unit of either size, so its linked cells say “One unit is enough”. gpt-oss-120b needs the 128GB model, where it runs great with a public benchmark behind it. Qwen3.5 122B-A10B, which uses about twice as many parameters per token, runs well there, also with a public benchmark.

Dense models read every weight for every token, so the DGX Spark's bandwidth sets a low ceiling. Gemma 4 31B runs slowly on both sizes, again with a public benchmark, and so does Llama 3.3 70B. More memory does not change that, and neither do more units.

The linked rows matter for models that fit on no single unit. DeepSeek V4 Flash 0731 needs 155.6 GB at MXFP4. Two 64GB units are still too small for it, while two 128GB units or four 64GB units hold it and run it well in CanRun's estimate, which is theoretical. GLM-5.3 Flash, not in the grid, is larger still. At Q4_K_M it runs well on two 128GB units, runs slowly on four, and does not fit on four 64GB units. All three are theoretical estimates. The four-unit result is lower because every extra unit adds time to each token, as the section on linking explains.

A model that already fits on one unit would only pay that cost. Qwen3.6 27B, a dense model, runs well on one 128GB unit, and its linked cells say “One unit is enough”. If you pick two units for it in the calculator anyway, CanRun's estimate comes out slower than on one. If a model fits on one unit, run it on one.

How much memory the GPU can use

The DGX Spark has no separate VRAM. Its CPU and GPU share one pool, and NVIDIA lists that pool as unified system memory without giving a separate figure for the GPU. On Linux the GPU takes its memory from the same pool as every other program, so CanRun counts what the system and the desktop leave free: 116.9 GB on the 128GB model and 48.2 GB on the 64GB model. A model fits when its GGUF file, its KV cache and a compute buffer, the runtime's working memory, add up to no more than that.

The 128GB figure starts from owners' kernel boot logs on NVIDIA's developer forum. The lowest of them comes from DGX OS 7.5.0, where a new kernel feature reserves several gigabytes more than earlier kernels did, and a reply in that thread says updates to address it are rolling out. CanRun takes that lowest log and subtracts what the desktop uses when idle, as another owner measured it. No boot log for the 64GB model has been published yet, so CanRun subtracts the same fixed amount from it. A press report puts the 64GB model's room for a model somewhat higher than CanRun does, and NVIDIA has not confirmed it.

The table counts how all catalog models fare on each configuration. Its usable column is the figure above.

How many of our 59 catalog models each configuration runs, by verdict (8k context, f16 KV cache)
HardwareMemoryBandwidthUsable by the GPURuns greatRuns wellRuns slowlyWon't run
NVIDIA DGX Spark64 GB273 GB/s48.2 GB319109
NVIDIA DGX Spark128 GB273 GB/s116.9 GB3412103

Because CanRun starts from the lowest boot log, a system on an earlier kernel, a fixed kernel or without a desktop has some room to spare. That matters only for files whose need lands just above the line. The Q2_K file of DeepSeek V4 Flash 0731 needs 118.0 GB, a little more than the 128GB figure, so CanRun shows it as not fitting on one unit. On a kernel that leaves more memory free it may load, so check the llama.cpp load log before you rule it out.

Three habits help on a real system. NVIDIA's known-issues page warns that the free memory a CUDA program reads can be lower than what it can actually allocate, and that nvidia-smi shows total memory use as Not Supported while still listing each process. One owner reported that running out of memory locked up the whole machine, which then needed a hard reboot, instead of ending the program with an out-of-memory error, so leave some headroom. And turn mmap off in llama.cpp: --load-mode none in current builds, --no-mmap in older ones. Owners on the forum found loading with mmap much slower, and the llama.cpp maintainers ran their DGX Spark results file with it off. CanRun's dense speed factor for the DGX Spark comes from that file.

64GB or 128GB: what decides it

Both sizes use the same chip at 273 GB/s, so a model that fits on both gets the same speed estimate. The choice comes down to which models you want to fit, and at what context length.

Several large MoE models fit on the 128GB model and not on the 64GB one: gpt-oss-120b, Ling-3.0 Flash and Laguna S 2.1 among them. For some models a smaller file closes the gap. Kolibri-1 at Q4_K_M needs 50.5 GB, more than the 64GB figure, and one step down, at IQ4_XS, it fits there and runs great. Qwen3.5 122B-A10B fits on the 64GB model only as a 2-bit file, with heavy quality loss.

Context length eats into the same pool. Llama 3.3 70B fits on the 64GB model at 8k, but at 32k with an f16 KV cache it needs 54.1 GB, more than the 64GB model's 48.2 GB, and well within the 128GB one. If you work with long documents or a coding agent's large context, count the KV cache before you pick the smaller size. KV cache explained: how context length eats VRAM explains how it grows.

Two 64GB units are not the same as one 128GB unit. They hold gpt-oss-120b and run it great in CanRun's estimate, a theoretical one, but that estimate is below the public benchmark of a single 128GB unit, because the token has to cross between the units. Solar Open 2 250B at IQ4_XS does not fit on two 64GB units and runs well on two 128GB units, also a theoretical estimate.

This guide does not compare prices. Our data lists NVIDIA's own 128GB model at $3,999 launch MSRP. NVIDIA raised the price of its own model in February 2026, citing memory supply, and the 64GB model comes only from NVIDIA's partner makers, at their own prices.

Linking two or four units

What NVIDIA supports

Each DGX Spark has ConnectX-7 networking with two QSFP ports. NVIDIA's clustering guide supports up to three units connected directly by cable and up to four through a switch, and its product page recommends a power-of-two count. Two units take a single QSFP cable; NVIDIA's cable guide says a second cable does not add performance. Three units are cabled in a ring. For four, NVIDIA's switch guide calls for a 200GbE switch, and a four-unit cable ring is possible only with manual setup.

NVIDIA's own multi-unit guides cover NCCL, the library for GPU-to-GPU communication across units, and vLLM across two to four units. NVIDIA's llama.cpp guide does not cover linked units. Linking units with llama.cpp RPC is a community setup. It is the one CanRun calculates, because it extends the llama.cpp commands this site already prints.

What CanRun calculates: llama.cpp RPC

With llama.cpp RPC, the first unit runs llama-server and every other unit runs an RPC server that takes a share of the layers. Memory adds up, but each token still passes through every unit in turn, so bandwidth does not add up, and every hop between units adds time to each token. CanRun works out that time from public two-unit runs and adds it once per extra unit. A fast, small model loses the most, because the hop is a large share of its time per token.

The public runs agree on the direction. In the llama.cpp discussion on the DGX Spark, one participant ran gpt-oss-120b on one and two units on the same build over the default TCP connection, and two units generated about a fifth slower. Another tester, running over RDMA, saw DeepSeek V4 Flash 0731 lose only a few percent on two units, and loaded a 4-bit file on two units that was too large for one. The same discussion also has 4-bit files of MiniMax-M2 and Qwen3-VL-235B running on two units, files too large for one. We found no public llama.cpp RPC runs on four units, so CanRun's four-unit rows extend the two-unit hop time.

In the calculator, which the form below opens, pick the DGX Spark and then the number of linked units, and the result prints the commands for each unit. They follow this pattern, with each unit's ConnectX-7 address in place of the node addresses. On every unit after the first:

ggml-rpc-server -H <node2-ip> -p 50052 -c

Then on the first unit:

llama-server -hf <model> -c 8192 -ngl all -fa on --rpc <node2-ip>:50052

Build llama.cpp with -DGGML_RPC=ON and build the ggml-rpc-server target as well, because NVIDIA's llama.cpp guide builds only llama-server. Builds from before late June 2026 call the server rpc-server. When llama.cpp is built with libibverbs, the RPC link switches to RDMA by itself. The RPC server has no security of its own, so keep it on the private link between the units. Ollama does not split a model across machines this way.

Tensor parallelism with vLLM can be faster

vLLM and TensorRT-LLM can split each layer across units instead, which is called tensor parallelism. Every unit then reads only part of each layer for every token, so bandwidth does add up. NVIDIA's technical blog reports Llama 3.3 70B in NVFP4 on TensorRT-LLM: the time per output token fell to about half on two units and to a little over a quarter on four. One tester ran DeepSeek V4 Flash 0731 with vLLM on two units and generated about four times as fast as llama.cpp RPC on the same two units, though with different weights and quantization, as the author points out.

CanRun does not calculate tensor parallelism. Every linked row on this site is a llama.cpp RPC estimate, so if you plan to run vLLM across units, read those rows as a llama.cpp baseline, not as a vLLM estimate. vLLM also uses its own weight formats and memory settings.

Compared with a Mac Studio, Strix Halo and RTX 5090

The second grid puts one 128GB DGX Spark next to a 128GB Strix Halo machine (Ryzen AI Max+ 395), the Mac Studio (2026) with the 40-core GPU M5 Max at 128GB and the M5 Ultra at 256GB, and an RTX 5090 desktop with 32GB of system RAM. The rows run in that order.

Verdicts at 8k context with an f16 KV cache. A row that names a memory size uses that configuration; PCs with a graphics card assume 32 GB of DDR5 system RAM and Windows. Speeds are estimates with an error band and a confidence label.
HardwareQwen3.6 35B-A3BGemma 4 31BLlama 3.3 70Bgpt-oss-120bQwen3.5 122B-A10B
NVIDIA DGX Spark128 GB
Runs great
est. 70.5 tok/s56.4–84.6calibrated estimate ±20%
Runs slowly
10.1 tok/s8k estimate 11.2 tok/s (9.0–13.5, calibrated estimate ±20%)measured (1 run, 512 context)
Runs slowly
4.7 tok/s8k estimate 4.7 tok/s (3.8–5.7, calibrated estimate ±20%)measured (2 runs, 512 context)
Runs great
58.7 tok/s8k estimate 50.8 tok/s (40.6–60.9, calibrated estimate ±20%)measured (1 run, 2k context)
Runs well
29.0 tok/s8k estimate 24.0 tok/s (19.2–28.8, calibrated estimate ±20%)measured (1 run, 4k context)
Ryzen AI Max+ 395 (Strix Halo)128 GB
Runs great
63.8 tok/s8k estimate 63.1 tok/s (50.5–75.7, calibrated estimate ±20%)measured (1 run, 512 context)
Runs slowly
est. 11.1 tok/s8.8–13.3calibrated estimate ±20%
Runs slowly
est. 4.6 tok/s3.7–5.6calibrated estimate ±20%
Runs great
50.2 tok/s8k estimate 48.5 tok/s (38.8–58.1, calibrated estimate ±20%)measured (1 run, 512 context)
Runs well
20.9 tok/s8k estimate 22.7 tok/s (18.2–27.2, calibrated estimate ±20%)measured (1 run, 512 context)
Apple M5 Max (40-core GPU)128 GB
Runs great
est. 121.8 tok/s97.5–146.2calibrated estimate ±20%
Runs well
est. 24.6 tok/s19.7–29.5calibrated estimate ±20%
Runs well
est. 10.3 tok/s8.3–12.4calibrated estimate ±20%
Runs great
est. 102.4 tok/s81.9–122.8calibrated estimate ±20%
Runs great
est. 47.4 tok/s37.9–56.8calibrated estimate ±20%
Apple M5 Ultra256 GB
Runs great
est. 125.7 tok/s100.5–150.8calibrated estimate ±20%
Runs great
est. 36.9 tok/s29.5–44.2calibrated estimate ±20%
Runs well
est. 15.5 tok/s12.4–18.6calibrated estimate ±20%
Runs great
est. 131.0 tok/s104.8–157.2calibrated estimate ±20%
Runs great
est. 58.6 tok/s46.9–70.4calibrated estimate ±20%
GeForce RTX 509032 GB
Runs great
est. 229.8 tok/s183.9–275.8calibrated estimate ±20%
Qwen3.6 35B-A3B verdict on the GeForce RTX 5090
Runs great
est. 66.1 tok/s58.1–74.0calibrated estimate ±12%
Gemma 4 31B verdict on the GeForce RTX 5090
Runs slowly
est. 2.7 tok/s2.2–3.3calibrated estimate ±20%
Llama 3.3 70B verdict on the GeForce RTX 5090
Won't runWith 64 GB RAM: Runs wellgpt-oss-120b verdict on the GeForce RTX 5090
Won't runTry UD-Q2_K_XL (heavy quality loss): Runs well
est. 66.4 tok/s46.5–86.3theoretical estimate ±30%
Qwen3.5 122B-A10B verdict on the GeForce RTX 5090

Theoretical estimates (±30%) mark setups whose real speed varies a lot, such as MoE experts kept in system RAM. There we assume as many experts as fit stay on the GPU and only the rest sit in RAM.

The Strix Halo is the closest match. Its bandwidth, 256 GB/s, is near the DGX Spark's, and gpt-oss-120b runs great on both with public benchmarks. The difference is the GPU share. CanRun gives the Strix Halo about 70% of its memory, 89.6 GB, too little for the Q2_K file of Solar Open 2 250B. CanRun then calculates that file CPU-only, and the CPU-only cap keeps it at Runs slowly (a theoretical estimate). On the DGX Spark the same file fits on the GPU and runs well. In a same-build comparison in the llama.cpp DGX Spark discussion, the DGX Spark also processed gpt-oss-120b prompts not quite twice as fast as the Strix Halo at the start of a conversation.

The M5 Max has 614 GB/s, a little over twice the DGX Spark's, and it shows on dense models: Gemma 4 31B and Llama 3.3 70B run well on the M5 Max and slowly on the DGX Spark. Qwen3.5 122B-A10B runs great on the M5 Max and well on the DGX Spark. On the same 128GB, though, CanRun gives the Mac's GPU about 70% of the memory, so the Solar Open 2 250B Q2_K file that fits on the DGX Spark's GPU does not fit on the M5 Max's. CanRun calculates it CPU-only there, and the CPU-only cap keeps it at Runs slowly even though its speed estimate, a theoretical one, is higher than the DGX Spark's. The macOS default limit is higher than CanRun's figure, as Running local LLMs on a Mac (M4, M5): how much unified memory? explains.

The M5 Ultra has about four and a half times the DGX Spark's bandwidth, and its 256GB configuration holds DeepSeek V4 Flash 0731 at MXFP4 on its own, where it runs great in CanRun's estimate (theoretical). The DGX Spark needs two 128GB units or four 64GB units for the same file.

The RTX 5090 has 32GB of VRAM and 1,792 GB/s, more than six times the DGX Spark's bandwidth. A model that fits in that VRAM runs much faster there: Gemma 4 31B runs great on the RTX 5090. Larger models have to spill into system RAM. With 32GB of RAM, gpt-oss-120b does not fit, and with 64GB it runs well with its experts in RAM, a theoretical estimate that depends on RAM speed. Llama 3.3 70B runs slowly on both, for different reasons: on the RTX 5090 some of its layers stay in system RAM, and on the DGX Spark the whole model is on the GPU but bandwidth holds it back. Running MoE models bigger than your GPU: gpt-oss-120b with system RAM covers the graphics card plus system RAM route.

Where to go next:

How sure are these numbers?

Memory figures are calculated with a formula: real GGUF file sizes, KV cache sizes from each model's configuration, and a compute-buffer formula. The approximation is the GPU share, taken from the lowest public boot log for the 128GB model and worked out from it for the 64GB model. On linked units, CanRun checks the unit with the largest share of the model, using llama.cpp's default split of layers in proportion to each unit's free memory. That share is an approximation, because CanRun treats every layer as the same size.

Speeds on one unit are measured where a cell says so. The other one-unit cells are calibrated estimates with a ±20% band. Their factors are fitted to the llama.cpp maintainers' DGX Spark results file, run with mmap off, and to DGX Spark runs in a llama.cpp pull request; the prompt-processing factor comes from that pull request alone. Every linked verdict is a theoretical estimate (±30%), and it is never faster than CanRun's own one-unit estimate for the same model. A model that fits on one unit gets no linked verdict, as for Gemma 4 31B, whose one-unit cell shows a public benchmark. If you pick linked units for it in the calculator, the linked estimate can come out higher than that benchmark, because the benchmark is below CanRun's own one-unit estimate. The hop time comes from public two-unit runs over the default TCP connection. Two-unit runs over RDMA lost less time per hop than CanRun assumes, measured against their own one-unit runs. There are no public four-unit runs to check against. Prompt processing on linked units is estimated as on one unit, with a rough ±40% band, and public two-unit runs moved both ways.

Not modelled: tensor parallelism, power modes, other programs' memory, and more than one request at a time. Verdict names in this guide's text refer to the 8k context, f16 KV baseline. Models with a thinking mode, even one that is off by default such as Gemma 4 31B's, can spend extra tokens thinking before they answer, so CanRun makes their speed thresholds 1.5× stricter; the legend below does not show this. The thresholds:

How to read the verdicts

Runs great
Fully on the GPU at 20 tok/s or more
Runs well
Fully on the GPU at 8–20 tok/s; MoE experts in system RAM at 20 tok/s or more; or at least 90% on the GPU at 8 tok/s or more
Runs slowly
2–8 tok/s; CPU-only; less than 90% on the GPU; or MoE experts in system RAM below 20 tok/s
Won't run
Does not fit, or under 2 tok/s

FAQ

Can a 64GB DGX Spark run gpt-oss-120b?

Not on one unit, in CanRun's calculation. gpt-oss-120b needs 64.3 GB, more than the 48.2 GB CanRun counts for the 64GB model. Two linked 64GB units hold it; their speed is a theoretical estimate, shown in the grid above. One 128GB unit runs it great with a public benchmark behind it.

Does linking two DGX Sparks make a model run faster?

Not with llama.cpp RPC: memory adds up, but each token passes through both units. CanRun's linked estimates are slower than its own one-unit estimates, and the public two-unit runs were no faster than one unit, or within a few percent of it. With tensor parallelism in vLLM or TensorRT-LLM, which NVIDIA's own guide and blog use, public results on two units were faster than one; in NVIDIA's test, Llama 3.3 70B generated about twice as fast. CanRun does not calculate that case.

How many DGX Sparks can be linked?

Up to four, according to NVIDIA. Two or three connect directly with QSFP cables, and for four NVIDIA's guides use a 200GbE switch. NVIDIA recommends a power-of-two count. The NVIDIA DGX Spark page lists two and four units; three can be checked in the calculator.

Are the ASUS Ascent GX10 and other partner models the same machine?

They use the same GB10 chip and memory bandwidth and differ mainly in storage, so CanRun calculates them as the DGX Spark, and the calculator finds them by name. NVIDIA sells its own model only with 128GB; the 64GB size comes only from partner makers.

Can a DGX Spark run 70B models?

It can hold them; it runs dense ones slowly. Llama 3.3 70B at Q4_K_M fits even on the 64GB model at 8k and runs slowly on both sizes, with public benchmarks behind it. MoE models of a larger total size, such as gpt-oss-120b on the 128GB model, run much faster because they read fewer weights per token.

Sources

Speeds on this page are estimates with an error band and a confidence label, or public measurements with their source. Verdicts assume the setup stated with each table.