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.
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.
oneDNN Graph Library will support systems based on Intel 64 or AMD64 architecture.
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.
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
- GNU Compiler Collection 7.5
- Intel C++ Compiler Classic
on macOS* 11.2 (BigSur) with
- Apple LLVM version 12.0 (XCode 12.0)
- Intel C++ Compiler Classic
on Windows* with
- Microsoft Visual C++ 16.0 (Visual Studio 2019)
GPU engine was validated on Ubuntu* 18.04 with
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.
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.
oneDNN Graph Library is licensed under Apache License Version 2.0. Refer to the "LICENSE" file for the full license text and copyright notice.
See Intel's Security Center for information on how to report a potential security issue or vulnerability.
See also: Security Policy
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