MACC count is the total number of multiply-accumulate operations required for a single forward pass of a neural network, serving as a primary hardware-agnostic measure of computational workload and model complexity. Each MACC consists of a multiplication followed by an addition, forming the core arithmetic for convolutional layers and fully connected layers. It is a critical proxy for inference latency and energy consumption, especially in TinyML where every operation impacts battery life and real-time performance.
Glossary
MACC Count (Multiply-Accumulate Operations)

What is MACC Count (Multiply-Accumulate Operations)?
A fundamental computational metric for neural network workloads.
Calculating MACC count involves analyzing a model's architecture: for a convolutional layer, it is approximately (kernel_height * kernel_width * input_channels) * output_height * output_width * output_channels. Unlike FLOPs (floating-point operations), which often count multiplications and additions separately, one MACC is typically considered as two FLOPs. This metric is essential for hardware-aware neural architecture search, layer-wise profiling, and establishing the roofline model to identify if a system is compute-bound or memory-bound during inference.
Key Characteristics of MACC Count
MACC count quantifies the computational core of a neural network. It is a fundamental, hardware-agnostic metric for estimating workload, energy, and latency, especially critical for TinyML deployment on microcontrollers.
Definition and Core Operation
A Multiply-Accumulate (MAC) operation is a fused arithmetic instruction that computes a = a + (b * c). A MACC (Multiply-ACCumulate) count is the total number of these operations required for a single forward pass (inference) of a neural network. It is the primary driver of computational cost in layers like Convolutional, Fully Connected (Dense), and Recurrent layers.
- Example: A 3x3 convolution on a 32x32x3 input with 64 filters involves ~(3232333*64) ≈ 1.1 million MACCs.
- Notation: Often used interchangeably with FLOPs (Floating Point Operations), though technically 1 MACC = 2 FLOPs (one multiply, one add).
Hardware-Agnostic Complexity Metric
MACC count provides a platform-independent measure of a model's intrinsic computational complexity. It is derived solely from the model's architecture (layer types, dimensions, parameters) and is independent of:
- Target hardware (CPU, GPU, NPU, MCU).
- Software optimizations (kernel libraries, compiler).
- Data precision (FP32, INT8, binary).
This makes it a crucial first-order filter for selecting models for resource-constrained devices. A model with 10M MACCs is fundamentally more complex than one with 100K MACCs, regardless of implementation.
Primary Proxy for Energy and Latency
On microcontroller-based TinyML systems, energy consumption and inference latency are dominated by the cost of arithmetic operations. Therefore, MACC count serves as a strong correlative proxy for these critical metrics.
- Energy: Total energy ≈ (MACC Count) * (Energy per MACC). The energy per MACC depends on hardware, data type, and voltage.
- Latency: Inference time ≈ (MACC Count) / (Hardware MACCs per second). This relationship is most accurate for compute-bound layers where the processor's arithmetic units are the bottleneck.
Engineers use MACC count to quickly estimate if a model can meet a system's power budget or real-time latency requirements.
Layer-Wise Breakdown and Dominance
MACC count is not evenly distributed. In vision models, convolutional layers typically consume >90% of total MACCs. A detailed layer-wise profile is essential for optimization.
High-MACC Layers:
- Standard Convolutions: MACC = H_out * W_out * C_in * K_h * K_w * C_out.
- Fully Connected Layers: MACC = Input_Features * Output_Features.
Low-MACC Layers:
- Pooling, Activation, BatchNorm: Typically negligible MACC cost.
- Depthwise Separable Convolutions: Drastically reduce MACC count by separating spatial and channel filtering. This is a key optimization for MobileNet-style architectures.
Limitations and Complementary Metrics
While fundamental, MACC count is an incomplete picture. It must be analyzed with other metrics for accurate performance prediction:
- Memory-Bound Operations: Layers like Element-wise Add or Channel Concatenation have near-zero MACCs but can cause stalls due to memory bandwidth limits.
- Activation Memory: MACC count ignores the memory required to store intermediate feature maps (activations), which dictates peak SRAM usage—a critical constraint on MCUs.
- Control Overhead: The cost of data marshaling, loop control, and non-arithmetic instructions is not captured.
Thus, MACC count is best used with Peak Memory Usage and Operational Intensity analysis via a Roofline Model.
Role in Model Selection and NAS
MACC count is a direct optimization target in Neural Architecture Search (NAS) for edge devices. Search algorithms are constrained by a MACC budget (e.g., < 50M MACCs) to discover Pareto-optimal models on the Accuracy-Latency frontier.
Practical Use Case:
- Budget Definition: Determine max MACCs based on target device's compute capability and desired frame rate.
- Model Screening: Filter pre-trained models or NAS candidates by their published MACC count.
- Informed Trade-offs: Evaluate if a 5% accuracy gain is worth a 3x increase in MACC count for a given application.
Tools like TensorFlow Lite Micro's Profiler and MLPerf Tiny benchmarks report MACC counts for standardized comparison.
How MACC Count is Calculated and Applied
MACC count is a foundational hardware-agnostic metric for quantifying the computational workload of a neural network, critical for TinyML deployment on microcontrollers.
MACC count is the total number of multiply-accumulate operations required for a single forward pass of a neural network. It is calculated by summing the operations for each layer: for a fully connected layer, it is (input neurons × output neurons); for a convolutional layer, it is (output height × output width × output channels × kernel height × kernel width × input channels). This count serves as a primary proxy for computational complexity, energy consumption, and inference latency on compute-constrained hardware, independent of specific platform optimizations.
In practice, MACC count is applied during the model design and compression phase to compare architectures and guide optimization. Engineers use it alongside peak memory usage and operational intensity in a roofline model to identify if a layer or model is compute-bound or memory-bound on target hardware. While a lower MACC count generally indicates higher potential efficiency, the final throughput and energy per inference depend on hardware-specific factors like parallelization and memory hierarchy, making MACC a key input for hardware-aware neural architecture search.
MACC Count vs. FLOPs: A Key Distinction
A comparison of two fundamental metrics for quantifying the computational workload of neural networks, highlighting their definitions, typical usage, and implications for TinyML systems.
| Feature | MACC Count (Multiply-Accumulate) | FLOPs (Floating-Point Operations) | Relevance to TinyML |
|---|---|---|---|
Core Definition | Counts fused multiply-add (a*b + c) operations. | Counts individual floating-point operations (add, multiply, etc.). | MACC is the primary hardware-aligned metric for embedded inference. |
Typical Unit | MACCs or MMACs (Millions of MACCs). | FLOPs, GFLOPs (Giga-FLOPs). | MCU datasheets often specify peak MACCs/sec. |
Relationship | 1 MACC ≈ 2 FLOPs (one multiply + one add). | FLOPs = ~2 * MACCs (for dense layers). | Use MACC for precise hardware budgeting; FLOPs for high-level comparison. |
Hardware Alignment | Directly maps to a processor's multiply-accumulate (MAC) unit. | Abstract; a FLOP can be executed by various functional units. | Critical for estimating latency and energy on microcontrollers with MAC units. |
Common Use Case | Profiling convolutional and fully connected layers. | Theoretical peak performance of supercomputers/GPUs. | The standard for model complexity analysis in TensorFlow Lite for Microcontrollers. |
Precision Assumption | Often used for integer (INT8) or fixed-point arithmetic. | Inherently describes floating-point (FP32) operations. | TinyML models are often quantized (INT8), making MACC count the accurate measure. |
Measurement Scope | Counts core tensor operations; excludes activations, data movement. | Can be inflated by counting non-core operations separately. | Focuses on the dominant compute cost, which is the bottleneck. |
Primary Audience | Embedded systems engineers, hardware architects. | HPC researchers, data scientists. | TinyML performance engineers optimizing for real MCU constraints. |
Frequently Asked Questions
Essential questions about MACC Count (Multiply-Accumulate Operations), a fundamental metric for quantifying the computational complexity of neural networks, especially critical for resource-constrained TinyML deployment.
MACC Count is the total number of Multiply-Accumulate operations required for a single forward pass (inference) of a neural network. It is calculated by summing the operations for each layer. For a fully connected layer with M inputs and N neurons, the MACC count is M * N. For a convolutional layer, it is (K_h * K_w * C_in) * C_out * H_out * W_out, where K is the kernel size, C is the number of channels, and H_out/W_out are the output spatial dimensions. It serves as a hardware-agnostic proxy for computational workload and energy cost.
Key Points:
- One MACC = one multiplication followed by one addition (
a = a + (b * c)). - It is often approximated as equivalent to two FLOPs (Floating-Point Operations), though the exact equivalence depends on hardware implementation.
- It is a primary input for performance models like the Roofline Model to determine if a layer is compute-bound or memory-bound.
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
MACC count is a foundational metric for computational workload, but it must be analyzed alongside other key performance indicators to fully characterize a TinyML system's efficiency and feasibility for deployment.
FLOPs (Floating-Point Operations)
FLOPs count the total number of floating-point operations (additions, multiplications) required for a model's forward pass. While related to MACCs, they are distinct:
- MACC = 1 multiplication + 1 addition, often counted as 2 FLOPs.
- FLOPs provide a more general measure of computational complexity but are less hardware-specific for fixed-point microcontrollers where MACCs are the primary hardware primitive.
- Used for comparing theoretical compute requirements across different model architectures.
Operational Intensity
Operational Intensity is a critical metric that defines the balance between computation and memory access in an algorithm. It is calculated as:
Operational Intensity = (Operations, e.g., MACCs) / (Bytes of Data Moved from Main Memory)
- High Operational Intensity indicates a compute-bound kernel, where performance is limited by the processor's arithmetic units.
- Low Operational Intensity indicates a memory-bound kernel, where performance is limited by memory bandwidth.
- Analyzing MACC count alongside data movement reveals the true bottleneck on a given hardware platform.
Peak Memory Usage
Peak Memory Usage is the maximum amount of RAM (often SRAM on MCUs) consumed during inference. It is fundamentally linked to MACC count through activation memory.
- Each layer's output activations (the results of MACCs) must be stored in memory before being used by the next layer.
- Larger, more complex layers with high MACC counts typically produce larger activation tensors.
- For microcontrollers with severely constrained SRAM (e.g., 256KB), peak memory usage is often a more limiting deployment factor than MACC count alone.
Inference Latency
Inference Latency is the time to complete a single forward pass. While heavily influenced by MACC count, the relationship is not linear and depends on:
- Hardware Throughput: The MCU's clock speed and whether it has a hardware Multiply-Accumulate (MAC) unit.
- Memory Hierarchy: Time spent waiting for weights and activations (data identified by operational intensity).
- Software Kernels: Efficiency of the low-level operators executing the MACCs.
- A model with a high MACC count may still have low latency on hardware with high parallel MAC throughput, like a microNPU.
Energy per Inference
Energy per Inference is the total electrical energy consumed for one prediction. MACC count is its primary driver, as energy cost breaks down as:
- Dynamic Energy: Proportional to the number of transistor switches, which is directly tied to the number of MACCs performed.
- Static Energy: The idle leakage power, multiplied by the inference time (which is itself a function of MACC count and hardware).
- On ultra-low-power microcontrollers, optimizing the MACC count is the most direct path to minimizing energy consumption and extending battery life.
Layer-wise Profiling
Layer-wise Profiling is the practice of measuring resource consumption for each individual layer in a network. It connects high-level MACC counts to practical deployment:
- Tools like TensorFlow Lite Micro's profiler or vendor SDKs break down total MACC count, latency, and memory usage per layer.
- Identifies specific layers (e.g., large fully-connected or depthwise convolutions) that dominate the computational budget.
- Enables targeted optimization, such as applying aggressive quantization or pruning to high-MACC layers for maximal impact.

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