
oneAPI Deep Neural Network Library (oneDNN) is an open-source cross-platform performance library of basic building blocks for deep learning applications. oneDNN project is part of the
and is an implementation of the
for oneDNN component.
The library is optimized for Intel 64/AMD64 architecture based processors, Arm(R) 64-bit Architecture (AArch64)-based processors, and Intel Graphics. oneDNN has experimental support for the following architectures: NVIDIA* GPU, AMD* GPU, OpenPOWER* Power ISA (PPC64), IBMz* (s390x), and RISC-V.
oneDNN is intended for deep learning applications and framework developers interested in improving application performance on CPUs and GPUs.
Deep learning practitioners should use one of the applications enabled with oneDNN:
Table of Contents
Documentation
oneDNN Developer Guide and Reference
explains the programming model, supported functionality, implementation details, and includes annotated examples.
provides a comprehensive reference of the library API.
explain the new features, performance optimizations, and improvements implemented in each version of oneDNN.
System Requirements
oneDNN supports platforms based on the following architectures:
,
Arm 64-bit Architecture (AArch64)
.
/
.
.
.
WARNING
Power ISA (PPC64), IBMz (s390x), and RISC-V (RV64) support is experimental with limited testing validation.
The library is optimized for the following CPUs:
Intel 64/AMD64 architecture Intel Xeon(R) processor E3, E5, and E7 family v3+ lineups (formerly Haswell and Broadwell)
Intel Xeon Scalable processor (formerly Skylake, Cascade Lake, Cooper Lake, Ice Lake, Sapphire Rapids, and Emerald Rapids)
Intel Xeon CPU Max Series (formerly Sapphire Rapids HBM)
Intel Core Ultra processors (formerly Meteor Lake, Arrow Lake, Lunar Lake, and Panther Lake)
Intel Xeon 6 processors (formerly Sierra Forest and Granite Rapids)
future Intel Core processor with Intel AVX10.2 instruction set support (code name Nova Lake)
future Intel Xeon processor with Intel AVX10.2 instruction set support (code name Diamond Rapids)
AArch64 architecture Arm Neoverse(TM) N-Series and V-Series
On a CPU based on Intel 64 or on AMD64 architecture, oneDNN detects the instruction set architecture (ISA) at runtime and uses just-in-time (JIT) code generation to deploy the code optimized for the latest supported ISA. Future ISAs may have initial support in the library disabled by default and require the use of run-time controls to enable them. See
for more details.
WARNING
On macOS, applications that use oneDNN may need to request special entitlements if they use the hardened runtime. See the
for more details.
The library is optimized for the following GPUs:
Intel discrete GPUs: Intel Arc(TM) A-Series Graphics (formerly Alchemist)
Intel Data Center GPU Flex Series (formerly Arctic Sound)
Intel Data Center GPU Max Series (formerly Ponte Vecchio)
Intel Arc B-Series Graphics and Intel Arc Pro B-Series Graphics (formerly Battlemage)
future discrete GPUs based on Xe3p-XPC architecture (code name Crescent Island)
Intel Graphics integrated with: Intel Graphics for Intel Core Ultra Series 1 processors (formerly Meteor Lake)
Intel Graphics for Intel Core Ultra Series 2 processors (formerly Arrow Lake and Lunar Lake)
Intel Graphics for Intel Core Ultra Series 3 processors (formerly Panther Lake)
Intel Graphics for Intel Core Series 3 processors (formerly Wildcat Lake)
Intel Graphics for future Intel Core Ultra processors (code name Nova Lake)
Requirements for Building from Source
oneDNN supports systems meeting the following requirements:
Operating system with Intel 64/AMD64, AArch 64, PPC64, or s390x architecture support
C++ compiler with C++11 standard support
3.13 or later
The following tools are required to build oneDNN documentation:
1.8.5 or later
2.1.2 or later
7.4.7 or later
1.2.0 or later
0.5.2 or later
2.40.1
Configurations of CPU and GPU engines may introduce additional build time dependencies.
CPU Engine
oneDNN CPU engine is used to execute primitives on Intel 64/AMD64 based processors, 64-bit Arm Architecture (AArch64) processors, 64-bit Power ISA (PPC64) processors, IBMz (s390x), and compatible devices.
The CPU engine is built by default but can be disabled at build time by setting ONEDNN_CPU_RUNTIME to NONE. In this case, GPU engine must be enabled. The CPU engine can be configured to use the OpenMP, TBB or SYCL runtime. The following additional requirements apply:
OpenMP runtime requires C++ compiler with OpenMP 2.0 or later standard support
TBB runtime requires
Threading Building Blocks (TBB)
2017 or later.
SYCL runtime requires
Intel oneAPI DPC++/C++ Compiler
Threading Building Blocks (TBB)
Some implementations rely on OpenMP 4.0 SIMD extensions. For the best performance results on Intel Architecture Processors we recommend using the Intel C++ Compiler.
On a CPU based on Arm AArch64 architecture, oneDNN CPU engine can be built with
integration. ACL is an open-source library for machine learning applications and provides AArch64 optimized implementations of core functions. This functionality currently requires that ACL is downloaded and built separately. See
section of the Developer Guide for details. The minimum supported version of ACL is 53.1.0.
GPU Engine
oneDNN GPU engine is used to execute primitives on various accelerators including Intel integrated and discrete GPUs, NVIDIA GPUs, AMD GPUs, and other devices supporting SYCL programming language. The GPU engine is disabled in the default build configuration and can be enabled by setting ONEDNN_GPU_RUNTIME build option to value other than NONE. Target accelerator vendor must be selected at build time using ONEDNN_GPU_VENDOR build option.
WARNING
Linux will reset GPU when kernel runtime exceeds several seconds. The user can prevent this behavior by
for Intel GPU driver. Windows has built-in
timeout detection and recovery
mechanism that results in similar behavior. The user can prevent this behavior by increasing the
value.
The following additional requirements apply for Intel integrated and discrete GPUs:
With OpenCL(TM) runtime: OpenCL SDK (with OpenCL 1.2 support)
Intel Graphics Driver with support for OpenCL C 2.0, Intel subgroups support, and USM extensions support
With SYCL runtime:
Intel oneAPI DPC++/C++ Compiler
OpenCL SDK (with OpenCL 3.0 support)
with support for API v1.11 or later
Intel Graphics Driver with support for OpenCL C 2.0, Intel subgroups support, and USM extensions support
The following additional requirements apply for NVIDIA GPUs:
oneAPI DPC++ Compiler with support for CUDA
or
NVIDIA CUDA* driver
cuBLAS 10.1 or later
cuDNN 7.6 or later
WARNING
NVIDIA GPU support is experimental. General information, build instructions, and implementation limitations are available in the
.
The following additional requirements apply for AMD GPUs:
oneAPI DPC++ Compiler with support for HIP AMD
or
version 5.3 or later
version 2.18 or later (optional if AMD ROCm includes the required version of MIOpen)
version 2.45.0 or later (optional if AMD ROCm includes the required version of rocBLAS)
WARNING
AMD GPU support is experimental. General information, build instructions, and implementation limitations are available in the
.
Other devices supporting SYCL programming model require oneAPI DPC++/C++ Compiler that supports the target GPU. Refer to
documentation for additional details.
Runtime Dependencies
When oneDNN is built from source, the library runtime dependencies and specific versions are defined by the build environment.
Linux
Common dependencies:
GNU C Library (libc.so)
GNU Standard C++ Library v3 (libstdc++.so)
Dynamic Linking Library (libdl.so)
C Math Library (libm.so)
POSIX Threads Library (libpthread.so)
Runtime-specific dependencies:
Runtime configurationCompilerDependencyONEDNN_CPU_RUNTIME=OMPGCCGNU OpenMP runtime (libgomp.so)ONEDNN_CPU_RUNTIME=OMPIntel C/C++ CompilerIntel OpenMP runtime (libiomp5.so)ONEDNN_CPU_RUNTIME=OMPClangIntel OpenMP runtime (libiomp5.so)ONEDNN_CPU_RUNTIME=TBBanyTBB (libtbb.so)ONEDNN_CPU_RUNTIME=SYCLIntel oneAPI DPC++ CompilerIntel oneAPI DPC++ Compiler runtime (libsycl.so), TBB (libtbb.so), OpenCL loader (libOpenCL.so)ONEDNN_GPU_RUNTIME=OCLanyOpenCL loader (libOpenCL.so)ONEDNN_GPU_RUNTIME=SYCLIntel oneAPI DPC++ CompilerIntel oneAPI DPC++ Compiler runtime (libsycl.so), OpenCL loader (libOpenCL.so), oneAPI Level Zero loader (libze_loader.so)ONEDNN_GPU_RUNTIME=ZEanyoneAPI Level Zero loader (libze_loader.so)Windows
Common dependencies:
Microsoft Visual C++ Redistributable (msvcrt.dll)
Runtime-specific dependencies:
Runtime configurationCompilerDependencyONEDNN_CPU_RUNTIME=OMPMicrosoft Visual C++ CompilerNo additional requirementsONEDNN_CPU_RUNTIME=OMPIntel C/C++ CompilerIntel OpenMP runtime (iomp5.dll)ONEDNN_CPU_RUNTIME=TBBanyTBB (tbb.dll)ONEDNN_CPU_RUNTIME=SYCLIntel oneAPI DPC++ CompilerIntel oneAPI DPC++ Compiler runtime (sycl.dll), TBB (tbb.dll), OpenCL loader (OpenCL.dll)ONEDNN_GPU_RUNTIME=OCLanyOpenCL loader (OpenCL.dll)ONEDNN_GPU_RUNTIME=SYCLIntel oneAPI DPC++ CompilerIntel oneAPI DPC++ Compiler runtime (sycl.dll), OpenCL loader (OpenCL.dll), oneAPI Level Zero loader (ze_loader.dll)ONEDNN_GPU_RUNTIME=ZEanyoneAPI Level Zero loader (ze_loader.dll)macOS
Common dependencies:
System C/C++ runtime (libc++.dylib, libSystem.dylib)
Runtime-specific dependencies:
Runtime configurationCompilerDependencyONEDNN_CPU_RUNTIME=OMPIntel C/C++ CompilerIntel OpenMP runtime (libiomp5.dylib)ONEDNN_CPU_RUNTIME=TBBanyTBB (libtbb.dylib)Installation
You can download and install the oneDNN library using one of the following options:
Binary Distribution: You can download pre-built binary packages from the following sources:
: If the configuration you need is not available on the conda-forge channel, you can build the library using the Source Distribution.
Intel oneAPI:
Intel® oneDNN standalone package
Source Distribution: You can build the library from source by following the instructions on the
page.
Validated Configurations
x86-64 CPU engine was validated on RedHat* Enterprise Linux 8 with
GNU Compiler Collection 8.5, 9.5, 11.1, 11.3
Clang* 11.0, 14.0.6
Intel oneAPI DPC++/C++ Compiler
2025.1
on Windows Server* 2019 with
Microsoft Visual Studio 2022 with MSVC 19.43
Intel oneAPI DPC++/C++ Compiler
2025.1
on macOS 14 (Sonoma) with
Apple LLVM version 15.0
AArch64 CPU engine was validated on Ubuntu 22.04 with
GNU Compiler Collection 10.0, 13.0
Clang* 17.0
24.04
built for armv8-a arch, latest stable version available at the time of release
on macOS 14 (Sonoma) with
Apple LLVM version 15.0
GPU engine was validated on Ubuntu* 22.04 with
GNU Compiler Collection 8.5, and 9.5
Clang* 11.0
Intel oneAPI DPC++/C++ Compiler
2025.1
Intel Software for General Purpose GPU capabilities
latest stable version available at the time of release
on Windows Server* 2019 with
Microsoft Visual Studio 2022 with MSVC 19.43
Intel oneAPI DPC++/C++ Compiler
2025.1
Intel Arc & Iris Xe Graphics Driver
latest stable version available at the time of release
Support
Submit questions, feature requests, and bug reports on the
page.
You can also contact oneDNN developers via
using
channel.
Governance
oneDNN project is governed by the
and you can get involved in this project in multiple ways. It is possible to join the
AI Special Interest Group (SIG)
meetings where the groups discuss and demonstrate work using this project. Members can also join the Open Source and Specification Working Group meetings.
You can also join the
mailing lists for the UXL Foundation
to be informed of when meetings are happening and receive the latest information and discussions.
Contributing
We welcome community contributions to oneDNN. You can find the oneDNN release schedule and work already in progress towards future milestones in Github's
section. If you are looking for a specific task to start, consider selecting from issues that are marked with the
label.
See
to start contributing to oneDNN. You can also contact oneDNN developers and maintainers via
using
channel.
This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the
code of conduct.
License
oneDNN is licensed under
. Refer to the "
" file for the full license text and copyright notice.
This distribution includes third party software governed by separate license terms.
3-clause BSD license:
Instrumentation and Tracing Technology API (ITT API)
2-clause BSD license:
Apache License Version 2.0:
Boost Software License, Version 1.0:
MIT License:
Intel Graphics Compute Runtime for oneAPI Level Zero and OpenCL Driver
Intel Metrics Discovery Application Programming Interface
This third-party software, even if included with the distribution of other software, may be governed by separate license terms, including without limitation, third party license terms, other software license terms, and open source software license terms. These separate license terms govern your use of the third party programs as set forth in the "
" file.
Security
outlines our guidelines and procedures for ensuring the highest level of security and trust for our users who consume oneDNN.
———