Winograd Convolution is an algorithm that transforms the input and filter tensors of a small convolution (e.g., 3x3) into a different mathematical domain using minimal addition operations. This transformation allows the core convolution to be computed with significantly fewer multiplications than the direct method. The algorithm is particularly effective for accelerating layers in models like ResNet and MobileNet on hardware where multiplication is more expensive than addition, such as many neural processing units (NPUs) and mobile CPUs.
Glossary
Winograd Convolution

What is Winograd Convolution?
Winograd Convolution is a foundational algorithmic optimization that reduces the multiplicative complexity of small-kernel convolutions, a core operation in convolutional neural networks (CNNs).
The efficiency gain is mathematically proven for small filter sizes, with the Winograd minimal filtering algorithm, F(2x2, 3x3), reducing multiplications by ~2.25x. However, it introduces transform overhead and can increase numerical error or activation memory footprint. Its use is therefore a hardware-aware trade-off, often managed by graph compilers like TVM, which apply it selectively to layers where the arithmetic reduction outweighs the transformation cost on the target accelerator's memory hierarchy.
Key Characteristics of Winograd Convolution
Winograd Convolution is an algorithmic transformation that reduces the multiplicative complexity of small-kernel convolutions, a dominant operation in convolutional neural networks (CNNs), by leveraging polynomial-based transformations to minimize expensive floating-point operations (FLOPs).
Algorithmic Foundation: Minimal Filtering
The core innovation is the Winograd minimal filtering algorithm, which reframes 1D and 2D convolutions as polynomial multiplications. For small filters (e.g., F(2x2) or F(3x3)), it applies a mathematical transformation (using Toom-Cook algorithm or similar) to the input tile and filter. This transforms the operation into a domain where the element-wise multiplication requires fewer operations than the direct spatial convolution or the Im2col + GEMM approach. The results are then transformed back to the spatial domain. The key metric is the reduction in multiply-accumulate (MAC) operations, which directly translates to lower computational latency and power consumption on NPUs.
Primary Benefit: FLOP Reduction
The most cited advantage is a significant reduction in floating-point operations (FLOPs). For a standard 3x3 convolution, the Winograd F(6x6, 3x3) algorithm can compute outputs for a 6x6 tile using far fewer multiplications than the naive 3x3 sliding window approach.
- Theoretical Gain: For an
r x rfilter, Winograd can reduce the number of multiplications by a factor proportional to the tile size. The classic F(4x4, 3x3) transformation uses 16 multiplications versus 36 in direct convolution for the same output tile—a 2.25x reduction. - Practical Impact: This FLOP reduction directly targets the compute-bound regime of NPU execution, allowing more convolutions per second or reducing the power required per inference. It is particularly effective for layers with small kernels and unit stride, which are common in modern CNNs like ResNet and MobileNet.
Hardware Trade-off: Increased Memory & Transform Overhead
The FLOP savings come with inherent costs that must be managed by the NPU's memory hierarchy and compiler:
- Increased Memory Footprint: The input and filter transformation steps create intermediate tensors. While these are smaller than the full Im2col matrix, they still increase the activation memory requirements compared to a direct, fused convolution kernel.
- Transform Overhead: The pre- and post-transformations (applying matrices Aᵀ, B, and G) add additional arithmetic operations (additions, subtractions). On hardware with extremely fast multipliers but slower adders, or with limited on-chip SRAM, this overhead can diminish the net gain.
- Compiler Complexity: The NPU compiler must automatically identify convolution patterns suitable for Winograd, manage the tiling of input feature maps, and schedule the transformation kernels efficiently alongside the element-wise multiplications. This requires sophisticated graph compilation and kernel fusion strategies.
Numerical Precision & Stability
The transformation matrices contain non-integer values (often simple fractions like 1/2, 1/4), which can introduce numerical error during the forward and inverse transforms.
- Error Accumulation: The element-wise multiplications are performed on transformed values, which can have a different dynamic range than the original inputs. This can lead to increased quantization error when using low-precision data types like INT8 or FP16.
- Impact on Training & Quantization: While highly effective for inference, using Winograd during training requires careful consideration. Some frameworks use it only in inference-optimized graphs. For Post-Training Quantization (PTQ), the calibration process must account for the transformation's effect on activation distributions. Quantization-Aware Training (QAT) can learn to compensate for this error.
- Mitigation: Using higher intermediate precision (e.g., FP32 for transforms even with INT8 weights) or employing numerically stable transformation variants are common strategies in production compilers like TVM or vendor SDKs.
Compiler & Hardware Integration
Effective deployment requires deep integration into the NPU's software stack.
- Automatic Pattern Detection: The compiler (e.g., Apache TVM, MLIR) must analyze the computational graph to identify convolution layers that match Winograd-eligible patterns (filter size, stride, dilation).
- Kernel Code Generation: The compiler generates highly optimized kernels for the transformation (Winograd data transform) and inverse transform (Winograd inverse transform), as well as the batched element-wise multiplication. These kernels must be tuned for the NPU's memory hierarchy and vector processing units.
- Vendor SDK Support: NPU vendors (e.g., NVIDIA TensorRT, Qualcomm SNPE, Intel OpenVINO) often provide pre-optimized Winograd implementations as part of their graph optimizer passes. The performance gain is thus dependent on the quality of these vendor-provided fused kernels and their mapping to hardware intrinsics.
Use Case: Dominant in Vision Models
Winograd convolution is most beneficial in specific, high-impact scenarios:
- Computer Vision CNNs: It is a cornerstone optimization for deploying models like ResNet-50, EfficientNet, and MobileNetV2/V3 on edge NPUs and data center accelerators. The prevalence of 3x3 convolutions in these architectures makes Winograd highly applicable.
- Inference-Only Deployment: Due to numerical considerations, it is most widely used in inference engines where the model weights are fixed and the environment is controlled.
- Complementary Technique: It is often used in conjunction with other hardware-aware optimizations:
- Operator Fusion: Fusing the ReLU activation and bias addition with the Winograd inverse transform.
- Quantization: Applying INT8 Winograd for maximum throughput.
- Kernel Auto-Tuning: Searching for the optimal tile size (e.g., F(4x4, 3x3) vs. F(6x6, 3x3)) for a specific NPU's cache size and compute balance.
Winograd Convolution vs. Standard Convolution
A technical comparison of the Winograd minimal filtering algorithm against the standard direct convolution method, highlighting trade-offs in arithmetic complexity, memory usage, and hardware compatibility.
| Feature / Metric | Standard (Direct) Convolution | Winograd Minimal Filtering |
|---|---|---|
Core Algorithm | Direct sliding-window multiply-accumulate (MAC) operations. | Transforms input and filter via Winograd's minimal filtering algorithm, performs fewer element-wise multiplications, then transforms back. |
Arithmetic Complexity (for 3x3 filter, stride 1) | ~9 * H * W * C_in * C_out MACs | ~4 * H * W * C_in * C_out MACs (F(2x2, 3x3)) |
Primary Optimization Goal | Simplicity and direct hardware mapping. | Minimization of multiplicative operations (theoretically ~2.25x fewer for 3x3). |
Memory Overhead & Data Transformation | Low. Operates directly on input tensors. | High. Requires pre-transformation of input tiles and filters, and post-transformation of outputs, increasing temporary memory usage. |
Numerical Accuracy | High. Straightforward FP32/FP16 arithmetic. | Potentially lower. Transformation steps can introduce additional rounding errors, requiring careful implementation. |
Hardware & Kernel Compatibility | Universal. Efficiently maps to any architecture with GEMM or direct convolution units. | Selective. Benefits most from architectures with fast small matrix multiplications; overhead can negate gains on some hardware. |
Optimal Use Case | General-purpose, variable filter sizes, architectures where memory bandwidth is not the primary bottleneck. | Small, fixed filter sizes (especially 3x3), in compute-bound scenarios on supported hardware (e.g., certain NPUs/GPUs). |
Compiler & Framework Support | Native, first-class support in all frameworks (PyTorch, TensorFlow) and compilers (TVM, MLIR). | Specialized support. Often requires explicit enabling and hardware-specific library integration (e.g., cuDNN, ARM Compute Library). |
Framework and Hardware Support
Winograd convolution is not a monolithic algorithm but a family of optimizations whose practical implementation and performance are deeply tied to the underlying hardware architecture and the software frameworks that orchestrate computation.
Core Mathematical Foundation
Winograd convolution reduces the multiplicative complexity of small convolutions (e.g., 3x3, 5x5) by transforming the input and filter tiles into the Winograd domain using pre-defined transformation matrices (e.g., AT, G, BT). The core computation becomes a series of element-wise multiplications (Hadamard products) instead of a direct convolution, followed by an inverse transform. For a 3x3 filter with a 4x4 output tile (F(4x4, 3x3)), it reduces multiplications from 144 to 36, a 4x theoretical reduction, though it increases the number of additions for the transforms.
Framework Integration & APIs
Major deep learning frameworks implement Winograd as a backend optimization, often transparent to the user:
- cuDNN: Provides
cudnnConvolutionForward()withCUDNN_CONVOLUTION_FWD_ALGO_WINOGRADandCUDNN_CONVOLUTION_BWD_*_ALGO_WINOGRADalgorithms. It's automatically selected by the heuristics API (cudnnGetConvolutionForwardAlgorithm_v7). - oneDNN (Intel): Supports Winograd via primitive attributes and is a key optimization for CPU inference.
- TVM / Apache MXNet: Use graph-level rewriting passes to substitute standard convolution operators with Winograd variants when the filter size and stride conditions are met.
- PyTorch / TensorFlow: Leverage these underlying libraries (cuDNN, oneDNN) through their convolution operators; explicit API calls are generally not required.
Hardware-Specific Performance Trade-offs
The efficiency gain is highly dependent on the hardware's balance of compute throughput, memory bandwidth, and cache hierarchy:
- GPUs (NVIDIA): Excellent for Winograd due to high ALU throughput and shared memory for staging transformed tiles. The reduction in FLOPs directly translates to speedups, provided the transformation overhead is amortized.
- NPUs / Mobile GPUs: Often benefit, but the increased memory footprint for transformed data can be a critical constraint. Tile sizes (e.g., F(2x2, 3x3) vs. F(4x4, 3x3)) must be chosen to fit limited on-chip SRAM/cache.
- CPUs: Performance depends on efficient SIMD utilization (e.g., AVX-512) for the transformation matrices. The roofline model is essential: Winograd increases operational intensity, moving the kernel from being memory-bound toward being compute-bound.
Constraints and Applicability
Winograd is not universally applicable. Key constraints dictate its use:
- Filter Size: Primarily optimized for small, square filters (3x3 is ideal; 5x5 has variants). 1x1 or large filters are not suitable.
- Stride: Typically requires a stride of 1. Strided convolutions break the regular tile pattern.
- Numerical Precision: The transformation and element-wise multiplication can introduce numerical error accumulation, especially in lower precisions (FP16, INT8). This may require higher-precision intermediate buffers or scaling factors.
- Activation Functions: Fusing a non-linear activation (e.g., ReLU) post-convolution is straightforward, but fusion with more complex functions may require careful ordering.
Memory and Data Layout Implications
The optimization trades compute for increased memory traffic and temporary storage:
- Transformed Data Layout: Input and filter tiles are transformed, creating a non-standard data layout in memory. This often requires specialized kernel implementations rather than using standard GEMM libraries.
- Memory Footprint: The transformation matrices and intermediate tile buffers increase the memory footprint per layer. On memory-constrained edge devices, this can limit batch size or even prevent the use of larger tile variants.
- Data Reuse: A key benefit is enhanced data reuse within a tile after transformation, reducing demands on main memory bandwidth. Effective use of cache blocking (tiling) is crucial to realize this benefit.
Advanced Variants and Evolution
The basic algorithm has evolved to address its limitations:
- Winograd Minimal Filtering (Cook-Toom Algorithm): The general class of algorithms, with Winograd being a specific instance using polynomial interpolation.
- Fast Fourier Transform (FFT) Convolution: An alternative domain-transform method better suited for large filters.
- Spatial vs. Channel Adaptations: Modern implementations consider depthwise separable convolutions, where Winograd can be applied to the spatial depthwise step.
- Auto-Tuning: Frameworks like TVM's Auto-Scheduler (Ansor) can automatically search for the optimal Winograd tile size and transformation schedule for a specific hardware target, balancing FLOP reduction against memory and latency costs.
Frequently Asked Questions
Winograd Convolution is a foundational algorithm for accelerating small-kernel convolutions, a critical operation in neural networks. These questions address its core mechanics, trade-offs, and role in modern hardware-aware optimization.
Winograd Convolution is an algorithmic optimization that reduces the number of multiplicative operations required for small convolutional filters (e.g., 3x3, 5x5) by transforming the input tiles and filters into the Winograd domain using pre-defined, minimal linear transformation matrices. The core computation (element-wise multiplication) is performed in this transformed space, where it requires fewer multiplications than the direct spatial convolution, before the results are transformed back to the spatial domain. For a 3x3 filter with a 2x2 output tile (denoted F(2x2, 3x3)), the algorithm reduces the required multiplications from 36 to 16, a 2.25x theoretical reduction, by exploiting the mathematical structure of the convolution operation. This makes it a staple for optimizing layers in Convolutional Neural Networks (CNNs) on hardware where multiplication is a bottleneck.
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
Winograd Convolution is a key technique within a broader ecosystem of hardware-aware optimizations. These related concepts focus on reducing computational cost, managing memory, and tailoring algorithms for specific accelerator architectures.
Im2col Optimization
Im2col (Image to Column) is a foundational memory transformation technique for convolution. It rearranges local image patches from an input tensor into the columns of a matrix. This reformulation allows the convolution operation to be computed as a single, highly optimized General Matrix Multiply (GEMM), leveraging decades of BLAS library optimizations.
- Contrast with Winograd: While both transform convolution, Im2col aims for a general GEMM, often increasing memory footprint. Winograd uses a minimal algorithm specifically for small filters (e.g., 3x3, 5x5) to reduce the count of multiplications, a more arithmetic-focused optimization.
Operator Fusion
Operator Fusion is a critical compiler-level optimization that combines multiple sequential neural network operations into a single, fused computational kernel. Common fusions include Convolution + Bias Add + Activation (e.g., ReLU).
- Synergy with Winograd: A fused kernel implementing a Winograd-transformed convolution can eliminate the need to write the large intermediate transformed tensors back to slow global memory. The entire sequence—input transform, minimal matrix multiplications, and output transform—executes in fast on-chip memory, dramatically reducing memory bandwidth pressure and kernel launch overhead.
Loop Tiling
Loop Tiling (or blocking) is a compiler optimization that partitions loop iterations into smaller blocks or 'tiles' to improve data locality. The goal is to fit the working data set of a tile into fast, but limited, cache memory (SRAM on NPUs/GPUs) to minimize accesses to slower main memory (HBM/DRAM).
- Application to Winograd: The transformed Winograd matrices (e.g., AT, G, BT) and tile data must be carefully sized and scheduled to maximize reuse within the NPU's memory hierarchy. Tiling is essential for making the Winograd algorithm's data access patterns efficient on real hardware.
Graph Compilation
Graph Compilation is the process of transforming a high-level neural network computational graph (e.g., from PyTorch or TensorFlow) into an optimized, hardware-specific sequence of low-level operations or kernels. It applies a series of graph-level transformations like constant folding, dead code elimination, and pattern matching for optimizations like Winograd.
- Role for Winograd: The compiler must identify convolution patterns that are candidates for Winograd substitution (e.g., 3x3 filters with stride 1), verify numerical stability, and then lower the high-level
conv2dop into the specific sequence of transform and matrix multiply primitives required by the target NPU.
Roofline Model & Operational Intensity
The Roofline Model is an analytical performance model that visualizes attainable performance. Operational Intensity (Ops/Byte) is its key metric: the number of arithmetic operations performed per byte of data transferred from main memory.
- Analyzing Winograd: Winograd convolution increases operational intensity by reducing the number of FLOPs (multiplications) for the same amount of data. This moves the kernel's performance point higher on the roofline chart. However, the transformation steps add extra data movement; a successful implementation must ensure this overhead doesn't negate the arithmetic savings, keeping the kernel compute-bound rather than memory-bound.
Mixed-Precision Computation
Mixed-Precision Computation involves strategically using lower numerical precision (e.g., FP16, BF16, INT8) for certain tensors or operations to increase throughput and reduce memory footprint, while maintaining sufficient accuracy for the model's task.
- Interaction with Winograd: The Winograd algorithm's numerical stability can be more sensitive to reduced precision due to the transformation matrices. Successful deployment often requires:
- Using higher precision (FP32) for the transformation steps.
- Employing Quantization-Aware Training (QAT) to finetune a model where convolutions will be executed with Winograd in INT8.
- Careful analysis to ensure the error introduced by precision loss and the Winograd transformations remains within acceptable bounds.

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