From 1bea71a151b552ddfed1633a9ab7b4cf6d003bd6 Mon Sep 17 00:00:00 2001 From: Samuel Audet Date: Thu, 19 Nov 2020 11:35:57 +0900 Subject: [PATCH] Fix build for OpenBLAS on Linux with AVX-512 --- ci/install-travis.sh | 2 ++ openblas/cppbuild.sh | 9 ++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ci/install-travis.sh b/ci/install-travis.sh index bcb62c6d150..383bda9b50f 100755 --- a/ci/install-travis.sh +++ b/ci/install-travis.sh @@ -70,6 +70,8 @@ if [[ "$OS" == "linux-x86" ]] || [[ "$OS" == "linux-x86_64" ]] || [[ "$OS" =~ an docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "rpm -i --force --nodeps $HOME/*.rpm" fi fi + # https://gcc.gnu.org/legacy-ml/gcc-patches/2018-01/msg01962.html + docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "sed -i 's/_mm512_abs_pd (__m512 __A)/_mm512_abs_pd (__m512d __A)/g' /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/include/avx512fintrin.h" docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "rm -f /usr/lib/libgfortran.so.3* /usr/lib64/libgfortran.so.3*" # not required for GCC 7+ docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "source scl_source enable $SCL_ENABLE || true; gcc --version" docker exec -ti $DOCKER_CONTAINER_ID /bin/bash -xec "gpg --version" diff --git a/openblas/cppbuild.sh b/openblas/cppbuild.sh index 5fb22b32f77..c55cd2d8510 100755 --- a/openblas/cppbuild.sh +++ b/openblas/cppbuild.sh @@ -26,9 +26,6 @@ cp lapack-netlib/LAPACKE/include/*.h ../include # remove broken cross-compiler workaround on Mac sedinplace '/if (($os eq "Darwin")/,/}/d' c_check ../OpenBLAS-$OPENBLAS_VERSION-nolapack/c_check -# fix AVX512 on Linux -sedinplace 's/_mm512_abs_pd(_mm512_load_pd/_mm512_abs_pd((__m512)_mm512_load_pd/g' kernel/x86_64/dasum_microk_skylakex-2.c ../OpenBLAS-$OPENBLAS_VERSION-nolapack/kernel/x86_64/dasum_microk_skylakex-2.c - # blas (requires fortran, e.g. sudo yum install gcc-gfortran) export FEXTRALIB="-lgfortran" export CROSS_SUFFIX= @@ -36,6 +33,7 @@ export HOSTCC=gcc export NO_LAPACK=0 export NUM_THREADS=64 export NO_AFFINITY=1 +export NO_AVX512=1 case $PLATFORM in android-arm) patch -Np1 < ../../../OpenBLAS-android.patch @@ -157,6 +155,7 @@ case $PLATFORM in export BINARY=64 export DYNAMIC_ARCH=1 export TARGET=NEHALEM + export NO_AVX512=0 ;; linux-ppc64le) # patch to use less buggy generic kernels @@ -232,12 +231,12 @@ case $PLATFORM in ;; esac -make -s -j $MAKEJ libs netlib shared "CROSS_SUFFIX=$CROSS_SUFFIX" "CC=$CC" "FC=$FC" "HOSTCC=$HOSTCC" BINARY=$BINARY COMMON_PROF= F_COMPILER=GFORTRAN "FEXTRALIB=$FEXTRALIB" USE_OPENMP=0 NUM_THREADS=$NUM_THREADS +make -s -j $MAKEJ libs netlib shared "CROSS_SUFFIX=$CROSS_SUFFIX" "CC=$CC" "FC=$FC" "HOSTCC=$HOSTCC" BINARY=$BINARY COMMON_PROF= F_COMPILER=GFORTRAN "FEXTRALIB=$FEXTRALIB" USE_OPENMP=0 NUM_THREADS=$NUM_THREADS NO_AVX512=$NO_AVX512 make install "PREFIX=$INSTALL_PATH" unset DYNAMIC_ARCH cd ../OpenBLAS-$OPENBLAS_VERSION-nolapack/ -make -s -j $MAKEJ libs netlib shared "CROSS_SUFFIX=$CROSS_SUFFIX" "CC=$CC" "FC=$FC" "HOSTCC=$HOSTCC" BINARY=$BINARY COMMON_PROF= F_COMPILER=GFORTRAN "FEXTRALIB=$FEXTRALIB" USE_OPENMP=0 NUM_THREADS=$NUM_THREADS NO_LAPACK=1 LIBNAMESUFFIX=nolapack +make -s -j $MAKEJ libs netlib shared "CROSS_SUFFIX=$CROSS_SUFFIX" "CC=$CC" "FC=$FC" "HOSTCC=$HOSTCC" BINARY=$BINARY COMMON_PROF= F_COMPILER=GFORTRAN "FEXTRALIB=$FEXTRALIB" USE_OPENMP=0 NUM_THREADS=$NUM_THREADS NO_AVX512=$NO_AVX512 NO_LAPACK=1 LIBNAMESUFFIX=nolapack make install "PREFIX=$INSTALL_PATH" NO_LAPACK=1 LIBNAMESUFFIX=nolapack unset CC