Skip to content
C.W.K.
Stream
Lesson 01 of 06 · published

CUDA Is Not a Chip

~13 min · cuda, nvidia, platform, ecosystem, history, vendor-claim

Level 0Spec-Sheet Skimmer
0 XP0/91 lessons0/19 achievements
0/100 XP to next level100 XP to go0% complete
"The thing the Mac is up against is not a GPU. It is twenty years of code that assumes a GPU has its own memory, and works."

What NVIDIA Shipped in 2006

NVIDIA's own account: "NVIDIA released the first version of CUDA in November 2006 and it came with a software environment that allowed you to use C as a high-level programming language." The toolkit archive's oldest entry is "CUDA Toolkit 1.0 (June 2007)". What shipped was not a faster graphics card; it was a way to write general programs for the card in a language people already knew, with a compiler, a runtime, and — the part that compounds — libraries: cuBLAS for linear algebra, later cuDNN for neural networks, TensorRT for inference, NCCL for many cards talking. Every deep-learning framework of the 2010s was built on those, so that by the time a language model was a thing anyone wanted to run, the path from a paper to a running kernel on NVIDIA hardware was paved and everyone's code already walked it. That is the moat. It is not in the silicon, which the memory track can price, and it is not in the bandwidth, which the next lesson prices; it is in the age.

The Age of Each Door

The code block dates each door from the vendor's own announcement. CUDA is nearly twenty years old. Apple's Metal, the GPU API every Mac path in the journey track ultimately reaches, is twelve. The Apple silicon Mac is under six. PyTorch's MPS backend — the bus-era framework's door to the Mac — is four. MLX, Apple's own framework, is under three, and Ollama's MLX engine is half a year. CUDA is seven times the age of MLX, and that ratio is a fair proxy for the depth of libraries, the count of ported models, the size of the pool of people who can write a kernel, and the number of bugs already found. The mouse track told the story of the community finding the Mac in 263 days; this lesson is the reminder that the community had been on NVIDIA for sixteen years by then.

What the Platform's Model of the Machine Assumes

CUDA's programming model has a host and a device, each with its own memory, and a verb for moving between them. The journey track's PyTorch lesson measured what happens when that model is laid over a machine with one memory: an unnecessary copy that costs real time, and an op-coverage gap where kernels exist for CUDA and not yet for Metal. NVIDIA's own inference guidance, in its 2023 optimization post, describes the two stages exactly as the physics track does — prefill "a matrix-matrix operation that's highly parallelized", decode "a memory-bound operation" where "the speed at which the data … is transferred to the GPU from memory dominates the latency" — and then spends its length on tricks the platform's twenty years have accumulated: batching, paged caches, quantization, speculation. The Mac gets those tricks last, or reimplements them; the Ollama lesson watched one of them arrive. So the honest frame for the rest of this track: NVIDIA leads on the two numbers a token cares about, bandwidth and compute, and on the one number no spec sheet lists, which is time. The Mac's case is made elsewhere — in the wall the card builds and in the pool the card lacks — and this track prices both before it says so.

Code

ecosystem_ages.py — each door dated by its vendor, counted to today·python
#!/usr/bin/env python3
"""How old is each door? Vendor-dated first releases, counted to today. A platform's
age is a rough proxy for the libraries, tutorials and ported code behind it."""
from datetime import date
today = date(2026, 9, 15)
doors = [
    ("CUDA, first release",                      date(2006, 11, 1),  "NVIDIA developer blog, 'CUDA Refresher: Getting started with CUDA'"),
    ("CUDA Toolkit 1.0",                         date(2007, 6, 1),   "NVIDIA CUDA Toolkit Archive"),
    ("Metal announced (WWDC)",                   date(2014, 6, 2),   "Apple Newsroom, iOS 8 SDK"),
    ("Apple silicon Mac (M1) on sale",           date(2020, 11, 17), "Apple Newsroom"),
    ("PyTorch MPS backend announced",            date(2022, 5, 18),  "PyTorch blog"),
    ("llama.cpp repository",                     date(2023, 3, 10),  "GitHub"),
    ("MLX repository",                           date(2023, 11, 28), "GitHub"),
    ("Ollama's MLX engine (preview)",            date(2026, 3, 30),  "Ollama blog"),
]
for name, d, src in doors:
    yrs = (today - d).days / 365.25
    print(f"{name:36} {d.isoformat()}  {yrs:5.1f} years   [{src}]")
print(f"\nCUDA is {(today - doors[0][1]).days / (today - doors[6][1]).days:.1f}x the age of MLX.")

# 2026-09-15:
# CUDA, first release                  2006-11-01   19.9 years
# CUDA Toolkit 1.0                     2007-06-01   19.3 years
# Metal announced (WWDC)               2014-06-02   12.3 years
# Apple silicon Mac (M1) on sale       2020-11-17    5.8 years
# PyTorch MPS backend announced        2022-05-18    4.3 years
# llama.cpp repository                 2023-03-10    3.5 years
# MLX repository                       2023-11-28    2.8 years
# Ollama's MLX engine (preview)        2026-03-30    0.5 years
# CUDA is 7.1x the age of MLX.

External links

Exercise

Pick one model you run on your Mac and find the date its architecture first ran on CUDA and the date it first ran on MLX or llama.cpp's Metal backend. Write both dates and the gap in days on your card. Then run ecosystem_ages.py and add the door you used to the list.
Hint
Model cards, GitHub release notes and the mlx-lm and llama.cpp changelogs carry the dates. Expect gaps of weeks for popular architectures and months for unusual ones — the gap is the platform age made concrete for one model.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.