{"id":54,"date":"2026-08-28T23:04:40","date_gmt":"2026-08-28T18:04:40","guid":{"rendered":"https:\/\/n0c.us\/?p=54"},"modified":"2026-08-28T23:04:40","modified_gmt":"2026-08-28T18:04:40","slug":"256-gb-is-not-256-gb","status":"publish","type":"post","link":"https:\/\/n0c.us\/?p=54","title":{"rendered":"256 GB Is Not 256 GB"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Researched and written in cooperation with <a href=\"https:\/\/claude.ai\">Claude.ai<\/a>. Sources and caveats are listed at the end.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here are two ways to put 256&nbsp;GB of accelerator memory on your floor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first is an NVIDIA DGX-1: eight Tesla V100s at 32&nbsp;GB each, a petaFLOPS of FP16 tensor throughput, 7.2&nbsp;TB\/s of aggregate HBM2 bandwidth, and a list price of $149,000 when it shipped. Today it turns up on the secondary market for something like $15,000.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The second is two NVIDIA DGX Sparks: desk-side GB10 Grace Blackwell boxes, 128&nbsp;GB of unified LPDDR5x each, joined by a single cable. Eight thousand dollars, new, under warranty.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Same capacity. The used option brings roughly <strong>thirteen times the memory bandwidth<\/strong> and <strong>four times the FP16 throughput<\/strong> for twice the money. That looks like an easy call \u2014 and it is, just not in the direction the spec sheet suggests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Three things decide this comparison, and none of them appear in a row labelled \u201cmemory.\u201d<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Metric<\/th><th>2\u00d7 DGX Spark<\/th><th>DGX-1 (8\u00d7 V100)<\/th><\/tr><\/thead><tbody><tr><td>Accelerator memory<\/td><td>256 GB LPDDR5x, unified<\/td><td>256 GB HBM2, 32 GB\/GPU<\/td><\/tr><tr><td>Aggregate bandwidth<\/td><td>546 GB\/s<\/td><td>7.2 TB\/s \u2014 13\u00d7<\/td><\/tr><tr><td>Per-device bandwidth<\/td><td>273 GB\/s<\/td><td>900 GB\/s<\/td><\/tr><tr><td>Dense BF16 \/ FP16<\/td><td>~250 TFLOPS<\/td><td>~1,000 TFLOPS \u2014 4\u00d7<\/td><\/tr><tr><td>FP8<\/td><td>~500 TFLOPS<\/td><td>Not supported<\/td><\/tr><tr><td>FP4<\/td><td>~1 PFLOPS dense<\/td><td>Not supported<\/td><\/tr><tr><td>FP64<\/td><td>~1 TFLOPS<\/td><td>~62 TFLOPS \u2014 60\u00d7<\/td><\/tr><tr><td>Device-to-device link<\/td><td>25 GB\/s (200 Gb\/s RoCE)<\/td><td>300 GB\/s NVLink 2.0<\/td><\/tr><tr><td>Power draw<\/td><td>~340 W<\/td><td>~3,500 W<\/td><\/tr><tr><td>CUDA architecture<\/td><td>sm_121, current<\/td><td>sm_70, dropped in CUDA 13<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Spark FLOPS are derived from NVIDIA&#8217;s \u201c1 PFLOP FP4\u201d headline halved down the precision ladder; treat them as ballpark. Volta&#8217;s petaFLOPS is dense \u2014 Volta has no structured sparsity.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Capacity is meaningless without precision<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Volta&#8217;s tensor cores speak FP16. That is the entire list \u2014 no BF16, no FP8, no FP4. Blackwell&#8217;s fifth-generation tensor cores speak all of them natively.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is usually filed under performance, but it is really a <em>capacity<\/em> multiplier. A parameter stored at FP4 occupies a quarter of the bytes it occupies at FP16. Same memory, four times the model.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Configuration<\/th><th>Pooled memory<\/th><th>Max parameters<\/th><\/tr><\/thead><tbody><tr><td>1\u00d7 DGX Spark<\/td><td>128 GB<\/td><td>~217B at NVFP4<\/td><\/tr><tr><td>DGX-1, all eight GPUs<\/td><td>256 GB<\/td><td>~107B at FP16<\/td><\/tr><tr><td>2\u00d7 DGX Spark<\/td><td>256 GB<\/td><td>~435B at NVFP4<\/td><\/tr><tr><td>4\u00d7 DGX Spark<\/td><td>512 GB<\/td><td>~870B at NVFP4<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Assumes ~85% of memory available for weights after KV cache, activations, and per-device context overhead.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Read the first two rows against each other. <strong>A single Spark, with half the DGX-1&#8217;s memory, holds roughly twice the model.<\/strong> Capacity parity at 256&nbsp;GB still loses, because precision is a 4\u00d7 lever and Volta cannot pull it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It compounds from there, because models increasingly ship <em>in<\/em> those formats. DeepSeek-V3 is natively FP8. gpt-oss ships as MXFP4. On a V100 you must upcast them before you can run them at all \u2014 so a natively-FP8 checkpoint arrives twice its own size, and an MXFP4 one arrives four times.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is an escape hatch, and it is worth being honest about it: llama.cpp builds cleanly for <code>sm_70<\/code>, and 4-bit GGUF weights are just bytes, so a 405B model at Q4 (~203&nbsp;GB) does technically fit. Two things spoil it. <code>--split-mode layer<\/code> walks the GPUs in sequence, so you get roughly <em>single-GPU<\/em> bandwidth rather than the aggregate 7.2&nbsp;TB\/s \u2014 landing near 4 tok\/s, no better than the Spark pair. And bitsandbytes 4-bit requires compute capability 7.5+, so QLoRA \u2014 the standard route to fine-tuning a large model on modest hardware \u2014 does not run on Volta at all.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bandwidth is the thing you actually feel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Having established that the Spark holds more, here is where it loses badly, and it deserves to be stated plainly rather than buried.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Token generation is memory-bound. Every token requires streaming the model&#8217;s weights out of memory, so decode speed is governed almost entirely by bandwidth divided by weight bytes \u2014 a number you can work out before you buy anything.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>70 GB \u00f7 273 GB\/s = 0.26 s \u2192 3.9 tok\/s ceiling<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Llama 3.1 70B at FP8 on one Spark. Measured single-stream: <strong>2.7 tok\/s<\/strong>. The envelope predicts reality to within the efficiency factor, which is exactly the point \u2014 nothing about this number is a surprise if you do the arithmetic first.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">For scale: that is 546&nbsp;GB\/s of aggregate bandwidth on the Spark pair against 7,200&nbsp;GB\/s on the DGX-1. Adding the second Spark does not fix it, either. Tensor parallelism across a 25&nbsp;GB\/s link means an all-reduce every layer over a pipe twelve times slower than NVLink 2.0. The second node buys capacity, not latency.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two caveats keep this from being a rout. Batch serving closes much of the gap \u2014 a Spark reaches roughly 695 tok\/s aggregate across 256 concurrent streams, because at that point you are amortising each weight read across many tokens. And mixture-of-experts models sidestep the problem structurally: with few active parameters per token, a 671B MoE moves less data per token than a dense 70B.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The scaling ceilings invert<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ask how far each architecture goes and you get opposite answers depending on whether you mean \u201cby design\u201d or \u201cin practice.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The structural difference is the size of the unit you scale <em>from<\/em>. A DGX-1&#8217;s unit is an eight-GPU NVLink domain: 256&nbsp;GB at 7.2&nbsp;TB\/s, coherent internally, with four EDR InfiniBand ports \u2014 400&nbsp;Gb\/s per node, double a Spark&#8217;s \u2014 sited at the corners of the cube mesh for GPU-to-GPU RDMA. A Spark&#8217;s unit is one GPU. There is no fast intra-node domain, because there is only one accelerator in the box, so <strong>every parallelism dimension beyond a single GPU crosses the slow fabric.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By design, it is not close. NVIDIA built the DGX-1 for POD deployments \u2014 nine per rack, reference architectures tested to six PODs \u2014 and proved it at 124 nodes with SATURNV, a fat-tree cluster that hit 4.9 petaFLOPS peak. The Spark&#8217;s supported ceiling is four nodes via the Cluster Assistant, reaching eight with breakout cables. The DGX-1 scales roughly fifteen times further.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, that ceiling is historical. Each node you add is 3.5&nbsp;kW of out-of-support hardware needing an InfiniBand switch, a rack, 240&nbsp;V service, and real cooling.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Pooled memory<\/th><th>DGX-1 path<\/th><th>Spark path<\/th><\/tr><\/thead><tbody><tr><td>256 GB<\/td><td>1 node \u00b7 ~$15k \u00b7 3.5 kW<\/td><td>2 nodes \u00b7 $8k \u00b7 340 W \u00b7 one cable<\/td><\/tr><tr><td>512 GB<\/td><td>2 nodes + IB switch \u00b7 ~$35k \u00b7 7 kW<\/td><td>4 nodes + switch \u00b7 $16k \u00b7 ~700 W<\/td><\/tr><tr><td>1 TB<\/td><td>4 nodes \u00b7 ~$65k \u00b7 14 kW<\/td><td>8 nodes \u00b7 $32k \u00b7 1.4 kW<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">At every tier the DGX-1 delivers roughly 13\u00d7 the bandwidth for about 2\u00d7 the money and 10\u00d7 the power. If bandwidth is what you need and you already own a datacenter, that is genuinely good value per GB\/s. If you do not, the 1&nbsp;TB tier arrives at 14&nbsp;kW \u2014 about $24,500 a year in electricity alone.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Both architectures have a point past which you should buy something else. For Sparks it is around four to eight nodes, after which four RTX PRO 6000 Blackwell cards in one chassis give you 384&nbsp;GB at roughly six times the per-device bandwidth with no fabric in the critical path. For the DGX-1, in 2026, that point is one node.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sticker price is the smallest line item<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Run both machines for three years at $0.20\/kWh and the bargain evaporates \u2014 before accounting for cooling, the rack, or the electrical work.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Configuration<\/th><th>Capital<\/th><th>Electricity, 3 yr<\/th><th>Total<\/th><\/tr><\/thead><tbody><tr><td>DGX-1 \u00b7 8\u00d7 V100<\/td><td>~$15,000<\/td><td>$11,000\u201318,000<\/td><td>~$26,000\u201333,000<\/td><\/tr><tr><td>2\u00d7 DGX Spark<\/td><td>$8,000<\/td><td>$1,000\u20132,000<\/td><td>~$9,000\u201310,000<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Excludes cooling overhead, rack, and 240&nbsp;V service.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The \u201ccheap\u201d machine costs roughly three times the expensive one, and the crossover happens inside the first eighteen months. Power alone on the DGX-1 exceeds its own purchase price.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But the money is not the strongest argument. This one is: <strong>hardware depreciates on a slope; platforms depreciate on a cliff.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CUDA 13 removed offline compilation and library support for Volta. TensorRT-LLM, TGI, and Triton have all dropped <code>sm_70<\/code> from current containers, leaving vLLM as roughly the last major serving stack that still accepts it. FlashAttention-2 requires <code>sm_80<\/code>. A DGX-1 bought today is pinned to CUDA 12.x permanently, and the gap between what it can run and what everyone else is running widens every month. No amount of money closes it, because there is nothing to buy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When the old box is still the right answer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">None of this makes a DGX-1 worthless, and if one is already racked and paid for, the analysis changes considerably.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It remains about <strong>sixty times<\/strong> a Spark at FP64, so any classical HPC \u2014 CFD, quantum chemistry, climate \u2014 still belongs on it and nowhere near a Spark. It is a perfectly good CI machine and a fast dataset-preprocessing box. It handles FP16 fine-tuning well for anything that fits in 32&nbsp;GB shards, provided you stay on CUDA 12.x and vLLM. And its single-node bandwidth genuinely beats a small Spark cluster for dense-model inference.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If power is free to you \u2014 a university lab, a colo with flat-rate power \u2014 a large part of the cost table simply evaporates and the calculus shifts back meaningfully.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The mistake was never using one. It is buying more of them, or building a roadmap on a platform that has already been dropped by its own compiler.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Five rules for cheap silicon<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Multiply capacity by precision before comparing gigabytes.<\/strong> A machine that speaks FP4 has four times the effective memory of one that speaks only FP16. The spec sheet will not do this multiplication for you.<\/li>\n\n\n\n<li><strong>Predict decode speed on an envelope.<\/strong> Weight bytes divided by memory bandwidth gives you tokens per second to within an efficiency factor. If that number disappoints you on paper, it will disappoint you in the rack.<\/li>\n\n\n\n<li><strong>Price the electricity before the hardware.<\/strong> Three years at 3.5\u00a0kW costs more than the machine drawing it. Any comparison that stops at purchase price is measuring the wrong thing.<\/li>\n\n\n\n<li><strong>Check the compiler support matrix before the benchmarks.<\/strong> Benchmarks tell you what a machine does today. The CUDA deprecation notice tells you what it will be allowed to do in two years.<\/li>\n\n\n\n<li><strong>Ask what the scaling unit is, not just how far it scales.<\/strong> Eight GPUs behind NVLink and one GPU behind Ethernet are different starting points, and the difference shows up in every parallelism decision you make afterward.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Caveats<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Used DGX-1 pricing is thinly traded; the ~$15,000 figure is a market read, not a quote.<\/li>\n\n\n\n<li>Aggregate bandwidth figures assume tensor or expert parallelism. Under pipeline parallelism both machines fall back to single-device bandwidth, which flatters neither.<\/li>\n\n\n\n<li>Spark FLOPS are derived from NVIDIA&#8217;s headline FP4 number rather than measured; the 2.7 tok\/s decode figure is a third-party measurement.<\/li>\n\n\n\n<li>The eight-node Spark configuration is a community ceiling using breakout cables, not a validated NVIDIA reference architecture. Four nodes is the number to count on.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.nvidia.com\/en-us\/products\/workstations\/dgx-spark\/\">NVIDIA DGX Spark product page<\/a> \u00b7 <a href=\"https:\/\/docs.nvidia.com\/sync\/latest\/cluster-assistant.html\">NVIDIA Sync Cluster Assistant<\/a> \u00b7 <a href=\"https:\/\/build.nvidia.com\/spark\/multi-sparks-through-switch\">Multi-Spark via switch<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.azken.com\/images\/dgx1_images\/dgx1-system-architecture-whitepaper1.pdf\">DGX-1 system architecture whitepaper<\/a> \u00b7 <a href=\"https:\/\/www.nvidia.com\/content\/dam\/en-zz\/Solutions\/Data-Center\/dgx-1\/NVIDIA-DGX-1-Volta-AI-Supercomputer-Datasheet.pdf\">DGX-1 datasheet<\/a> \u00b7 <a href=\"https:\/\/www.nextplatform.com\/2016\/11\/14\/nvidias-saturn-v-dgx-1-cluster-stacks\/\">SATURNV cluster<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/nvidia.github.io\/TensorRT-LLM\/reference\/support-matrix.html\">TensorRT-LLM support matrix<\/a> \u00b7 <a href=\"https:\/\/huggingface.co\/docs\/bitsandbytes\/reference\/nn\/linear4bit\">bitsandbytes 4-bit requirements<\/a> \u00b7 <a href=\"https:\/\/github.com\/ggml-org\/llama.cpp\/blob\/master\/docs\/multi-gpu.md\">llama.cpp multi-GPU docs<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How this was made<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This post was researched and written in cooperation with <a href=\"https:\/\/claude.ai\">Claude.ai<\/a>. Every figure traces to the sources listed above; the caveats mark where an estimate stands in for a measurement.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Researched and written in cooperation with Claude.ai. Sources and caveats are listed at the end. Here are two ways to put 256&nbsp;GB of accelerator memory on your floor. The first is an NVIDIA DGX-1: eight Tesla V100s at 32&nbsp;GB each, a petaFLOPS of FP16 tensor throughput, 7.2&nbsp;TB\/s of aggregate HBM2 bandwidth, and a list price&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-54","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/n0c.us\/index.php?rest_route=\/wp\/v2\/posts\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/n0c.us\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/n0c.us\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/n0c.us\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/n0c.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=54"}],"version-history":[{"count":1,"href":"https:\/\/n0c.us\/index.php?rest_route=\/wp\/v2\/posts\/54\/revisions"}],"predecessor-version":[{"id":55,"href":"https:\/\/n0c.us\/index.php?rest_route=\/wp\/v2\/posts\/54\/revisions\/55"}],"wp:attachment":[{"href":"https:\/\/n0c.us\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/n0c.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/n0c.us\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}