summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD101
1 files changed, 84 insertions, 17 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 691a8b925653..78f18b09f809 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,14 +1,16 @@
# Maintainer: Chih-Hsuan Yen <yan12125@gmail.com>
-pkgname=python-onnxruntime
-pkgver=1.7.2
+pkgbase=python-onnxruntime
+pkgname=(python-onnxruntime python-onnxruntime-cuda)
+pkgver=1.8.0
pkgdesc='Cross-platform, high performance scoring engine for ML models'
pkgrel=1
arch=(x86_64)
url='https://github.com/microsoft/onnxruntime'
license=(MIT)
-depends=(nsync re2 flatbuffers python-numpy python-onnx python-protobuf)
-makedepends=(git cmake gtest gmock pybind11 python-setuptools nlohmann-json chrono-date boost)
+depends=(nsync re2 python-flatbuffers python-numpy python-onnx python-protobuf openmpi)
+makedepends=(git cmake gtest gmock pybind11 python-setuptools nlohmann-json chrono-date boost flatbuffers cuda cudnn nccl clang)
+checkdepends=(python-pytest python-pytorch python-h5py python-pandas python-psutil python-tqdm python-sympy python-torchvision tensorboard python-cerberus)
# not de-vendored libraries
# eigen: API changes a lot since extra/eigen 3.3.7 to the commit onnxruntime uses
# onnx: needs shared libonnx (https://github.com/onnx/onnx/issues/3030)
@@ -18,53 +20,118 @@ source=("git+https://github.com/microsoft/onnxruntime#tag=v$pkgver"
"git+https://github.com/onnx/onnx.git"
"git+https://github.com/dcleblanc/SafeInt.git"
"git+https://github.com/martinmoene/optional-lite.git"
- build-fixes.patch)
+ "git+https://github.com/tensorflow/tensorboard.git"
+ "git+https://github.com/dmlc/dlpack.git"
+ "git+https://github.com/jarro2783/cxxopts.git"
+ build-fixes.patch
+ clang.patch)
sha512sums=('SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
- '90e67eb144770734b488bf8ac5ad0dc955d2d860d9ed1c32285ffe913e72d27a3ac5b27588f41042fa4008533234e6cf4740c600f2b3fdce90ef8a3f853827eb')
+ 'SKIP'
+ 'SKIP'
+ 'SKIP'
+ '685f0235abed6e1277dd0eb9bda56c464d1987fe7fc90a3550e17ec70cc49fd15f34996a0e159f9622c4ca3e6bf29917fe51b7849342531fa2a6808d782f1e06'
+ '55ba879c015df11582ff4afaa9ccca19c0e3d3a8be503629718402dbdc826e36bc3ec3ce4dd589705371d7fcf250ba2a9b30c5a3dd0cfccb8e008346f1bd6252')
prepare() {
cd onnxruntime
patch -Np1 -i ../build-fixes.patch
+ patch -Np1 -i ../clang.patch
git submodule init
- for mod in eigen onnx SafeInt optional-lite; do
+ for mod in eigen onnx SafeInt optional-lite tensorboard dlpack cxxopts; do
git config submodule.cmake/external/$mod.url "$srcdir"/$mod
git submodule update cmake/external/$mod
done
}
-build() {
+_build() {
+ build_dir=$1
+ shift
+
cd "$srcdir"/onnxruntime
# Use protobuf-lite instead of full protobuf to workaround symbol conflicts
# with onnx; see https://github.com/onnx/onnx/issues/1277 for details.
- cmake -B build -S cmake \
+ CC=/usr/bin/clang CXX=/usr/bin/clang++ \
+ cmake -B $build_dir -S cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
-Donnxruntime_ENABLE_PYTHON=ON \
-DONNX_CUSTOM_PROTOC_EXECUTABLE=/usr/bin/protoc \
-Donnxruntime_PREFER_SYSTEM_LIB=ON \
- -Donnxruntime_USE_FULL_PROTOBUF=OFF
+ -Donnxruntime_USE_FULL_PROTOBUF=OFF \
+ -Donnxruntime_BUILD_SHARED_LIB=ON \
+ -Donnxruntime_ENABLE_TRAINING=ON \
+ -Donnxruntime_USE_MPI=ON \
+ "$@"
- cd build
+ cd $build_dir
make
python ../setup.py build
}
-check() {
- cd onnxruntime/build
+build() {
+ _build build
+
+ # Use clang as GCC does not work. GCC 11 uses C++ 17 by default. On the
+ # other hand, onnxruntime uses C++ 14. However, nvcc does not correctly
+ # pass -std=c++14 to the host compiler, and thus preprocessed files
+ # contains C++ 17 language features, and cicc failed to parse it. GCC 10
+ # does not work, either, as some dependent packages (ex: re2) are built
+ # with libstdc++ 11, and linking onnxruntime with libstdc++ 10 fails.
+ _build build-cuda \
+ -DCMAKE_CUDA_HOST_COMPILER=/usr/bin/clang \
+ -Donnxruntime_USE_CUDA=ON \
+ -Donnxruntime_CUDA_HOME=/opt/cuda \
+ -Donnxruntime_CUDNN_HOME=/usr \
+ -Donnxruntime_USE_NCCL=ON
+}
+
+_check() {
make test
+ # launch_test.py seems a script, and orttraining_* include BERT tests, which require the
+ # transformers package, and failed even if the latter is installed.
+ LD_LIBRARY_PATH="$PWD" pytest \
+ --ignore launch_test.py \
+ --ignore orttraining_run_bert_pretrain.py \
+ --ignore orttraining_run_frontend_batch_size_test.py
}
-package() {
- cd onnxruntime/build
+check() {
+ cd "$srcdir"/onnxruntime/build
+ _check
+
+ cd "$srcdir"/onnxruntime/build-cuda
+ # _check # requires machines with CUDA-compatible devices
+}
+
+_package() {
+ make install DESTDIR="$pkgdir"
+
python ../setup.py install --root="$pkgdir" --skip-build --optimize=1
- PY_SITE_DIR="$(python -c 'import site; print(site.getsitepackages()[0])')"
+ PY_ORT_DIR="$(python -c 'import site; print(site.getsitepackages()[0])')/onnxruntime"
install -Ddm755 "$pkgdir"/usr/share/licenses/$pkgname
for f in LICENSE ThirdPartyNotices.txt ; do
- ln -s "$PY_SITE_DIR/onnxruntime/$f" "$pkgdir"/usr/share/licenses/$pkgname/$f
+ ln -s "$PY_ORT_DIR/$f" "$pkgdir"/usr/share/licenses/$pkgname/$f
done
+ # already installed by `make install`, and not useful as this path is not looked up by the linker
+ rm -vf "$pkgdir/$PY_ORT_DIR"/capi/libonnxruntime_providers_*
+}
+
+package_python-onnxruntime() {
+ cd onnxruntime/build
+ _package
+}
+
+package_python-onnxruntime-cuda() {
+ depends+=(cuda cudnn nccl)
+ conflicts=(python-onnxruntime)
+ provides=("python-onnxruntime=$pkgver")
+
+ cd onnxruntime/build-cuda
+ _package
}