Skip to content

intel/graph-compiler

Graph Compiler

Graph Compiler is an end-to-end, MLIR-based compiler designed to enhance the performance of deep learning workloads. It accepts computation graphs from the frontend, applies domain-specific optimizations and transformations, generates code, and manages runtime execution.

The current frontend for Graph Compiler is oneDNN Graph API.

Build instructions

All-in-one compile script

It is recommended for the users to use the all-in-one compile script at scripts/compile.sh. It downloads the LLVM dependency and builds the project.

Step-by-step build intructions

To build this project step by step, first you need to find the LLVM commit-id we are using at cmake/llvm-version.txt. Then clone specific version of LLVM:

export LLVM_COMMIT_HASH=$(< cmake/llvm-version.txt)
git clone https://github.com/llvm/llvm-project
cd llvm-project
git checkout $LLVM_COMMIT_HASH

Build LLVM with the command lines given in .github/workflows/build-llvm.yml:

mkdir llvm-install
cmake -G Ninja llvm -B build -DCMAKE_INSTALL_PREFIX=llvm-install \
  -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=true -DLLVM_ENABLE_PROJECTS="mlir" -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_INSTALL_UTILS=true -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DLLVM_INSTALL_GTEST=ON
cmake --build build --target install

Notes

  • It is recommended to add optional options -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON to the command cmake -G Ninja llvm ... above. These will enable the build of LLVM/MLIR dynamic libraries and let MLIR/LLVM tools link to them, to reduce the installed binary size of LLVM/MLIR. These options also enable the GC_DEV_LINK_LLVM_DYLIB option of graph-compiler repo (see below).
  • The option -DLLVM_INSTALL_GTEST=ON is optional, if the tests of graph-compiler are disabled (see GC_TEST_ENABLE below).

We have now installed LLVM at llvm-project/llvm-install.

Change working directory to graph-compiler repo and prepare the build directory:

cd /PATH/TO/graph-compiler
mkdir build && cd build

Build and run tests:

cmake .. -G Ninja \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    -DMLIR_DIR=/PATH/TO/llvm-project/llvm-install/lib/cmake/mlir \
    -DLLVM_EXTERNAL_LIT=$(which lit)
cmake --build . --target gc-check

Notes:

  • /PATH/TO/llvm-project/llvm-install should be the install path of LLVM. If you installed LLVM elsewhere by -DCMAKE_INSTALL_PREFIX option when building LLVM, you need to change the path in -DMLIR_DIR accordingly.
  • The cmake option -DLLVM_EXTERNAL_LIT is for the tests of this project. It requires the lit tool to be installed in the system. You can install it via pip install lit. If you don't need to run the tests of this repo, you can omit this option in the command line.

Graph Compiler supports the following build-time options.

CMake Option Supported values (defaults in bold) Description
GC_LEGACY_ENABLE ON, OFF Controls building the legacy graph-compiler component
GC_TEST_ENABLE ON, OFF Controls building the tests
GC_DEV_LINK_LLVM_DYLIB ON, OFF Controls dynamic link LLVM/MLIR libraries, mainly for developer

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages