Go to file
Tian Jin 706ff24d33 1. Remove quotes from strings in yaml file for better consistency.
2. Use MAKEFLAGS env variable to limit build parallelism so that mlir installation script remains clean.
2019-12-31 13:28:26 -05:00
.buildbot Exit Bash Script on Error (#381) 2019-12-21 00:50:30 -05:00
.circleci 1. Remove quotes from strings in yaml file for better consistency. 2019-12-31 13:28:26 -05:00
src Transition to value-typed Value, rename Value* -> Value, in accordance with upstream MLIR style change. 2019-12-30 22:42:13 -05:00
test revert unnecessary changes 2019-12-24 03:43:47 -05:00
third_party Enable building of first commit. 2019-12-19 14:24:37 -05:00
.clang-format clean up 2019-12-21 02:07:24 -05:00
.gitignore Initial commit 2019-12-18 10:18:14 -05:00
.gitmodules Enable building of first commit. 2019-12-19 14:24:37 -05:00
CMakeLists.txt flatten src directory structure 2019-12-23 00:13:52 -05:00
LICENSE Initial commit 2019-12-18 10:18:14 -05:00
MLIR.cmake Update CMake build script. 2019-12-30 22:41:37 -05:00
README.md nit 2019-12-24 04:01:53 -05:00
SharingWork.md [MLIR] Add broadcasting support for element wise operations (#398) 2019-12-21 02:08:27 -05:00

README.md

ONNF

Open Neural Network Frontend : an ONNX frontend for MLIR.

CircleCI

Installation

We assume an existing installation of MLIR. The LLVM-Project repo commit hash we used to test against is 9b6ad8466bb8b97082b705270603ad7f4559e931 and the MLIR repo commit hash we used is 0710266d0f56cf6ab0f437badbd7416b6cecdf5f.

Two environment variables need to be set:

  • LLVM_SRC should point to the llvm src directory (e.g., llvm-project/llvm).
  • LLVM_BUILD should point to the llvm build directory (e.g., llvm-project/build).

To build ONNF, use the following command:

git clone --recursive git@github.com:clang-ykt/ONNF.git
mkdir build
cd build
cmake ..
cmake --build . --target all

After the above commands succeed, an onnf executable should appear in the bin directory.

Using ONNF

The usage of onnf is as such:

OVERVIEW: ONNF MLIR modular optimizer driver

USAGE: onnf [options] <input file>

OPTIONS:

Generic Options:

  --help        - Display available options (--help-hidden for more)
  --help-list   - Display list of available options (--help-list-hidden for more)
  --version     - Display the version of this program

ONNF Options:
These are frontend options.

  Choose target to emit:
      --EmitONNXIR - Ingest ONNX and emit corresponding ONNX dialect.
      --EmitMLIR   - Lower model to MLIR built-in transformation dialect.
      --EmitLLVMIR - Lower model to LLVM IR (LLVM dialect).
      --EmitLLVMBC - Lower model to LLVM IR and emit (to file) LLVM bitcode for model.

Example

For example, to lower an ONNX model (e.g., add.onnx) to ONNX dialect, use the following command:

./onnf --EmitONNXIR add.onnx

The output should look like:

module {
  func @main_graph(%arg0: tensor<10x10x10xf32>, %arg1: tensor<10x10x10xf32>) -> tensor<10x10x10xf32> {
    %0 = "onnx.Add"(%arg0, %arg1) : (tensor<10x10x10xf32>, tensor<10x10x10xf32>) -> tensor<10x10x10xf32>
    return %0 : tensor<10x10x10xf32>
  }
}