Skip to main content
Modules / Tools / Roofline performance model

Roofline performance model

Plot attainable performance against arithmetic intensity for a chip's compute and memory limits, and place your kernels and models on it.

AI, systems and startupFree to useHow it worksSourcesWhere it helps

Fills the inputs below with typical figures. Replace any of them with your own.

Peak compute

Dense peaks, one for each precision you use. Enter 0 for a precision the chip does not offer.

Some data sheets print a rate with structured sparsity. Use the dense rate, which is usually half.

Memory bandwidth

On-die SRAM or L2, for a hierarchical roofline. 0 for none.

Sustained ceilings

Benchmarks reach less than the data sheet peak. Lower these to draw the roofline at what you can sustain.

Chart and kernel units
Kernels
  1. Kernel 1

    Needs the operations and bytes entered. Leave blank for none.

    Gives the efficiency against the roofline.

  2. Kernel 2

    Needs the operations and bytes entered. Leave blank for none.

    Gives the efficiency against the roofline.

  3. Kernel 3

    Needs the operations and bytes entered. Leave blank for none.

    Gives the efficiency against the roofline.

  4. Kernel 4

    Needs the operations and bytes entered. Leave blank for none.

    Gives the efficiency against the roofline.

  5. Kernel 5

    Needs the operations and bytes entered. Leave blank for none.

    Gives the efficiency against the roofline.

  6. Kernel 6

    Needs the operations and bytes entered. Leave blank for none.

    Gives the efficiency against the roofline.

Ridge point at BF16 or FP16
295.4 FLOP per byte
989.5 TFLOP/s sustained peak over 3.35 TB/s
Memory bound kernels
4 of 6
2 compute bound
First kernel, attainable
989.5 TFLOP/s
100.0% of the sustained peak
Roofline at BF16 or FP16, with the kernels placed on it
Line chart of Attainable performance (TFLOP/s, log scale) against Arithmetic intensity (FLOP per byte, log scale), 2 lines: Roofline, HBM, Kernels, attainable. The same numbers are in the table under the chart.1101000.11101001,00010,000Arithmetic intensity (FLOP per byte, log scale)Attainable performance (TFLOP/s, log scale)
  • Roofline, HBM (solid line, circles)
  • Kernels, attainable (dashed line, squares)
Show the data as a table
Roofline at BF16 or FP16, with the kernels placed on it
Arithmetic intensity (FLOP per byte, log scale)Roofline, HBMKernels, attainable
0.10.335
0.1670.5580.558
0.1780.596
0.3161.06
0.5621.88
13.353.35
13.35
1.785.96
3.1610.6
5.6218.8
1033.5
17.859.6
31.6106
56.2188
62.1208208
100335
178596
287962962
295990
316990
562990
1,000990
1,780990
2,050990990
2,730990990
3,160990
5,620990
10,000990

Both axes are logarithmic. The lines join the kernel markers in order of intensity so that the markers can be read; each marker is one kernel.

Sign in to save your inputs and come back to them later.

Each kernel against the roofline
KernelPrecisionIntensity (FLOP per byte)Ridge point (FLOP per byte)AttainableLimited byShare of peakTime at the rooflineMeasured over attainable
GEMM, large (8192 x 8192 x 8192)BF16 or FP162,731295.4989.5 TFLOP/sCompute bound100.0%1.11 msnone entered
GEMV in LLM decode (4096 x 4096 weights, batch 1)BF16 or FP160.9995295.43.348 TFLOP/sMemory bound (HBM)0.3%10 µsnone entered
Attention, fused (sequence 4096, head size 128)BF16 or FP162,048295.4989.5 TFLOP/sCompute bound100.0%8.68 µsnone entered
Attention, unfused (sequence 4096, head size 128)BF16 or FP1662.06295.4207.9 TFLOP/sMemory bound (HBM)21.0%41.3 µsnone entered
Convolution, 3 x 3 (batch 32, 64 channels, 56 x 56)BF16 or FP16287.2295.4962 TFLOP/sMemory bound (HBM)97.2%7.69 µsnone entered
Elementwise add (100 million BF16 values)BF16 or FP160.1667295.40.5583 TFLOP/sMemory bound (HBM)0.1%179 µsnone entered
Ridge point by precision
PrecisionSustained peakRidge point (FLOP per byte)
FP6467 TFLOP/s20
FP3267 TFLOP/s20
TF32494.5 TFLOP/s147.6
BF16 or FP16989.5 TFLOP/s295.4
FP81,979 TFLOP/s590.7
INT81,979 TFLOP/s590.7
What if the HBM bandwidth changes: attainable rate of each kernel
KernelBandwidth x 0.5Bandwidth x 1Bandwidth x 2Bandwidth x 4
GEMM, large (8192 x 8192 x 8192)990 TFLOP/s990 TFLOP/s990 TFLOP/s990 TFLOP/s
GEMV in LLM decode (4096 x 4096 weights, batch 1)1.67 TFLOP/s3.35 TFLOP/s6.7 TFLOP/s13.4 TFLOP/s
Attention, fused (sequence 4096, head size 128)990 TFLOP/s990 TFLOP/s990 TFLOP/s990 TFLOP/s
Attention, unfused (sequence 4096, head size 128)104 TFLOP/s208 TFLOP/s416 TFLOP/s832 TFLOP/s
Convolution, 3 x 3 (batch 32, 64 channels, 56 x 56)481 TFLOP/s962 TFLOP/s990 TFLOP/s990 TFLOP/s
Elementwise add (100 million BF16 values)0.279 TFLOP/s0.558 TFLOP/s1.12 TFLOP/s2.23 TFLOP/s
What if the compute peak changes: attainable rate of each kernel
KernelPeak x 0.5Peak x 1Peak x 2Peak x 4
GEMM, large (8192 x 8192 x 8192)495 TFLOP/s990 TFLOP/s1,980 TFLOP/s3,960 TFLOP/s
GEMV in LLM decode (4096 x 4096 weights, batch 1)3.35 TFLOP/s3.35 TFLOP/s3.35 TFLOP/s3.35 TFLOP/s
Attention, fused (sequence 4096, head size 128)495 TFLOP/s990 TFLOP/s1,980 TFLOP/s3,960 TFLOP/s
Attention, unfused (sequence 4096, head size 128)208 TFLOP/s208 TFLOP/s208 TFLOP/s208 TFLOP/s
Convolution, 3 x 3 (batch 32, 64 channels, 56 x 56)495 TFLOP/s962 TFLOP/s962 TFLOP/s962 TFLOP/s
Elementwise add (100 million BF16 values)0.558 TFLOP/s0.558 TFLOP/s0.558 TFLOP/s0.558 TFLOP/s
Ridge point by accelerator at BF16 or FP16

A higher ridge point means more of your kernels sit on the memory side. Preset data sheet peaks, with the sustained shares above. No result means the data sheet gives no peak at that precision.

  • NVIDIA H100 SXM295.4
  • NVIDIA B200 (HGX, 1000 W)292.2
  • AMD Instinct MI300X246.7
  • Google TPU v5p166
  • Intel Gaudi 3 (OAM)453.5
Show the data as a table
Ridge point by accelerator at BF16 or FP16
ItemRidge point (FLOP per byte)
NVIDIA H100 SXM295.4
NVIDIA B200 (HGX, 1000 W)292.2
AMD Instinct MI300X246.7
Google TPU v5p166
Intel Gaudi 3 (OAM)453.5
The same kernels on each preset accelerator at BF16 or FP16
KernelNVIDIA H100 SXMNVIDIA B200 (HGX, 1000 W)AMD Instinct MI300XGoogle TPU v5pIntel Gaudi 3 (OAM)
GEMM, large (8192 x 8192 x 8192)990 TFLOP/s2,250 TFLOP/s1,310 TFLOP/s459 TFLOP/s1,680 TFLOP/s
GEMV in LLM decode (4096 x 4096 weights, batch 1)3.35 TFLOP/s7.7 TFLOP/s5.3 TFLOP/s2.76 TFLOP/s3.7 TFLOP/s
Attention, fused (sequence 4096, head size 128)990 TFLOP/s2,250 TFLOP/s1,310 TFLOP/s459 TFLOP/s1,680 TFLOP/s
Attention, unfused (sequence 4096, head size 128)208 TFLOP/s478 TFLOP/s329 TFLOP/s172 TFLOP/s230 TFLOP/s
Convolution, 3 x 3 (batch 32, 64 channels, 56 x 56)962 TFLOP/s2,210 TFLOP/s1,310 TFLOP/s459 TFLOP/s1,060 TFLOP/s
Elementwise add (100 million BF16 values)0.558 TFLOP/s1.28 TFLOP/s0.883 TFLOP/s0.461 TFLOP/s0.617 TFLOP/s

How it works

The roofline model shows the most a chip can do for a kernel, given two limits: how fast it can compute and how fast it can move data. A kernel's arithmetic intensity, the operations it performs for each byte it moves, decides which limit it meets first. Use it to see whether a kernel or a whole layer is memory bound or compute bound, how far it sits from the limit, and what a change in bandwidth or precision would do.

  1. Convert to SI units. Peaks are entered in GFLOP/s, TFLOP/s or PFLOP/s (TOPS for integer rates) and bandwidth in GB/s or TB/s, then converted to operations and bytes per second. The sustained shares scale each ceiling down to what benchmarks reach rather than the data sheet peak.peak = entered peak x unit x sustained compute share; bandwidth = entered bandwidth x unit x sustained bandwidth share
  2. Find each kernel's arithmetic intensity. Enter the operations and the bytes a kernel moves to or from memory, or enter its intensity directly. The bytes are those that reach the memory level being modelled, after caches have filtered the traffic.intensity = operations / bytes moved (FLOP per byte)
  3. Apply the roofline. Attainable performance is the lower of the compute peak and the rate memory can feed the kernel. On a log chart this is a sloped line for memory followed by a flat line for compute.attainable = min(peak, intensity x bandwidth)
  4. Find the ridge point. The ridge point is the intensity where the two limits meet. A kernel left of it is memory bound; a kernel right of it is compute bound. Each precision has its own peak and so its own ridge point.ridge point = peak / bandwidth (FLOP per byte)
  5. Add a second memory level. For a hierarchical roofline, give the bandwidth of an on-chip level such as SRAM or L2, and for each kernel the bytes moved at that level. The kernel is held by whichever limit is lowest: compute, HBM or the second level.attainable = min(peak, intensity HBM x bandwidth HBM, intensity L2 x bandwidth L2)
  6. Read the efficiency and the time. A measured rate divided by the attainable rate shows how much of the roofline a kernel reaches. If the operations are given, the time at the attainable rate is the lower bound on the kernel's run time.efficiency = measured / attainable; time = operations / attainable

Assumptions

  • Peaks are theoretical dense rates (no structured sparsity), taken from vendor data sheets and product pages. NVIDIA prints some peaks with sparsity; the presets here use the dense half.
  • Bytes moved are the traffic that reaches HBM. A kernel whose data fits in cache has an intensity against HBM that is higher than its intensity against the cache.
  • Memory and compute overlap perfectly, so the kernel runs at the lower of the two limits. Real kernels add latency, launch and synchronisation costs on top.
  • The kernel presets use the usual operation counts: 2MNK for a matrix multiply, 4 s^2 d for one attention head, and one operation per value for elementwise work. The sizes and byte counts are illustrative.

Limits and warnings

  • The model gives an upper bound, not a prediction. A kernel can sit well below its roof because of occupancy, tile shapes, instruction mix or communication.
  • Only the limits entered are modelled: network, PCIe or storage limits, and power or clock throttling, need their own ceilings.
  • One peak per precision is used. Mixed-precision kernels, and kernels whose operations run on different units (vector and matrix), should be split into rows.
  • Vendors count operations in different ways (a fused multiply-add as two operations is the usual choice). Compare chips only on figures counted the same way.
  • Second-level bandwidths are often not published; where the data sheet gives none, the preset leaves the level empty.

Sources

The methods and default figures rest on these public sources. The wording here is our own; read the source for its full text.

Where it helps

The lifecycle stages this tool serves: 5 stages in 2 lifecycles.

Method notev1Formula, ranges, sources and limits

Finds the ridge point of an accelerator at a chosen precision and the attainable performance of the default set of kernels from peak compute, memory bandwidth and arithmetic intensity.

Formula

peak = entered peak x unit x sustained compute share; bandwidth = entered bandwidth x unit x sustained bandwidth share; intensity = operations / bytes moved (FLOP per byte); attainable = min(peak, intensity x bandwidth); ridge point = peak / bandwidth (FLOP per byte); attainable = min(peak, intensity HBM x bandwidth HBM, intensity L2 x bandwidth L2); efficiency = measured / attainable; time = operations / attainable

Inputs
InputUnitRange it holds forComes from
Unit of the compute peakschoicegflops, tflops, pflopsYour figure
Peak FP64entered unitfrom 0Your figure
Peak FP32entered unitfrom 0Your figure
Peak TF32entered unitfrom 0Your figure
Peak BF16 or FP16entered unitfrom 0Your figure
Peak FP8entered unitfrom 0Your figure
Peak INT8entered unitfrom 0Your figure
Unit of the bandwidthschoicegbs, tbsYour figure
HBM bandwidthentered unitfrom 0Your figure
Second-level bandwidthentered unit, 0 for nonefrom 0Your figure
Sustained share of peak compute%1 to 100Your figure
Sustained share of memory bandwidth%1 to 100Your figure
Precision for the ridge point and the chartchoicefp64, fp32, tf32, bf16, fp8, int8Your figure
Unit of kernel operationschoicemflop, gflop, tflopYour figure
Unit of kernel byteschoicekb, mb, gbYour figure

Outputs: Ridge point at the chart precision (FLOP per byte); Sustained peak at the chart precision (TFLOP/s); Sustained HBM bandwidth (TB/s); Attainable rate of the first kernel (TFLOP/s); Memory bound kernels (count).

Assumptions

  • Peaks are theoretical dense rates (no structured sparsity), taken from vendor data sheets and product pages. NVIDIA prints some peaks with sparsity; the presets here use the dense half.
  • Bytes moved are the traffic that reaches HBM. A kernel whose data fits in cache has an intensity against HBM that is higher than its intensity against the cache.
  • Memory and compute overlap perfectly, so the kernel runs at the lower of the two limits. Real kernels add latency, launch and synchronisation costs on top.
  • The kernel presets use the usual operation counts: 2MNK for a matrix multiply, 4 s^2 d for one attention head, and one operation per value for elementwise work. The sizes and byte counts are illustrative.

Uncertainty: The arithmetic is exact. The result is an upper bound that is as good as the peaks and byte counts entered; measured kernels commonly reach 50 to 90 percent of the roofline.

Known limits

  • The model gives an upper bound, not a prediction. A kernel can sit well below its roof because of occupancy, tile shapes, instruction mix or communication.
  • Only the limits entered are modelled: network, PCIe or storage limits, and power or clock throttling, need their own ceilings.
  • One peak per precision is used. Mixed-precision kernels, and kernels whose operations run on different units (vector and matrix), should be split into rows.
  • Vendors count operations in different ways (a fused multiply-add as two operations is the usual choice). Compare chips only on figures counted the same way.
  • Second-level bandwidths are often not published; where the data sheet gives none, the preset leaves the level empty.

Where the method comes from

Follows Williams, Waterman and Patterson, Roofline: an insightful visual performance model for multicore architectures (Communications of the ACM, April 2009) (opens in a new tab). The platform's version departs from it as follows.

  • Peaks come from vendor data sheets, scaled by a sustained share, instead of microbenchmarks run on the machine Why: Most people sizing an accelerator cannot run microbenchmarks on it first, so a data sheet figure with an adjustable share is the practical start.
  • A second memory level can be added as a hierarchical roofline, with its own bytes for each kernel Why: Accelerators with large on-die SRAM or caches have a second bandwidth limit that the single DRAM line does not show.

Reference example, checked by test: Worked example in this method note: the H100 SXM preset (dense BF16 peak 989.5 TFLOP/s, HBM 3.35 TB/s), whose ridge point is 989.5e12 / 3.35e12 = 295.4 FLOP per byte; the first kernel is an 8192 cubed BF16 matrix multiply with an intensity of about 2,731, so it is compute bound at the peak. Ridge point at the chart precision 295.373; Sustained peak at the chart precision 989.5; Sustained HBM bandwidth 3.35; Attainable rate of the first kernel 989.5; Memory bound kernels 4.

Versions

  • v1 (2026-10-25): First version, built from the tool idea.

All models in the register

Terms on this page

Arithmetic intensity
The ratio of arithmetic operations performed to bytes moved from memory for a given computation.
Chip
The everyday word for a finished integrated circuit, used loosely for both the bare die and the packaged part sold to a customer.
Kernel
In GPU programming, a function launched across a grid of many threads on the device.
Roofline model
A visual performance model that plots attainable throughput against arithmetic intensity, capped by a horizontal peak-compute roof and a sloping memory-bandwidth roof.
Bandwidth
In meeting jargon, a person's or team's available working capacity rather than any data rate.
TOPS
A throughput figure for AI accelerators, counting trillions of multiply-accumulate-class operations per second, usually quoted at INT8 precision.
Datasheet
The authoritative customer-facing document giving a part's electrical characteristics, absolute maximum ratings, timing, pinout, package drawing and ordering information.
Cache
A small fast memory holding recently or likely used data close to the processor, normally SRAM arranged in levels L1, L2 and L3.
SRAM
A volatile memory that holds each bit in a cross-coupled inverter latch, keeping its value as long as power is applied and needing no refresh.
Level 2
Automation in which the system controls both steering and acceleration/braking within its design limits while the driver must continuously supervise and remain responsible for object and event dete...
HBM
A JEDEC standard DRAM built as a vertical stack of core dice on a base die, connected by through-silicon vias and presenting a very wide, relatively slow interface.
Sparsity
The property of a tensor having many zero entries, which hardware can exploit by skipping the corresponding multiplications and by storing only non-zeros.

The full glossary

Need help acting on this?

Tell us what you're after and leave your email: we'll connect you with the right person on the Hub.