Awesome
ONNC (Open Neural Network Compiler)
Introduction
ONNC (Open Neural Network Compiler) is a retargetable compilation framework designed specifically for proprietary deep learning accelerators. Its software architecture expedites porting ONNC to any Deep Learning Accelerator (DLA) design that supports ONNX (Open Neural Network Exchange) operators. ONNC guarantees executability across every DLA by means of transforming ONNX models into DLA-specific binary forms and leveraging the intermediate representation (IR) design of ONNX along with effective algorithms to eliminate the overhead of data movement. ONNC is the first open source compiler available for NVDLA-based hardware designs. Its NVDLA backend can compile a model into an executable NVDLA Loadable file. Integrating ONNC with the NVDLA software stack opens up opportunities for developers and researchers to explore the NVDLA-based inference design at system level.
Papers
-
W. F. Lin, D. Y. Tsai, L. Tang, C. T. Hsieh, C. Y. Chou, P. H. Chang, and L. Hsu, “ONNC: A compilation framework connecting ONNX to proprietary deep learning accelerators,” in IEEE International Conference on Artificial Intelligence Circuits and Systems (AICAS 2019). IEEE, 2019.
-
W.F. Lin, C. T. Hsieh, C. Y. Chou, "ONNC-based Software Development Platform for Configurable NVDLA Designs", to appear in IEEE International Symposium on VLSI Design, Automation and Test (VLSI-DAT 2019). IEEE, 2019
Documentation
- ONNC Utilities
- ONNC Pass Manager Getting Started Guide
- ONNC Backend Developer Guide
- The Code Emitting Pass User Guide
- ONNC IR Extension Guide
- ONNC C Backend Guide
Current Status
How to contribute
- Please see contribute guidline
Directory Structure
- README.md - This document
- docs - documents
- include - header files for libonnc
- lib - implementation for libonnc
- tools - tools based on libonnc
Supported platforms
ONNC supports Ubuntu/x86_64 and MacOSX.
Here is a list of verified versions:
-
Ubuntu/x86_64
- 16.04
-
MacOSX
- High Sierra
Getting Started
There are three ways to build ONNC:
- Build ONNC via Docker
Please refer to the ONNC Utilities document. - Build ONNC via ONNC umbrella
Please follow the instructions of README.md in onnc-umbrella.
Here is the version of external library we are using in ONNC. - Build ONNC without ONNC umbrella
Please refer to the ONNC CMake build instruction