Skip to content

pablorcum/oneDNN

Repository files navigation

oneAPI Deep Neural Network Library (oneDNN) Graph API

This branch is to propose a preview for the graph API extension to oneDNN. oneDNN Graph API extends oneDNN with a unified high-level graph API for multiple AI hardware classes (CPU, GPU, accelerators). With a flexible graph interface, it maximizes the optimization opportunity for generating efficient code across a variety of Intel and non-Intel hardwares, and can be closely integrated with ecosystem frameworks and inference engines.

The goal of the preview branch is to:

  • Collect feedbacks on the API design, not the implementation.
  • Demonstrate the programming model of oneDNN Graph API.
  • Show ease of use of the API for framework integration.

The current API version has limited support for direct programming model, as it assumes users maintain their own graphs and use oneDNN Graph API to identify the partitions which could be offloaded to oneDNN Graph. Currently, it aims to work with the framework graph and identify graph partitions to offload. The partition will be further compiled and executed as a fused operation in the framework graph.

Documentation

Public specification on oneAPI SPEC website explains the design, programming model, and operation set of oneDNN Graph API.

In the doc folder of this branch, an overview introduction to oneDNN Graph API is provided along with two tutorials on how to use the API: CPU version and SYCL version.

Developer guide and API reference of this branch can be generated from source code. Public webpages are still under construction.

System Requirements

oneDNN Graph Library will support systems based on Intel 64 or AMD64 architecture.

Requirements for Building from Source

oneDNN Graph supports systems meeting the following requirements:

  • Operating system with Intel 64 architecture support
  • C++ compiler with C++11 standard support
  • CMake 2.8.11 or later
  • Doxygen 1.8.5 or later to build the documentation

Configurations of CPU and GPU engines may introduce additional build time dependencies.

Validated Configurations

CPU engine was validated on RedHat* Enterprise Linux 7 with

  • GNU Compiler Collection 4.8
  • GNU Compiler Collection 8.2
  • GNU Compiler Collection 9.3

on Ubuntu* 18.04 with

on macOS* 11.2 (BigSur) with

on Windows* with

  • Microsoft Visual C++ 16.0 (Visual Studio 2019)

GPU engine was validated on Ubuntu* 18.04 with

Typical Build Steps

To build the library from source code:

git clone https://github.com/oneapi-src/oneDNN.git --branch dev-graph --recursive
cd oneDNN
mkdir build && cd build
cmake .. -DDNNL_GRAPH_BUILD_TESTS=1 -DDNNL_GRAPH_BUILD_EXAMPLES=1
make -j

To validate the library with tests and examples:

cd build
ctest -V

To install the built library, you need to have the write privilege of the target directory with sudo or specifying the target directory via -DCMAKE_INSTALL_PREFIX in the cmake command line.

make install

To build on Windows, see Build from Source.

Support

Please submit your questions, feature requests, and bug reports on the GitHub issues page.

You may reach out to project maintainers privately at [email protected].

WARNING

This is pre-production software and functionality may change without prior notice.

License

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

Security

See Intel's Security Center for information on how to report a potential security issue or vulnerability.

See also: Security Policy

Trademark Information

Intel, the Intel logo, Intel Atom, Intel Core, Intel Xeon Phi, Iris, OpenVINO, the OpenVINO logo, Pentium, VTune, and Xeon are trademarks of Intel Corporation or its subsidiaries.

* Other names and brands may be claimed as the property of others.

Microsoft, Windows, and the Windows logo are trademarks, or registered trademarks of Microsoft Corporation in the United States and/or other countries.

OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.

(C) Intel Corporation

About

oneAPI Deep Neural Network Library (oneDNN)

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 88.1%
  • C 10.7%
  • CMake 0.9%
  • Python 0.2%
  • Shell 0.1%
  • Batchfile 0.0%