Architecture-specific kernels
Optimized code paths target instruction sets such as ARM NEON, x86 SIMD extensions, and WebAssembly SIMD.
Download the XNNPACK source archive and understand how its optimized kernels accelerate inference across ARM, x86, WebAssembly, RISC-V, and supported mobile, desktop, server, and web environments.
XNNPACK is not a desktop app with its own interface. It is a highly optimized neural network inference library designed to provide fast operator implementations for CPU execution. Frameworks can use these primitives for convolutions, pooling, fully connected layers, activations, tensor transforms, and other common inference work.
Instead of using one generic implementation everywhere, XNNPACK selects architecture-appropriate kernels and execution paths so a model can better use SIMD instructions, available CPU threads, and platform-specific capabilities.
Each capability addresses a real CPU inference challenge without relying on decorative or invented performance claims.
Optimized code paths target instruction sets such as ARM NEON, x86 SIMD extensions, and WebAssembly SIMD.
The library can select an appropriate micro-kernel path based on the target architecture and available CPU features.
Common convolutional, pooling, fully connected, activation, elementwise, and tensor transformation operators are included.
Work can be distributed through a thread pool so supported workloads can use multiple CPU cores effectively.
XNNPACK is used through higher-level runtimes and backend integrations instead of requiring every app to call low-level operators directly.
The source can be built for mobile, desktop, server, embedded, and web targets with an appropriate toolchain.
XNNPACK usually sits below the model-facing API. The framework prepares an execution plan, hands supported work to the backend, and the backend dispatches optimized kernels for the current CPU.
The main button below uses the direct ZIP archive for the current master branch. XNNPACK is source code, so the archive must be extracted and built or integrated through a supported framework workflow.
No installer or executable is included. Extract the archive before building.
Support varies by architecture, operating system, and available instruction set. These groups reflect the official project’s listed targets.
ARM64 spans Android, iOS, macOS, Linux, and Windows. ARMv7 uses NEON on Android; ARMv6 uses VFPv2 on Linux.
Supported up to AVX512 across Windows, Linux, macOS, Android, and the iOS simulator.
Use the project’s build documentation for platform-specific flags. The simplified workflow below helps you understand what happens after the source archive is downloaded.
Read the complete download guideThese are infrastructure-level use cases rather than standalone-app features.
Use a framework integration that delegates supported operators to optimized CPU kernels when a GPU or dedicated accelerator is unavailable, unsuitable, or unnecessary.
Support CPU-based inference paths in web runtimes that can take advantage of modern WebAssembly capabilities.
Build for supported ARM, RISC-V, or other listed architectures when a compact native inference backend is needed.
Use supported x86, x86-64, or ARM64 targets where a native runtime needs optimized operator execution without requiring a dedicated accelerator.
Integrate XNNPACK beneath a higher-level model API to handle supported operator execution and architecture-specific kernel dispatch.
Understand source archives, repository branches, extraction, and the next build step.
Read guide →Prepare a Windows toolchain and avoid common path, compiler, and configuration problems.
Read guide →Work through dependency, compiler, generator, architecture, and cache issues in a sensible order.
Read guide →Clear answers for developers deciding whether to download, build, or use XNNPACK through a framework.