Build with onnxruntime#
This package includes a wrapper for onnxruntime based on cython. The standard one relies on pybind11. For that purpose, it includes the onnxruntime binaries released on github (see onnxruntime releases).
cmake#
The first step is to load the extension FindOrt.cmake with find_package(Ort REQUIRED). This file exposes two functions. The first one ort_add_dependency(name folder_copy) copies the binaries into folder folder_copy and links target name with onnxruntime.
The second function ort_add_custom_op(name folder) creates a library with several custom kernels for onnxruntime and links it with onnxruntime. name is the project name, folder its location.
ort_add_custom_op(
ortops_tutorial_cpu # name
../onnx_extended/ortops/tutorial/cpu # folder
../onnx_extended/ortops/tutorial/cpu/my_kernel.cc # source file
../onnx_extended/ortops/tutorial/cpu/my_kernel_attr.cc # source file
../onnx_extended/ortops/tutorial/cpu/ort_tutorial_cpu_lib.cc) # source file
Every new kernel can be added by adding new source file. A line must be added in file ort_tutorial_cpu_lib.cc to register the kernel. That file also defines the domain the kernel belongs to.
This function is subject to change. It creates a file _setup_ext.txt to indicate which file to copy from the build directory to the package directory. This file is loaded by setup.py after cmake is done with the compilation.