logo

oneDNN v3.9.0 documentation

About

  • Introduction

Get Started

  • System Requirements
  • Build from Source
  • Use Build Options
  • Link to the Library

Learn oneDNN

  • Key Concepts
  • Build oneDNN API Basic Workflow

Developer Guide

  • oneDNN Concepts
    • Memory Format Propagation
    • Inference and Training Aspects
      • Inference
      • Int8 Inference
      • Bfloat16 Training
    • Primitive Attributes
      • Primitive Attributes: floating-point math mode
      • Primitive Attributes: accumulation mode
      • Primitive Attributes: rounding mode
      • Primitive Attributes: deterministic
      • Primitive Attributes: Quantization
      • Primitive Attributes: Post-ops
      • Primitive Attributes: Scratchpad
    • Data Types
    • Reorder between CPU and GPU engines
    • API
    • Interoperability with DPC++ and OpenCL
      • OpenCL Interoperability
      • DPC++ Interoperability
  • Supported Primitives
    • Convolution
    • Inner Product
    • Matrix Multiplication
    • RNN
    • Batch Normalization
    • Binary
    • Concat
    • Eltwise
    • Group Normalization
    • Layer Normalization
    • Local Response Normalization (LRN)
    • Pooling
    • PReLU
    • Resampling
    • Shuffle
    • Softmax
    • Sum
    • Reorder
    • Reduction
  • Graph Extension
    • Programming Model
      • Basic Concepts
      • Low Precision
    • Supported Operations
      • Abs
      • AbsBackward
      • Add
      • AvgPool
      • AvgPoolBackward
      • BatchNormForwardTraining
      • BatchNormInference
      • BatchNormTrainingBackward
      • BiasAdd
      • BiasAddBackward
      • Clamp
      • ClampBackward
      • Concat
      • Convolution
      • ConvolutionBackwardData
      • ConvolutionBackwardWeights
      • ConvTranspose
      • ConvTransposeBackwardData
      • ConvTransposeBackwardWeights
      • Dequantize
      • Divide
      • DynamicDequantize
      • DynamicQuantize
      • Elu
      • EluBackward
      • End
      • Exp
      • GELU
      • GELUBackward
      • GenIndex
      • GreaterEqual
      • GroupNorm
      • HardSigmoid
      • HardSigmoidBackward
      • HardSwish
      • HardSwishBackward
      • Interpolate
      • InterpolateBackward
      • LayerNorm
      • LayerNormBackward
      • LeakyReLU
      • Log
      • LogSoftmax
      • LogSoftmaxBackward
      • MatMul
      • Maximum
      • MaxPool
      • MaxPoolBackward
      • Minimum
      • Mish
      • MishBackward
      • Multiply
      • Pow
      • PReLU
      • PReLUBackward
      • Quantize
      • Reciprocal
      • ReduceL1
      • ReduceL2
      • ReduceMax
      • ReduceMean
      • ReduceMin
      • ReduceProd
      • ReduceSum
      • ReLU
      • ReLUBackward
      • Reorder
      • Round
      • Select
      • Sigmoid
      • SigmoidBackward
      • SoftMax
      • SoftMaxBackward
      • SoftPlus
      • SoftPlusBackward
      • Sqrt
      • SqrtBackward
      • Square
      • SquaredDifference
      • StaticReshape
      • StaticTranspose
      • Subtract
      • Tanh
      • TanhBackward
      • TypeCast
      • Wildcard
    • Fusion Patterns
      • Gated Multi-Layer Perceptron (Gated-MLP)
      • Grouped Query Attention (GQA)
      • SDPA with Compressed Key and Value
      • Scaled Dot-Product Attention (SDPA)
      • MatMul
      • Quantized MatMul
      • Convolution
      • Quantized Convolution
      • ConvTranspose
      • Quantized ConvTranspose
      • Binary
      • Unary
      • Interpolate
      • Reduction
      • Pool
      • Norm
      • SoftMax
    • Graph Dump
    • Constant Tensor Cache
  • Examples and Tutorials
  • Performance Profiling and Inspection
    • Verbose Mode
    • Configuring oneDNN for Benchmarking
    • Benchmarking Performance
    • Profiling oneDNN Performance
    • Inspecting JIT Code
    • Performance Profiling Example
    • CPU Dispatcher Control
    • CPU ISA Hints
    • Verbose Message Catalogue
  • Advanced Topics
    • Transitioning from Intel MKL-DNN to oneDNN
    • Understanding Memory Formats
    • Nuances of int8 Computations
    • Primitive Cache
    • Persistent Cache
    • Using oneDNN with Threadpool-Based Threading
    • Sparse memory formats
    • API
    • Experimental features
  • Ukernels
    • Basic Concepts
    • Batch-Reduce General Matrix Multiplication
    • Data transformation
    • BRGeMM ukernel example

Developer Reference

  • oneDNN API
    • Primitives
      • Common
        • enum dnnl_alg_kind_t
        • enum dnnl_normalization_flags_t
        • enum dnnl_primitive_kind_t
        • enum dnnl_prop_kind_t
        • enum dnnl_query_t
        • enum dnnl::normalization_flags
        • enum dnnl::query
        • struct dnnl_exec_arg_t
        • struct dnnl_primitive
        • struct dnnl_primitive_desc
        • struct dnnl::primitive
          • enum dnnl::primitive::kind
        • struct dnnl::primitive_desc
        • struct dnnl::primitive_desc_base
      • Attributes
        • enum dnnl::algorithm
        • enum dnnl_rounding_mode_t
        • enum dnnl_scratchpad_mode_t
        • enum dnnl::prop_kind
        • enum dnnl::rounding_mode
        • enum dnnl::scratchpad_mode
        • struct dnnl_post_ops
        • struct dnnl_primitive_attr
        • struct dnnl::post_ops
        • struct dnnl::primitive_attr
      • Reorder
        • struct dnnl::reorder
          • struct dnnl::reorder::primitive_desc
      • Concat
        • struct dnnl::concat
          • struct dnnl::concat::primitive_desc
      • Sum
        • struct dnnl::sum
          • struct dnnl::sum::primitive_desc
      • Binary
        • struct dnnl::binary
          • struct dnnl::binary::primitive_desc
      • Convolution
        • struct dnnl::convolution_backward_data
          • struct dnnl::convolution_backward_data::primitive_desc
        • struct dnnl::convolution_backward_weights
          • struct dnnl::convolution_backward_weights::primitive_desc
        • struct dnnl::convolution_forward
          • struct dnnl::convolution_forward::primitive_desc
      • Deconvolution
        • struct dnnl::deconvolution_backward_data
          • struct dnnl::deconvolution_backward_data::primitive_desc
        • struct dnnl::deconvolution_backward_weights
          • struct dnnl::deconvolution_backward_weights::primitive_desc
        • struct dnnl::deconvolution_forward
          • struct dnnl::deconvolution_forward::primitive_desc
      • Shuffle
        • struct dnnl::shuffle_backward
          • struct dnnl::shuffle_backward::primitive_desc
        • struct dnnl::shuffle_forward
          • struct dnnl::shuffle_forward::primitive_desc
      • Eltwise
        • struct dnnl::eltwise_backward
          • struct dnnl::eltwise_backward::primitive_desc
        • struct dnnl::eltwise_forward
          • struct dnnl::eltwise_forward::primitive_desc
      • Softmax
        • struct dnnl::softmax_backward
          • struct dnnl::softmax_backward::primitive_desc
        • struct dnnl::softmax_forward
          • struct dnnl::softmax_forward::primitive_desc
      • Pooling
        • struct dnnl::pooling_backward
          • struct dnnl::pooling_backward::primitive_desc
        • struct dnnl::pooling_forward
          • struct dnnl::pooling_forward::primitive_desc
      • PReLU
        • struct dnnl::prelu_backward
          • struct dnnl::prelu_backward::primitive_desc
        • struct dnnl::prelu_forward
          • struct dnnl::prelu_forward::primitive_desc
      • LRN
        • struct dnnl::lrn_backward
          • struct dnnl::lrn_backward::primitive_desc
        • struct dnnl::lrn_forward
          • struct dnnl::lrn_forward::primitive_desc
      • Batch Normalization
        • struct dnnl::batch_normalization_backward
          • struct dnnl::batch_normalization_backward::primitive_desc
        • struct dnnl::batch_normalization_forward
          • struct dnnl::batch_normalization_forward::primitive_desc
      • Group Normalization
        • struct dnnl::group_normalization_backward
          • struct dnnl::group_normalization_backward::primitive_desc
        • struct dnnl::group_normalization_forward
          • struct dnnl::group_normalization_forward::primitive_desc
      • Layer Normalization
        • struct dnnl::layer_normalization_backward
          • struct dnnl::layer_normalization_backward::primitive_desc
        • struct dnnl::layer_normalization_forward
          • struct dnnl::layer_normalization_forward::primitive_desc
      • Inner Product
        • struct dnnl::inner_product_backward_data
          • struct dnnl::inner_product_backward_data::primitive_desc
        • struct dnnl::inner_product_backward_weights
          • struct dnnl::inner_product_backward_weights::primitive_desc
        • struct dnnl::inner_product_forward
          • struct dnnl::inner_product_forward::primitive_desc
      • RNN
        • enum dnnl_rnn_direction_t
        • enum dnnl_rnn_flags_t
        • enum dnnl::rnn_direction
        • enum dnnl::rnn_flags
        • struct dnnl::augru_backward
          • struct dnnl::augru_backward::primitive_desc
        • struct dnnl::augru_forward
          • struct dnnl::augru_forward::primitive_desc
        • struct dnnl::gru_backward
          • struct dnnl::gru_backward::primitive_desc
        • struct dnnl::gru_forward
          • struct dnnl::gru_forward::primitive_desc
        • struct dnnl::lbr_augru_backward
          • struct dnnl::lbr_augru_backward::primitive_desc
        • struct dnnl::lbr_augru_forward
          • struct dnnl::lbr_augru_forward::primitive_desc
        • struct dnnl::lbr_gru_backward
          • struct dnnl::lbr_gru_backward::primitive_desc
        • struct dnnl::lbr_gru_forward
          • struct dnnl::lbr_gru_forward::primitive_desc
        • struct dnnl::lstm_backward
          • struct dnnl::lstm_backward::primitive_desc
        • struct dnnl::lstm_forward
          • struct dnnl::lstm_forward::primitive_desc
        • struct dnnl::rnn_primitive_desc_base
        • struct dnnl::vanilla_rnn_backward
          • struct dnnl::vanilla_rnn_backward::primitive_desc
        • struct dnnl::vanilla_rnn_forward
          • struct dnnl::vanilla_rnn_forward::primitive_desc
      • Matrix Multiplication
        • struct dnnl::matmul
          • struct dnnl::matmul::primitive_desc
      • Resampling
        • struct dnnl::resampling_backward
          • struct dnnl::resampling_backward::primitive_desc
        • struct dnnl::resampling_forward
          • struct dnnl::resampling_forward::primitive_desc
      • Reduction
        • struct dnnl::reduction
          • struct dnnl::reduction::primitive_desc
    • Primitive Cache
    • Profiling
      • enum dnnl::profiling_data_kind
    • BLAS functions
    • Common API
      • Engine
        • enum dnnl_engine_kind_t
        • struct dnnl_engine
        • struct dnnl::engine
          • enum dnnl::engine::kind
      • Stream
        • enum dnnl_stream_flags_t
        • struct dnnl_stream
        • struct dnnl::stream
          • enum dnnl::stream::flags
      • Floating-point Math Mode
        • enum dnnl_fpmath_mode_t
        • enum dnnl::fpmath_mode
      • Service
        • enum dnnl::cpu_isa
        • enum dnnl::cpu_isa_hints
        • enum dnnl_cpu_isa_hints_t
        • enum dnnl_cpu_isa_t
        • enum dnnl::status
        • struct dnnl_version_t
      • Utilities
        • enum dnnl_status_t
        • struct dnnl::error
        • template struct dnnl::handle
        • template struct dnnl::handle_traits
      • Accumulation Mode
        • enum dnnl::accumulation_mode
        • enum dnnl_accumulation_mode_t
      • Data types
        • enum dnnl_data_type_t
      • Memory
        • enum dnnl_format_kind_t
        • enum dnnl_format_tag_t
        • enum dnnl_profiling_data_kind_t
        • enum dnnl_sparse_encoding_t
        • struct dnnl_memory
        • struct dnnl_memory_desc
        • struct dnnl::memory
          • enum dnnl::memory::data_type
          • enum dnnl::memory::format_kind
          • enum dnnl::memory::format_tag
          • enum dnnl::memory::sparse_encoding
          • struct dnnl::memory::desc
    • Graph API
      • Allocator
        • class dnnl::graph::allocator
      • Engine
      • Logical Tensor
        • enum dnnl_graph_layout_type_t
        • enum dnnl_graph_tensor_property_t
        • struct dnnl_graph_logical_tensor_t
        • class dnnl::graph::logical_tensor
          • enum dnnl::graph::logical_tensor::data_type
          • enum dnnl::graph::logical_tensor::layout_type
          • enum dnnl::graph::logical_tensor::property_type
      • Tensor
        • class dnnl::graph::tensor
      • Op
        • enum dnnl_graph_op_attr_t
        • enum dnnl_graph_op_kind_t
        • class dnnl::graph::op
          • enum dnnl::graph::op::attr
          • enum dnnl::graph::op::kind
      • Partition
        • enum dnnl_graph_partition_policy_t
        • class dnnl::graph::partition
          • enum dnnl::graph::partition::policy
      • Compiled Partition
        • struct dnnl_graph_inplace_pair_t
        • class dnnl::graph::compiled_partition
      • Graph
        • class dnnl::graph::graph
      • Compiled Partition Cache
      • Constant Tensor Cache
      • Runtime interoperability API
        • OpenCL interoperability API
          • namespace dnnl::graph::ocl_interop
        • SYCL interoperability API
          • namespace dnnl::graph::sycl_interop
      • namespace dnnl::graph
    • Runtime interoperability API
      • OpenCL interoperability API
        • namespace dnnl::ocl_interop
          • enum dnnl::ocl_interop::memory_kind
        • enum dnnl_ocl_interop_memory_kind_t
      • SYCL interoperability API
        • namespace dnnl::sycl_interop
          • enum dnnl::sycl_interop::memory_kind
        • enum dnnl_sycl_interop_memory_kind_t
      • Threadpool interoperability API
        • namespace dnnl::threadpool_interop
          • struct dnnl::threadpool_interop::threadpool_iface
    • Ukernels
      • BRGeMM ukernel
        • struct dnnl::ukernel::brgemm
        • struct dnnl_brgemm
        • struct dnnl_transform
      • namespace dnnl::ukernel
      • enum dnnl_pack_type_t
      • struct dnnl_ukernel_attr_params
    • namespace dnnl
    • namespace oneapi
Theme by the Executable Book Project
Contents
  • Header Files
  • Libraries
    • Linux
    • macOS
    • Windows
  • Linking to oneDNN
    • Linux/macOS
      • Support for macOS hardened runtime
    • Windows

Link to the Library¶

oneDNN includes several header files providing C and C++ APIs for the functionality and one or several libraries depending on how oneDNN was built.

Header Files¶

File

Description

include/oneapi/dnnl/dnnl.h

C header

include/oneapi/dnnl/dnnl.hpp

C++ header

include/oneapi/dnnl/dnnl_types.h

Auxiliary C header

include/oneapi/dnnl/dnnl_config.h

Auxiliary C header

include/oneapi/dnnl/dnnl_version.h

C header with version information

include/oneapi/dnnl/dnnl_graph.h

C header for graph API

include/oneapi/dnnl/dnnl_graph.hpp

C++ header for graph API

include/oneapi/dnnl/dnnl_graph_types.h

Auxiliary C header for graph API

include/oneapi/dnnl/dnnl_ukernel.h

C header for ukernel API

include/oneapi/dnnl/dnnl_ukernel.hpp

C++ header for ukernel API

include/oneapi/dnnl/dnnl_ukernel_types.h

Auxiliary C header for ukernel API

Libraries¶

Linux¶

File

Description

lib/libdnnl.so

oneDNN dynamic library

lib/libdnnl.a

oneDNN static library (if built with DNNL_LIBRARY_TYPE=STATIC )

macOS¶

File

Description

lib/libdnnl.dylib

oneDNN dynamic library

lib/libdnnl.a

oneDNN static library (if built with DNNL_LIBRARY_TYPE=STATIC )

Windows¶

File

Description

bindnnl.dll

oneDNN dynamic library

libdnnl.lib

oneDNN import or full static library (the latter if built with DNNL_LIBRARY_TYPE=STATIC )

Linking to oneDNN¶

The examples below assume that oneDNN is installed in the directory defined in the DNNLROOT environment variable.

Linux/macOS¶

g++ -I${DNNLROOT}/include -L${DNNLROOT}/lib getting_started.cpp -ldnnl
clang++ -I${DNNLROOT}/include -L${DNNLROOT}/lib getting_started.cpp -ldnnl
icpx -I${DNNLROOT}/include -L${DNNLROOT}/lib getting_started.cpp -ldnnl

Warning

Applications linked dynamically will resolve the dependencies at runtime. Make sure that the dependencies are available in the standard locations defined by the operating system, in the locations listed in the LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (macOS) environment variable or the rpath mechanism.

Support for macOS hardened runtime¶

oneDNN requires the com.apple.security.cs.allow-jit entitlement when it is integrated with an application that uses the macOS hardened runtime. This requirement comes from the fact that oneDNN generates code on the fly and then executes it.

It can be enabled in Xcode or passed to codesign like this:

codesign -s "Your identity" --options runtime --entitlements Entitlements.plist [other options...] /path/to/libdnnl.dylib

Example Entitlements.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.cs.allow-jit</key><true/>
</dict>
</plist>

Windows¶

The examples below assume that oneDNN is installed in the directory defined in the DNNLROOT environment variable.

icx /EHa /I"%DNNLROOT%\include" getting_started.cpp "%DNNLROOT%\lib\dnnl.lib"
cl /EHa /I"%DNNLROOT%\include" getting_started.cpp "%DNNLROOT%\lib\dnnl.lib"

Note

You may also add paths to oneDNN headers and libraries to LIB and INCLUDE environment variables instead of specifying these in the build command.

Refer to the Microsoft Visual Studio documentation on linking the application using MSVS solutions.

Warning

Applications linked dynamically will resolve the dependencies at runtime. Make sure that the dependencies are available in the standard locations defined by the operating system or in the locations listed in the PATH environment variable.

Use Build Options Basic Concepts

© Copyright 2016-2025 Intel Corporation.

oneDNN is licensed under Apache License Version 2.0. Refer to the LICENSE file for the full license text and copyright notice.