Skip to content
llm-speed

RTX 5090 vs M3 Ultra

Signed, community-submitted decode tok/s, prefill, and TTFT for RTX 5090 vs M3 Ultra — every number links to the run it came from.

Verdict (measured runs)

The M3 Ultra's measured strength is capacity; the RTX 5090's is decode speed on models that fit in 32GB. On capacity, the 96GB M3 Ultra ran Llama-3.3-70B 4-bit at 16.8 tok/s with MLX (r_sx3a4y9n-m4), a model that doesn't fit in the RTX 5090's 32GB of VRAM. That capacity point holds whatever the runtime. The RTX 5090 decoded gpt-oss-20b at 318.4 tok/s with llama.cpp (quant not recorded, r_b9ul-vxh9sc); separately, the M3 Ultra decoded gpt-oss-20b at 152.7 tok/s with MLX and an MXFP4 conversion (r_3ijun8ltjnb). Those two speeds aren't directly comparable: the runtime and the 4-bit format differ, so this isn't a matched-runtime comparison. We haven't yet measured llama.cpp on the Mac.

How to read these results

15 models were measured on both RTX 5090 and M3 Ultra, but not like-for-like — the runtime, quant or model size differs between the two sides, so none of those rows is a head-to-head comparison. They are listed separately below with the reason for each. A matched run (same model, size, quant and runtime) on both sides would turn this into a direct comparison.

hardware
RTX 5090
NVIDIA Ada/Blackwell · 32 GB VRAM
View RTX 5090 page →
hardware
M3 Ultra
Apple M3 · up to 512 GB unified memory

512 GB is the historical maximum announced in 2025. Apple's model-specific support page checked September 7, 2026 lists 96 GB configurable to 256 GB. Check the actual machine: a family ceiling is not installed memory, current availability or a measured configuration. 2025 launch specification · Model-specific specification

View M3 Ultra page →

Not a like-for-like pair

These have data on both sides, but the model size, quant or runtime differs, so they are not a head-to-head and are left out of the comparison above.

ModelRTX 5090 decodeM3 Ultra decodeWhy it isn't matchedRuns
mlx-community/stable-code-instruct-3b-4bit341.9tok/s
llama.cpp · quant unreported
192.5tok/s
mlx · quant unreported
quant unreported; runtime llama.cpp vs mlxr_q9f15lz6831 · r_y2_5y8oo97d
mlx-community/gpt-oss-20b-MXFP4-Q4324.2tok/s
llama.cpp · Q4_K_M
152.7tok/s
mlx · quant unreported
quant Q4_K_M vs Q4; runtime llama.cpp vs mlxr_dwp5fgdapmw · r_3ijun8ltjnb
mlx-community/Qwen3-Coder-30B-A3B-Instruct-4bit304.9tok/s
llama.cpp · Q4_K_M
112.2tok/s
mlx · quant unreported
quant Q4_K_M vs 4BIT; runtime llama.cpp vs mlxr_vsype4pm1ko · r_fpsca03u2o_
mlx-community/Qwen2.5-Coder-7B-Instruct-4bit255.3tok/s
llama.cpp · quant unreported
138.6tok/s
mlx · quant unreported
quant unreported; runtime llama.cpp vs mlxr_2b9o6y_49mi · r_uoehjq0nvc0
mlx-community-Qwen2.5-7B-Instruct-4bit246.7tok/s
llama.cpp · quant unreported
139.6tok/s
mlx · 4bit · 7B
size unreported vs 7B; quant unreported; runtime llama.cpp vs mlxr_3yn-4321hp- · r_5r6rhiynenc
mlx-community/Llama-3.1-8B-Instruct-4bit232.2tok/s
llama.cpp · quant unreported
130.2tok/s
mlx · quant unreported
quant unreported; runtime llama.cpp vs mlxr_kfrkg-vn376 · r_v2pbc0rq2l4
mlx-community/Yi-Coder-9B-Chat-4bit199.3tok/s
llama.cpp · quant unreported
103.5tok/s
mlx · quant unreported
quant unreported; runtime llama.cpp vs mlxr_u4iojm6-ekg · r_3hvui9a1yuc
mlx-community/gemma-2-9b-it-4bit152.7tok/s
llama.cpp · quant unreported
89.45tok/s
mlx · quant unreported
quant unreported; runtime llama.cpp vs mlxr__b_bzmmab_8 · r_iz137eqvuzy
mlx-community/phi-4-4bit140.9tok/s
llama.cpp · quant unreported
74.37tok/s
mlx · quant unreported
quant unreported; runtime llama.cpp vs mlxr_e-k4aea8ipr · r_sqzp-0rdez-
mlx-community/Qwen2.5-Coder-14B-Instruct-4bit140.0tok/s
llama.cpp · quant unreported
70.51tok/s
mlx · quant unreported
quant unreported; runtime llama.cpp vs mlxr_opuj21f13-_ · r_l36cijqxq4t
mlx-community-Qwen2.5-14B-Instruct-4bit133.3tok/s
llama.cpp · quant unreported
70.85tok/s
mlx · 4bit · 14B
size unreported vs 14B; quant unreported; runtime llama.cpp vs mlxr_tj9bu7gvnvh · r_v4bq1sviz4o
mlx-community/Codestral-22B-v0.1-4bit93.72tok/s
llama.cpp · quant unreported
47.49tok/s
mlx · quant unreported
quant unreported; runtime llama.cpp vs mlxr_4q040m4scic · r_79dvtag5fd_
mlx-community-Qwen2.5-32B-Instruct-4bit71.90tok/s
llama.cpp · quant unreported
34.60tok/s
mlx · 4bit · 32B
size unreported vs 32B; quant unreported; runtime llama.cpp vs mlxr_twfs86tf_xf · r_njgxtgyym1e
mlx-community/Qwen2.5-Coder-32B-Instruct-4bit71.91tok/s
llama.cpp · quant unreported
34.48tok/s
mlx · quant unreported
quant unreported; runtime llama.cpp vs mlxr_nkbs6d3-d21 · r_721b4bls_oq
mlx-community/Qwen3-32B-4bit69.83tok/s
llama.cpp · Q4_K_M
34.41tok/s
mlx · quant unreported
quant Q4_K_M vs 4BIT; runtime llama.cpp vs mlxr_vhbqyt1f_xr · r_anmmc80-aoq

See also: RTX 5090 benchmarks · M3 Ultra benchmarks · All hardware · All models · Methodology

Request the missing runs

No measured run yet for these pairs. Vote for the one you want; the most-requested runs go first. See all requests.

0 votes

We never sell or share your email. Privacy

Needs a community run · Submit your own