Skip to content
Open Neural Network Compiler
C++ C M4 CMake Makefile Python Other
Branch: master
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Closes #106 - Added issue templates Oct 25, 2018
cmake cmake: Add MKLDNN_ROOT option to find MKLDNN Apr 23, 2020
docs doc: Add missing figure in C backend guide May 6, 2020
example/runtime Bug-fix: Default enable MKLDNN in C-backend example Apr 8, 2020
include Support new operators for compiling torchvision models. Apr 10, 2020
lib Revert "onnc-rt: link static MKLDNN instead" Apr 27, 2020
m4 lib/Target: init a new backend -- CLang Mar 20, 2019
nvdla Merge branch 'master' into 'feature/cbackend' Oct 6, 2019
scripts Merge branch 'master' into 'feature/cbackend' Oct 6, 2019
single_layer_test Merge branch 'master' into 'feature/cbackend' Oct 6, 2019
tools [onnc] Update compiler version to 1.3.0 May 27, 2020
.clang-format Merge branch 'master' into 'feature/cbackend' Oct 6, 2019
.gitignore Merge branch 'master' into 'feature/cbackend' Oct 6, 2019
.travis.yml Build onnc with automake in Travis Sep 5, 2018
BUGS Add basic project documents. Aug 2, 2018
CHANGELOG.md Release 1.3.0 Apr 29, 2020
CMakeLists.txt [cmake] Fix project name Apr 22, 2020
CODE_OWNERS.TXT Add basic project documents. Aug 2, 2018
CONTRIBUTING.md fix CONTRIBUTING.md markdown link Feb 21, 2019
LICENSE.TXT Clarify copyright holder in 3-Clause BSD License Aug 13, 2018
Makefile.am Revert "tests: move all tests from `tools` to `tests`" May 21, 2019
Operator.md Update Operator.md Oct 13, 2019
README.md Release 1.3.0 Apr 29, 2020
VERSION Release 1.3.0 Apr 29, 2020
autogen.sh Reorganize directory structure. Jan 23, 2018
configure.ac Revert "tests: move all tests from `tools` to `tests`" May 21, 2019

README.md

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

Current Status

How to contribute

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:

  1. Build ONNC via Docker
    Please refer to the ONNC Utilities document.
  2. 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.
  3. Build ONNC without ONNC umbrella
    Please refer to the ONNC CMake build instruction
You can’t perform that action at this time.