Arithmetic intensity is a key hardware-agnostic performance metric defined as the ratio of arithmetic operations (FLOPs) performed to the number of bytes transferred between the processor and main memory (DRAM). It quantifies the balance between computation and data movement for a given kernel or algorithm. A high arithmetic intensity indicates a compute-bound workload, where performance is limited by the processor's peak FLOP/s. A low arithmetic intensity indicates a memory-bound workload, where performance is limited by the available memory bandwidth.
Glossary
Arithmetic Intensity

What is Arithmetic Intensity?
A fundamental metric for classifying computational workloads and predicting performance bottlenecks on modern hardware accelerators.
This metric is central to performance modeling, most notably in the Roofline Model, which uses arithmetic intensity to plot an application's attainable performance against the hardware's theoretical ceilings. Optimizations like kernel fusion, loop tiling, and memory coalescing aim to increase arithmetic intensity by reusing data in fast cache hierarchies, thereby reducing costly off-chip memory accesses. For NPUs and GPUs accelerating deep learning, maximizing arithmetic intensity is critical to saturating the high compute throughput of specialized units like Tensor Cores.
Key Characteristics of Arithmetic Intensity
Arithmetic intensity is a fundamental metric for classifying computational workloads and predicting their performance on modern hardware. Its characteristics determine whether an application will be limited by processor speed or memory bandwidth.
Definition and Formula
Arithmetic Intensity (AI) is formally defined as the ratio of total arithmetic operations (FLOPs) to the total bytes of data transferred between the processor and main memory (DRAM). It is calculated as:
AI = (Total FLOPs) / (Total Bytes Transferred)
- A high AI (>10-20 Ops/Byte) indicates a compute-bound kernel, where performance is limited by the processor's peak FLOP/s.
- A low AI (<1 Ops/Byte) indicates a memory-bound kernel, where performance is limited by the system's memory bandwidth (GB/s).
Determines Application Bounding
This metric is the primary classifier for application performance bottlenecks.
- Compute-Bound: Kernels like dense matrix multiplication (GEMM) or convolution with large filters have high AI. Performance scales with processor clock speed and core count.
- Memory-Bound: Kernels like element-wise operations (e.g., adding two vectors) or sparse matrix-vector multiply have low AI. Performance is dictated by the memory subsystem's bandwidth and latency. The Roofline Model uses AI to plot an application's attainable performance, capped by either the compute or memory roof.
Influenced by Memory Hierarchy
Effective AI is not fixed; it can be dramatically increased by compiler and programmer optimizations that exploit faster, on-chip memory.
- Data Reuse: Keeping data in caches, shared memory, or registers across multiple operations reduces accesses to slow DRAM, increasing the effective AI.
- Optimization Impact: Techniques like kernel tiling, loop fusion, and memory coalescing are designed specifically to reduce off-chip data movement, thereby transforming a memory-bound kernel into a compute-bound one for the hardware.
Hardware-Specific Target
The 'target' AI for a workload is hardware-dependent. It is the minimum AI required to become compute-bound on a given chip.
- Calculation:
Target AI = (Peak Compute (FLOP/s)) / (Peak Memory Bandwidth (Bytes/s)). - Example: An NPU with 100 TFLOPS and 400 GB/s bandwidth has a target AI of 250 Ops/Byte. A kernel must exceed this AI to fully utilize the compute units.
- Implication: Hardware with extremely high compute throughput (like modern AI accelerators) requires correspondingly high AI kernels, motivating advanced data reuse strategies.
Relation to Kernel Fusion
Kernel fusion is a primary optimization to increase arithmetic intensity. By fusing multiple operations (e.g., a convolution, bias add, and ReLU) into a single kernel:
- Eliminates Intermediate Stores: Outputs of one operation are kept in registers/cache and fed directly to the next operation.
- Reduces Global Memory Traffic: The fused kernel writes only the final result to DRAM, not every intermediate tensor.
- Increases Effective AI: The total FLOP count remains similar, but the total bytes transferred plummets, leading to a higher AI and moving the workload closer to being compute-bound.
Practical Examples and Ranges
Real-world AI values illustrate the spectrum of computational patterns:
- Extreme Memory-Bound (AI < 0.1): Vector addition, data copy.
- Memory-Bound (AI ~0.5-2): Sparse matrix operations, stencil computations.
- Compute-Bound (AI > 10): Dense Linear Algebra (BLAS Level 3 GEMM).
- Extreme Compute-Bound (AI > 100): Tensor Core operations on large matrices, where data is reused thousands of times. Understanding these ranges guides optimization priority: low-AI kernels benefit most from memory access optimizations, while high-AI kernels benefit from maximizing FLOP throughput.
Arithmetic Intensity
A fundamental metric for classifying computational workloads and predicting performance on modern hardware accelerators.
Arithmetic intensity is a key performance metric defined as the ratio of arithmetic operations (FLOPs) performed to the amount of data movement (bytes) between the processor and main memory (DRAM). It is the primary determinant of whether a computational kernel is compute-bound or memory-bound, directly informing optimization strategies within the Roofline Model.
A low arithmetic intensity indicates a memory-bound kernel, where performance is limited by available memory bandwidth. A high value indicates a compute-bound kernel, limited by peak processor throughput. Optimizations like kernel fusion and loop tiling aim to increase arithmetic intensity by reusing data in fast cache hierarchies, shifting the bottleneck from memory to compute.
Workload Examples by Arithmetic Intensity
Arithmetic intensity (AI = Ops/Byte) categorizes workloads as either compute-bound (limited by the processor's FLOPs) or memory-bound (limited by memory bandwidth). This classification dictates the optimal hardware target and compiler optimization strategy.
Memory-Bound Workloads (AI < 1)
These workloads perform few arithmetic operations per byte fetched from memory, saturating the memory bus long before the compute units. Performance is gated by DRAM bandwidth.
Key Examples:
- Vector Addition (SAXPY): AI ≈ 0.25. For each two loads and one store, only a single multiply-add is performed.
- Bandwidth-Bound Stencils: Simple nearest-neighbor operations on large grids.
- Data-Intensive Lookups: Table searches and gather/scatter operations.
Optimization Focus: Memory access patterns, coalescing, and prefetching to maximize effective bandwidth.
Moderate-Intensity Workloads (AI ≈ 1-10)
These workloads balance compute and memory pressure. Performance can be limited by either bandwidth or compute, depending on the hardware architecture and optimization level.
Key Examples:
- Matrix-Vector Multiplication (GEMV): AI typically between 1 and 5, depending on matrix size.
- 1D and 2D Convolutions: With small kernels, the reuse of input data is limited.
- Reduction Operations: Summation or finding max/min across arrays.
Optimization Focus: Exploiting data reuse via tiling to move data into caches, and improving instruction-level parallelism.
Compute-Bound Workloads (AI > 10)
These workloads perform many operations on each byte of data, keeping the compute units saturated. Performance approaches the processor's peak theoretical FLOPs.
Key Examples:
- Dense Matrix Multiplication (GEMM): AI scales with matrix dimension (N), often reaching 100s of Ops/Byte for large N due to massive data reuse.
- Deep Convolutional Layers: Large 3x3 or 7x7 kernels with many input/output channels enable high operational intensity.
- Fast Fourier Transforms (FFTs): For large transforms, the log(N) stages enable significant data reuse.
Optimization Focus: Maximizing data reuse via multi-level tiling, leveraging specialized units (e.g., Tensor Cores), and minimizing operation overhead via kernel fusion.
Compiler Strategy by Intensity
The arithmetic intensity of a kernel dictates the primary compiler optimization strategy.
For Memory-Bound Kernels (Low AI):
- Goal: Reduce bytes moved. Optimize for bandwidth.
- Techniques: Memory coalescing, vectorized loads/stores, loop interchange for stride-1 access, software prefetching.
For Compute-Bound Kernels (High AI):
- Goal: Maximize FLOP/s. Optimize for compute throughput.
- Techniques: Aggressive loop tiling for cache/register reuse, kernel fusion to eliminate intermediate stores, loop unrolling and software pipelining for ILP, leveraging mixed-precision and Tensor Cores.
Impact of Kernel Fusion on Intensity
Kernel fusion is a primary technique for transforming memory-bound sequences into compute-bound kernels.
Mechanism: By fusing multiple operations (e.g., Conv → Bias → ReLU), intermediate results are kept in fast registers or shared memory instead of being written to and read from slow global memory.
Effect on Arithmetic Intensity:
- Fused Kernel AI ≈ (Ops₁ + Ops₂) / (Bytes_in + Bytes_out)
- The denominator (bytes transferred) is dramatically reduced by eliminating the intermediate Bytes_intermediate.
- This can shift a workload from the memory-bound to the compute-bound region of the Roofline Model, unlocking higher performance.
Compiler Optimizations and Their Impact on Arithmetic Intensity
This table compares common compiler optimizations, their primary mechanism, and their direct effect on a kernel's arithmetic intensity, classifying them as either increasing, decreasing, or having a neutral impact on this key performance metric.
| Optimization | Primary Mechanism | Impact on Arithmetic Intensity | Typical Effect on Performance | Applicability to NPUs |
|---|---|---|---|---|
Kernel Fusion | Merges separate kernels | Increases | Reduces global memory traffic, higher FLOPs/byte | |
Loop Fusion | Combines adjacent loops | Increases | Improves data locality, reduces loop overhead | |
Operation Fusion | Fuses primitive tensor ops | Increases | Eliminates intermediate stores/loads | |
Kernel Tiling | Partitions iteration space | Increases | Exploits faster memory (shared/registers) | |
Loop Unrolling | Replicates loop body | Neutral | Reduces loop overhead, increases ILP | |
Memory Coalescing | Combines thread memory accesses | Neutral | Maximizes effective memory bandwidth | |
Software Pipelining | Overlaps loop iterations | Neutral | Hides instruction/memory latency | |
Register Spilling | Moves values to memory | Decreases | Increases slower memory accesses | |
Warp Divergence | Serializes branch paths | Decreases | Reduces parallel efficiency, wastes cycles | |
Common Subexpression Elimination (CSE) | Removes redundant calculations | Increases | Reduces total FLOPs, constant effect on memory |
Frequently Asked Questions
Arithmetic intensity is a fundamental performance metric for computational workloads, especially on hardware accelerators like NPUs and GPUs. It determines whether a kernel's execution is limited by the processor's computational power or by its ability to move data.
Arithmetic intensity is a key performance metric defined as the ratio of the number of arithmetic operations (e.g., FLOPs) performed to the amount of data transferred between the processor and main memory (DRAM), measured in operations per byte. It classifies workloads as either compute-bound (high intensity) or memory-bound (low intensity). A high arithmetic intensity indicates that the processor performs many calculations for each byte fetched from memory, making it efficient. Conversely, low intensity means performance is gated by memory bandwidth, as the processor spends more time waiting for data than computing.
Formula: Arithmetic Intensity = Total Operations (FLOPs) / Total Data Movement (Bytes).
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
Arithmetic intensity is a foundational metric for performance analysis. These related concepts define the boundaries, bottlenecks, and optimization strategies for compute-bound and memory-bound workloads on modern accelerators.
Roofline Model
An analytical performance model that visualizes an application's attainable performance as a function of its arithmetic intensity. It plots performance (FLOPS) against operational intensity (FLOPs/byte).
- Key Feature: Establishes two hard ceilings: a memory bandwidth roof (for low-intensity apps) and a compute roof (for high-intensity apps).
- Primary Use: Diagnosing whether a kernel is compute-bound or memory-bound and quantifying potential performance headroom.
- Example: A convolution with high arithmetic intensity operates near the compute roof, while an element-wise activation is typically constrained by the memory roof.
Compute-Bound
A state where a computational kernel's performance is limited by the peak compute throughput (FLOPS) of the processor, not by memory bandwidth. This occurs when arithmetic intensity is high.
- Characteristic: The kernel performs many arithmetic operations for each byte of data fetched from memory.
- Optimization Target: Focus shifts to maximizing instruction-level parallelism (ILP), improving kernel occupancy, and utilizing specialized units like Tensor Cores.
- Typical Workloads: Dense matrix multiplication (GEMM), large convolutions, and high-order stencils.
Memory-Bound
A state where a kernel's performance is limited by the available memory bandwidth, not the processor's computational capabilities. This is the dominant bottleneck for low-arithmetic-intensity operations.
- Characteristic: The kernel performs few arithmetic operations per byte transferred from main memory (DRAM).
- Optimization Target: Techniques to reduce or hide memory latency are critical, including memory coalescing, kernel tiling to use caches, and prefetching.
- Typical Workloads: Element-wise operations (e.g., ReLU), vector addition, and sparse matrix-vector multiplication.
Operational Intensity
A quantitative metric, synonymous with arithmetic intensity, defined as the ratio of total floating-point operations (FLOPs) to total bytes of data transferred between the processor and DRAM.
- Calculation:
Operational Intensity = Total FLOPs / Total DRAM Bytes Transferred. - Units: Measured in FLOPs/byte.
- Critical Value: The ridge point of the roofline model, where the memory and compute roof intersect. Kernels with intensity above this point are compute-bound; below it, they are memory-bound.
Data Locality
A principle central to achieving high arithmetic intensity, referring to the design of algorithms and memory access patterns to reuse data that is already in fast, on-chip memory.
- Mechanism: By keeping frequently accessed data in registers, shared memory, or caches, the number of costly accesses to slow global memory (DRAM) is drastically reduced.
- Key Transformations: Compiler optimizations like loop tiling, loop fusion, and kernel fusion are applied explicitly to improve data locality.
- Impact: Directly increases the effective arithmetic intensity of a kernel by lowering the denominator (bytes from DRAM) in its calculation.
Kernel Fusion
A compiler optimization that merges multiple separate computational kernels into a single, compound kernel. This is a primary technique for artificially increasing arithmetic intensity.
- How it Works: Eliminates intermediate stores of results to global memory between operations. Fused data is kept in registers or shared memory.
- Example: Fusing a convolution, bias add, and ReLU activation into one kernel prevents writing the convolution output to DRAM only to immediately read it back for the next step.
- Benefit: Transforms multiple memory-bound operations into a single, higher-intensity compute-bound kernel, dramatically improving performance.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us