From a65e4f65e167906e5791b2ca8cd9e636ab5e0b92 Mon Sep 17 00:00:00 2001 From: Samuel Audet Date: Wed, 27 May 2020 16:21:43 +0900 Subject: [PATCH] Enable OpenMP for DNNL and ONNX Runtime on Mac --- ci/install-travis.sh | 7 ++++--- dnnl/cppbuild.sh | 2 +- dnnl/pom.xml | 17 ----------------- dnnl/postbuild.sh | 11 ----------- .../java/org/bytedeco/dnnl/presets/dnnl.java | 2 +- onnxruntime/onnxruntime.patch | 2 +- .../onnxruntime/presets/onnxruntime.java | 3 ++- 7 files changed, 9 insertions(+), 35 deletions(-) delete mode 100755 dnnl/postbuild.sh diff --git a/ci/install-travis.sh b/ci/install-travis.sh index cd4d893fb47..113646e8991 100755 --- a/ci/install-travis.sh +++ b/ci/install-travis.sh @@ -239,6 +239,7 @@ if [ "$TRAVIS_OS_NAME" == "osx" ]; then sudo install_name_tool -change /usr/local/lib/gcc/7/libgcc_s.1.dylib @rpath/libgcc_s.1.dylib /usr/local/lib/gcc/7/libquadmath.0.dylib fi + sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libomp.dylib /usr/local/opt/libomp/lib/libomp.dylib sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libSDL-1.2.0.dylib /usr/local/lib/libSDL-1.2.0.dylib sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libusb-1.0.0.dylib /usr/local/lib/libusb-1.0.0.dylib @@ -378,19 +379,19 @@ else bash cppbuild.sh install $PROJ -platform=$OS -extension=$EXT; export BUILD_STATUS=0 elif [ "$TRAVIS_PULL_REQUEST" = "false" ]; then echo "Not a pull request so attempting to deploy" - mvn clean deploy -B -U -Dmaven.repo.local=$HOME/.m2/repository -Dmaven.repo.local=$HOME/.m2/repository --settings $TRAVIS_BUILD_DIR/ci/settings.xml -Dmaven.test.skip=true $MAVEN_RELEASE -Djavacpp.platform=$OS -Djavacpp.platform.extension=$EXT $BUILD_COMPILER $BUILD_OPTIONS $BUILD_ROOT -pl .,$PROJ; export BUILD_STATUS=$? + mvn clean deploy -B -U -Dmaven.repo.local=$HOME/.m2/repository --settings $TRAVIS_BUILD_DIR/ci/settings.xml -Dmaven.test.skip=true $MAVEN_RELEASE -Djavacpp.platform=$OS -Djavacpp.platform.extension=$EXT $BUILD_COMPILER $BUILD_OPTIONS $BUILD_ROOT -pl .,$PROJ; export BUILD_STATUS=$? if [ $BUILD_STATUS -eq 0 ]; then echo "Deploying platform step" for i in ${PROJ//,/ } do cd $i - mvn clean deploy -B -U -Dmaven.repo.local=$HOME/.m2/repository -Dmaven.repo.local=$HOME/.m2/repository --settings $TRAVIS_BUILD_DIR/ci/settings.xml -f platform/${EXT:1}/pom.xml -Dmaven.test.skip=true $MAVEN_RELEASE -Djavacpp.platform=$OS -Djavacpp.platform.extension=$EXT; export BUILD_STATUS=$? + mvn clean deploy -B -U -Dmaven.repo.local=$HOME/.m2/repository --settings $TRAVIS_BUILD_DIR/ci/settings.xml -f platform/${EXT:1}/pom.xml -Dmaven.test.skip=true $MAVEN_RELEASE -Djavacpp.platform=$OS -Djavacpp.platform.extension=$EXT; export BUILD_STATUS=$? cd .. done fi else echo "Pull request so install only" - mvn clean install -B -U -Dmaven.repo.local=$HOME/.m2/repository -Dmaven.repo.local=$HOME/.m2/repository --settings $TRAVIS_BUILD_DIR/ci/settings.xml -Dmaven.test.skip=true $MAVEN_RELEASE -Djavacpp.platform=$OS -Djavacpp.platform.extension=$EXT $BUILD_COMPILER $BUILD_OPTIONS $BUILD_ROOT -pl .,$PROJ; export BUILD_STATUS=$? + mvn clean install -B -U -Dmaven.repo.local=$HOME/.m2/repository --settings $TRAVIS_BUILD_DIR/ci/settings.xml -Dmaven.test.skip=true $MAVEN_RELEASE -Djavacpp.platform=$OS -Djavacpp.platform.extension=$EXT $BUILD_COMPILER $BUILD_OPTIONS $BUILD_ROOT -pl .,$PROJ; export BUILD_STATUS=$? fi echo "Build status $BUILD_STATUS" diff --git a/dnnl/cppbuild.sh b/dnnl/cppbuild.sh index 651b433a8eb..33513e15d8d 100755 --- a/dnnl/cppbuild.sh +++ b/dnnl/cppbuild.sh @@ -29,7 +29,7 @@ case $PLATFORM in ;; macosx-x86_64) sedinplace 's/__thread/thread_local/g' src/common/utils.hpp - "$CMAKE" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DCMAKE_INSTALL_LIBDIR="lib" -DARCH_OPT_FLAGS='' -DMKLDNN_BUILD_EXAMPLES=OFF -DMKLDNN_BUILD_TESTS=OFF . + "$CMAKE" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DCMAKE_INSTALL_LIBDIR="lib" -DCMAKE_C_FLAGS="-I/usr/local/include -L/usr/local/lib -lomp" -DCMAKE_CXX_FLAGS="-I/usr/local/include -L/usr/local/lib -lomp" -DARCH_OPT_FLAGS='' -DMKLDNN_BUILD_EXAMPLES=OFF -DMKLDNN_BUILD_TESTS=OFF . make -j $MAKEJ make install/strip ;; diff --git a/dnnl/pom.xml b/dnnl/pom.xml index cdd38451ecc..35c3da5f46a 100644 --- a/dnnl/pom.xml +++ b/dnnl/pom.xml @@ -32,23 +32,6 @@ org.bytedeco javacpp - - - javacpp-postbuild - process-classes - - build - - - ${javacpp.compiler.skip} - - bash - ${project.basedir}/postbuild.sh - - ${project.basedir} - - - maven-jar-plugin diff --git a/dnnl/postbuild.sh b/dnnl/postbuild.sh deleted file mode 100755 index 97878908867..00000000000 --- a/dnnl/postbuild.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# Fix GCC library incorrectly linking for rpath on Mac -for VER in 5 6 7 8 9; do - for LIB in libdnnl.1.dylib libjnidnnl.dylib; do - LIBFILE=target/native/org/bytedeco/dnnl/macosx-x86_64/$LIB - if [[ -f $LIBFILE ]]; then - echo Fixing $LIBFILE - install_name_tool -change /usr/local/lib/gcc/$VER/libgcc_s.1.dylib @rpath/libgcc_s.1.dylib $LIBFILE - fi - done -done diff --git a/dnnl/src/main/java/org/bytedeco/dnnl/presets/dnnl.java b/dnnl/src/main/java/org/bytedeco/dnnl/presets/dnnl.java index e2b9f0fd34f..bc6ef451b70 100644 --- a/dnnl/src/main/java/org/bytedeco/dnnl/presets/dnnl.java +++ b/dnnl/src/main/java/org/bytedeco/dnnl/presets/dnnl.java @@ -43,7 +43,7 @@ compiler = "cpp11", define = {"GENERIC_EXCEPTION_CLASS dnnl::error", "GENERIC_EXCEPTION_TOSTRING toStdString().c_str()"}, include = {"dnnl_types.h", "dnnl_config.h", /*"dnnl_debug.h",*/ "dnnl_version.h", "dnnl.h", "dnnl.hpp"}, - link = "dnnl@.1", preload = {"gomp@.1", "iomp5"}, resource = {"include", "lib"} + link = "dnnl@.1", preload = {"gomp@.1", "iomp5", "omp"}, preloadpath = "/usr/local/lib", resource = {"include", "lib"} ), }, target = "org.bytedeco.dnnl", diff --git a/onnxruntime/onnxruntime.patch b/onnxruntime/onnxruntime.patch index 659aed0c4c7..be17f120de5 100644 --- a/onnxruntime/onnxruntime.patch +++ b/onnxruntime/onnxruntime.patch @@ -34,7 +34,7 @@ index 9a79115ed..7ddaeec32 100644 if(UNIX) if (APPLE) - set(ONNXRUNTIME_SO_LINK_FLAG " -Xlinker -dead_strip") -+ set(ONNXRUNTIME_SO_LINK_FLAG "") ++ set(ONNXRUNTIME_SO_LINK_FLAG "-L/usr/local/lib -lomp") else() - set(ONNXRUNTIME_SO_LINK_FLAG " -Xlinker --version-script=${SYMBOL_FILE} -Xlinker --no-undefined -Xlinker --gc-sections -z noexecstack") + set(ONNXRUNTIME_SO_LINK_FLAG "-Xlinker --no-undefined -Xlinker -z -Xlinker noexecstack") diff --git a/onnxruntime/src/main/java/org/bytedeco/onnxruntime/presets/onnxruntime.java b/onnxruntime/src/main/java/org/bytedeco/onnxruntime/presets/onnxruntime.java index 3f3e9dccebf..adcff88ebdb 100644 --- a/onnxruntime/src/main/java/org/bytedeco/onnxruntime/presets/onnxruntime.java +++ b/onnxruntime/src/main/java/org/bytedeco/onnxruntime/presets/onnxruntime.java @@ -50,7 +50,8 @@ "onnxruntime/core/providers/cuda/cuda_provider_factory.h", "onnxruntime/core/providers/dnnl/dnnl_provider_factory.h" }, - link = "onnxruntime@.1.3.0" + link = "onnxruntime@.1.3.0", + preload = {"onnxruntime_providers_dnnl", "onnxruntime_providers_cuda"} ), @Platform( value = {"linux", "macosx", "windows"},