Skip to content

Commit

Permalink
Fix build for OpenBLAS on Linux with AVX-512
Browse files Browse the repository at this point in the history
  • Loading branch information
saudet committed Nov 19, 2020
1 parent 8e39a60 commit 1bea71a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
2 changes: 2 additions & 0 deletions ci/install-travis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
9 changes: 4 additions & 5 deletions openblas/cppbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,14 @@ 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=
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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 1bea71a

Please sign in to comment.