RTX 3050 - Order Now
Home / Blog / Benchmarks / Memory Bandwidth vs TFLOPS: Why It Matters
Benchmarks

Memory Bandwidth vs TFLOPS: Why It Matters

Understand why memory bandwidth matters more than TFLOPS for LLM inference. Covers the memory wall, roofline analysis, bandwidth-bound vs compute-bound workloads, and choosing the right GPU for AI tasks.

Your 300 TFLOPS GPU Generates Tokens No Faster Than a 100 TFLOPS Card

You upgraded to a GPU with triple the theoretical TFLOPS, expecting 3x faster inference. Token generation speed barely changed. The bottleneck was never compute — it was memory bandwidth. LLM inference during the decode phase reads the entire model weight matrix for every single token generated. A GPU with 2TB/s bandwidth feeds weights to its cores faster than one with 1TB/s, regardless of TFLOPS count. Understanding this relationship is essential when selecting a GPU server for AI workloads.

Why Bandwidth Dominates LLM Inference

Inference has two distinct phases with different bottlenecks:

# Prefill phase (processing the input prompt):
# - Highly parallel matrix multiplications
# - Compute-bound: benefits from high TFLOPS
# - All input tokens processed simultaneously
# - Arithmetic intensity: ~100-200 FLOPS/byte

# Decode phase (generating tokens one at a time):
# - Sequential: one token per forward pass
# - Must read ALL model weights for each token
# - Memory-bound: limited by bandwidth, not FLOPS
# - Arithmetic intensity: ~1-2 FLOPS/byte

# For a 70B parameter model in FP16 (140GB):
# Each decode step reads ~140GB from VRAM
# At 2TB/s bandwidth (RTX 6000 Pro 96 GB): 140/2000 = 70ms per token = ~14 tok/s
# At 3.35TB/s bandwidth (RTX 6000 Pro): 140/3350 = 42ms per token = ~24 tok/s

# TFLOPS barely matters here because the GPU cores are idle
# waiting for data from memory most of the time

Roofline Model: Visualizing the Bottleneck

The roofline model shows when a workload is memory-bound vs compute-bound:

# Calculate operational intensity (FLOPS per byte of memory traffic)
# If OI < ridge point, you are memory-bound

# Ridge point = Peak TFLOPS / Peak Bandwidth
# RTX 6000 Pro: 312 TFLOPS FP16 / 2.0 TB/s = 156 FLOPS/byte
# RTX 6000 Pro: 990 TFLOPS FP16 / 3.35 TB/s = 296 FLOPS/byte
# RTX 5090: 330 TFLOPS FP16 / 1.0 TB/s = 330 FLOPS/byte

# Workload operational intensities:
# LLM decode (batch=1):    ~1-2 FLOPS/byte  → memory-bound (always)
# LLM prefill (batch=1):   ~50-100 FLOPS/byte → memory-bound on RTX 6000 Pro
# LLM prefill (batch=32):  ~200+ FLOPS/byte → compute-bound
# Training forward pass:   ~100-300 FLOPS/byte → compute-bound
# Image generation:        ~50-150 FLOPS/byte → depends on batch size

# Python: estimate your workload's bottleneck
import torch, time

def measure_bandwidth(device="cuda"):
    """Measure effective memory bandwidth"""
    size = 1024 * 1024 * 256  # 1GB
    x = torch.randn(size, device=device, dtype=torch.float16)
    torch.cuda.synchronize()
    start = time.perf_counter()
    for _ in range(100):
        y = x.clone()
    torch.cuda.synchronize()
    elapsed = time.perf_counter() - start
    gb_transferred = 2 * size * 2 * 100 / 1e9  # read + write
    print(f"Effective bandwidth: {gb_transferred/elapsed:.0f} GB/s")

measure_bandwidth()

GPU Bandwidth Comparison for AI

# Memory bandwidth comparison (key spec for inference)
#
# GPU               VRAM    Bandwidth   FP16 TFLOPS   Bandwidth/TFLOP
# ---------------------------------------------------------------
# RTX 6000 Pro SXM          80GB    3,350 GB/s   990           3.38 GB/s
# RTX 6000 Pro PCIe         80GB    2,000 GB/s   756           2.65 GB/s
# RTX 6000 Pro SXM          80GB    2,039 GB/s   312           6.54 GB/s
# RTX 6000 Pro PCIe         80GB    2,039 GB/s   312           6.54 GB/s
# RTX 6000 Pro              48GB    864 GB/s     362           2.39 GB/s
# RTX 5090 32 GB    1,008 GB/s   330           3.05 GB/s
# RTX 3090          24GB    936 GB/s     142           6.59 GB/s
# RTX 6000 Pro             48GB    768 GB/s     155           4.95 GB/s
#
# For single-stream LLM inference: higher bandwidth = faster tokens
# For batched inference or training: TFLOPS matters more
# Bandwidth-per-TFLOP ratio shows decode efficiency

# Quick benchmark: tokens/second correlates with bandwidth
# RTX 6000 Pro 96 GB on Llama-3-70B (FP16):
#   Batch 1:  ~14 tok/s  (bandwidth-bound)
#   Batch 32: ~350 tok/s total (becoming compute-bound)
# RTX 6000 Pro SXM on Llama-3-70B (FP16):
#   Batch 1:  ~24 tok/s  (bandwidth-bound, 1.7x RTX 6000 Pro)
#   Batch 32: ~800 tok/s total (compute advantage shows)

Optimizing for Bandwidth-Bound Workloads

# Strategy 1: Quantization reduces bytes read per token
# FP16: 140GB for 70B model → ~14 tok/s on RTX 6000 Pro
# INT8: 70GB for 70B model  → ~28 tok/s on RTX 6000 Pro (2x faster)
# INT4: 35GB for 70B model  → ~50 tok/s on RTX 6000 Pro (3.5x faster)

# Strategy 2: Batching amortizes weight reads
# Batch 1:  read 140GB, generate 1 token  → 1 FLOP/byte
# Batch 16: read 140GB, generate 16 tokens → 16 FLOPS/byte
# Batching shifts workload toward compute-bound territory

# Strategy 3: Tensor parallelism aggregates bandwidth
# 2x RTX 6000 Pro: combined bandwidth = 4 TB/s → ~28 tok/s on 70B FP16
# 4x RTX 6000 Pro: combined bandwidth = 8 TB/s → ~50 tok/s on 70B FP16

# Strategy 4: Speculative decoding
# Draft model generates candidate tokens cheaply
# Main model verifies in parallel (batched = compute-bound)
# Effective 2-3x speedup for single-stream generation

# Measure actual memory bandwidth utilization during inference
nvidia-smi dmon -s mu -d 1
# Watch "fb" (framebuffer) utilization — high % means bandwidth-bound

Choosing a GPU: Bandwidth First for Inference

# Decision framework:
#
# Primarily single-user LLM inference:
#   Priority: Bandwidth > VRAM > TFLOPS
#   Best: RTX 6000 Pro SXM, RTX 6000 Pro SXM
#
# High-throughput batched inference (API serving):
#   Priority: TFLOPS ≈ Bandwidth > VRAM
#   Best: RTX 6000 Pro SXM (both are excellent)
#
# Training / Fine-tuning:
#   Priority: TFLOPS > VRAM > Bandwidth
#   Best: RTX 6000 Pro, then RTX 6000 Pro
#
# Image generation:
#   Priority: VRAM > TFLOPS > Bandwidth
#   Best: RTX 6000 Pro (48GB), RTX 5090 (fast at smaller batches)

# Cost efficiency: compare $/token not $/TFLOP
# A card with 2x bandwidth at 1.5x cost is still cheaper per token

Memory bandwidth determines single-stream token generation speed more than any other specification. Choose your GPU server based on the workload profile. See real throughput numbers in our tokens-per-second benchmarks. Deploy with vLLM using the production guide. Monitor bandwidth utilization with our monitoring setup. Explore more benchmarks, infrastructure guides, and tutorials.

High-Bandwidth GPU Servers

GigaGPU dedicated servers with RTX 6000 Pro and RTX 6000 Pro GPUs delivering the memory bandwidth LLM inference demands.

Browse GPU Servers

Need a Dedicated GPU Server?

Deploy from RTX 3050 to RTX 5090. Full root access, NVMe storage, 1Gbps — UK datacenter.

Browse GPU Servers

gigagpu

We benchmark, deploy, and optimise GPU infrastructure for AI workloads. All data in our guides comes from real-world testing on our UK-based dedicated GPU servers.

Ready to deploy your AI workload?

Dedicated GPU servers from our UK datacenter. NVMe storage, 1Gbps networking, full root access.

Browse GPU Servers Contact Sales

Have a question? Need help?