From 90661e5778e340040dca6acfa1dce16841385334 Mon Sep 17 00:00:00 2001
From: Joe Garcia <joe.garcia@ssec.wisc.edu>
Date: Fri, 15 Mar 2019 14:09:46 -0500
Subject: [PATCH] replace blas/lapack/Accelerate with openblas
---
ShellB3/shallbethree.sh | 73 ++++++++++++++++++++++++++++-------------
1 file changed, 50 insertions(+), 23 deletions(-)
diff --git a/ShellB3/shallbethree.sh b/ShellB3/shallbethree.sh
index f8491ba0..3d0f1330 100755
--- a/ShellB3/shallbethree.sh
+++ b/ShellB3/shallbethree.sh
@@ -2003,7 +2003,7 @@ if isDarwin ; then
export SB3CXXFLAGS="-isysroot ${SYSROOT} ${CPUFLAGS} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -stdlib=libc++"
export SB3LDFLAGS="-isysroot ${SYSROOT} ${CPUFLAGS} -lc++ -lc++abi -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" #--sysroot=$SYSROOT"
export SB3CPPFLAGS="-stdlib=libc++ -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" #--sysroot=$SYSROOT"
- export SYS_FORBIDDENLIBS="libstdc++,libssl"
+ export SYS_FORBIDDENLIBS="libstdc++,libssl,libblas,libcblas,liblapack,Accelerate,libgrib_api"
export USE_PORTABLE_LIBTOOL=YES
export IGNORE_PIP=YES #PIP's expectation of ssl borks everything
;;
@@ -2066,7 +2066,7 @@ elif isLinux ; then
if [ -z "${MACHTYPE}" ] ; then
export MACHTYPE=${CPUTYPE}
fi
- export SYS_FORBIDDENLIBS=""
+ export SYS_FORBIDDENLIBS="libblas,libcblas,liblapack,libgrib_api" #deprecated
echo "Checking for bundled compilers"
_find_cots ACLANG clang $BASE/sysbin $BASE/bin || echo bundled clang not found
_find_cots AFLANG flang $BASE/sysbin $BASE/bin || echo bundled flang not found
@@ -3200,10 +3200,12 @@ mk_numpy() {
resume_tracker
echo unpacking numpy...
- _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "numpy requires blas"
- _find_cots_lib CBLAS libcblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "numpy requires cblas"
- _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "numpy requires lapack"
_find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "numpy didn't find openblas. using blas"
+ if [ -z "${OPENBLAS}" ] ; then
+ _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "numpy requires blas or openblas"
+ _find_cots_lib CBLAS libcblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "numpy requires cblas or openblas"
+ _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "numpy requires lapack or openblas"
+ fi
if isTrue USING_FLANG ; then
export FLIB=flang
@@ -3500,6 +3502,7 @@ mk_eccodes() {
install_name_tool $( for g in lib/libeccodes*.dylib ; do \
echo "-change ./$g @rpath/$g -change $(basename $g) @rpath/$g -change @rpath/$(basename $g) @rpath/$g" ; \
done ) \
+ -change /usr/local/lib/libgcc_s.1.dylib ${BASE}/lib/libgcc_s.1.dylib \
-change @rpath/Python @rpath/Library/Frameworks/Python.framework/Versions/${PYFSVER}/Python $f ; \
reid $f ; \
install_name_tool -add_rpath @loader_path/.. $f ; fi ; done
@@ -3604,6 +3607,12 @@ mk_hdf5() {
--enable-shared $( isDarwin && echo "--build=${PLATFORM}" ) --with-pic \
--with-zlib=$ZLIB --enable-cxx $( isNotTrue USING_FLANG && echo "--enable-fortran" ) --with-pthread $( test -n "$SZLIB" && echo --with-szlib=$SZLIB )
+ if isDarwin ; then
+ for f in $( find lib* -name *.dylib -type f ) ; do
+ install_name_tool -change /usr/local/lib/libgcc_s.1.dylib ${BASE}/lib/libgcc_s.1.dylib $f
+ done
+ fi
+
return 0
}
@@ -3696,8 +3705,11 @@ mk_cython() {
mk_numexpr() {
resume_tracker && return 0
echo extracting numexpr...
- _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "numexpr requires blas"
- _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "numexpr requires lapack"
+ _find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "octave didn't find openblas. using blas"
+ if [ -z "${OPENBLAS}" ] ; then
+ _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "numexpr requires blas or openblas"
+ _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "numexpr requires lapack or openblas"
+ fi
_setup_build_install numexpr src/numexpr-${NUMEXPRVER}.tar.gz numexpr-${NUMEXPRVER}
}
@@ -3803,7 +3815,7 @@ SCRIPT
__ssmk() {
resume_tracker && return 0
- ( cd build/SuiteSparse && make config \
+ ( cd build/SuiteSparse && make config "$@" \
&& make library \
&& MAKEFLAGS="" make install ) || return $?
}
@@ -3823,8 +3835,11 @@ mk_suitesparse() {
fi
echo unpacking suitesparse...
- _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "suitesparse requires blas"
- _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "suitesparse requires lapack"
+ _find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "octave didn't find openblas. using blas"
+ if [ -z "${OPENBLAS}" ] ; then
+ _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "suitesparse requires blas or openblas"
+ _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "suitesparse requires lapack or openblas"
+ fi
_find_cots_lib METIS libmetis $BASE $COTS_HOME ${SYSROOT}/usr || export METISLIBFILE="/dev/null"
_find_cots_lib METISINC metislib.h $BASE/include $COTS_HOME/include ${SYSROOT}/usr/include || export METISLIBFILE="/dev/null"
@@ -3852,7 +3867,10 @@ mk_suitesparse() {
if isTrue DISABLE_GRAPHBLAS ; then
mv Makefile _oldmake && grep -v GraphBLAS _oldmake > Makefile
fi
-
+for f in \$( find * -type f -name SuiteSparse_config.mk ) ; do
+ echo Patching \$f
+ sed -i.old -e 's,BLAS = -framework Accelerate,,g' -e 's,LAPACK = -framework Accelerate,,g' \$f
+done
SCRIPT
#copied from _cmake_make()
@@ -3884,12 +3902,20 @@ PATCH
_decompress_in_build "${name}" ${tarball} "${buildir}" "$@"
echo "building suitesparse for $BASE"
+ if [ -z "${OPENBLAS}" ] ; then
CMAKE_OPTIONS="${CMAKEEXTRA}" CC="$MYCC" MY_METIS_LIB="${METISLIBFILE}" MY_METIS_INC="${METISINC}" \
GPU_CONFIG=-DNPARTITION CFLAGS="-fPIC $SB3FLAGS" CHOLMOD_CONFIG=-DNPARTITION \
CF="${CFLAGS} -O3 -fexceptions ${LINUXCPUFLAGS}" INSTALL="${BASE}" CFOPENMP=" -fexceptions " \
BLAS="-L${BLASLIBDIR} ${LDFLAGS} -lblas ${FLIBS}" LAPACK="-L${LAPACKLIBDIR} ${LDFLAGS} -llapack ${FLIBS}" __ssmk \
- || oops "suitesparse build failed"
-
+ || oops "suitesparse build with blas/lapack failed"
+ else
+ CMAKE_OPTIONS="${CMAKEEXTRA}" CC="$MYCC" MY_METIS_LIB="${METISLIBFILE}" MY_METIS_INC="${METISINC}" \
+ GPU_CONFIG=-DNPARTITION CFLAGS="-fPIC $SB3FLAGS" CHOLMOD_CONFIG=-DNPARTITION \
+ CF="${CFLAGS} -O3 -fexceptions ${LINUXCPUFLAGS}" INSTALL="${BASE}" CFOPENMP=" -fexceptions " \
+ OPENBLAS="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" \
+ BLAS="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" LAPACK="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" __ssmk \
+ BLAS="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" LAPACK="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" || oops "suitesparse build with openblas failed"
+ fi
_compiler_proxy_end ld MYLD
reid ${BASE}/lib*/libgraphblas* ${BASE}/lib*/libmongoose*
@@ -3900,9 +3926,11 @@ PATCH
mk_scipy() {
resume_tracker && return 0
- _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "scipy requires blas"
- _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr ||oops "scipy requires lapack"
_find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "numpy didn't find openblas. using blas"
+ if [ -z "${OPENBLAS}" ] ; then
+ _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "scipy requires blas or openblas"
+ _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr ||oops "scipy requires lapack or openblas"
+ fi
if isTrue USING_FLANG ; then
export FLIB=flang
@@ -7752,8 +7780,12 @@ mk_octave() {
isDarwin && OCTAVEEXTRA="${OCTAVEEXTRA} --with-x=no --disable-no-undefined" # --without-framework-carbon"
#isDarwin && [ -n "$(clang --version | grep "LLVM 3.5" )" ] && OCTAVEEXTRA="${OCTAVEEXTRA} --without-jit" #jit triggers a bug in LLVM3.5
- _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs blas"
- _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs lapack"
+ _find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "octave didn't find openblas. using blas"
+ if [ -z "${OPENBLAS}" ] ; then
+ oops FIXME
+ _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs blas or openblas"
+ _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs lapack or openblas"
+ fi
_find_cots_lib LIBREADLINE libreadline $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs libreadline"
_find_cots LIBMAGICK include/ImageMagick-6/Magick++.h $BASE || echo "making octave without magick" #oops "octave needs ImageMagick"
@@ -9380,9 +9412,6 @@ mk_core() {
&& mk_packaging \
&& mk_setuptools && mk_setuptools_scm \
&& mk_openblas \
- && mk_blas \
- && mk_cblas \
- && mk_lapack \
&& mk_numpy \
&& mk_jpeg \
&& mk_cmake \
@@ -9560,9 +9589,7 @@ mk_iasi2fbf() {
&& mk_libffi \
&& mk_expat \
&& mk_apy \
- && mk_blas \
- && mk_cblas \
- && mk_lapack \
+ && mk_openblas \
&& mk_numpy \
&& mk_eugene \
&& mk_setuptools \
--
GitLab