Skip to content

Instantly share code, notes, and snippets.

@antoine-morvan
Created October 12, 2023 12:15
Show Gist options
  • Save antoine-morvan/bf6168f51f7d3b0058f69a664a9d7217 to your computer and use it in GitHub Desktop.
Save antoine-morvan/bf6168f51f7d3b0058f69a664a9d7217 to your computer and use it in GitHub Desktop.
OpenBLAS build steps reproducer
#!/usr/bin/env bash
###############################################################################
#### Header
###############################################################################
set -e -u -o pipefail
TEST_SCRIPT_DIR=$(dirname $(readlink -f $BASH_SOURCE))
###############################################################################
#### Fetch & extract openblas
###############################################################################
OPENBLAS_VERSION=0.3.24
OPENBLAS_DIR=OpenBLAS-${OPENBLAS_VERSION}
OPENBLAS_ARCHIVE=${OPENBLAS_DIR}.tar.gz
OPENBLAS_URL=https://github.com/xianyi/OpenBLAS/releases/download/v${OPENBLAS_VERSION}/${OPENBLAS_ARCHIVE}
echo Fetch Archive
[ ! -f ~/Downloads/$OPENBLAS_ARCHIVE ] && wget ${OPENBLAS_URL} -o ~/Downloads/$OPENBLAS_ARCHIVE
[ ! -f $TEST_SCRIPT_DIR/$OPENBLAS_ARCHIVE ] && cp ~/Downloads/$OPENBLAS_ARCHIVE $TEST_SCRIPT_DIR/$OPENBLAS_ARCHIVE
echo Extract Archive
[ ! -d $TEST_SCRIPT_DIR/$OPENBLAS_DIR ] && (cd $TEST_SCRIPT_DIR/ && tar xf $TEST_SCRIPT_DIR/$OPENBLAS_ARCHIVE)
###############################################################################
#### Source / prepare compiler
###############################################################################
module load gcc-13.2.0
export CC=gcc
export CXX=g++
export FC=gfortran
CFLAGS="-O3 -mcpu=native"
FCFLAGS="$CFLAGS"
CXXFLAGS="$CFLAGS"
###############################################################################
#### Make build
###############################################################################
echo Build Make
BUILD_DIR=$TEST_SCRIPT_DIR/$OPENBLAS_DIR
set +e
(cd ${BUILD_DIR} && make USE_THREAD=1 USE_OPENMP=1 -j $(nproc))
RES=$?
set -e
[ $RES != 0 ] && (cd ${BUILD_DIR} && make make USE_THREAD=1 USE_OPENMP=1)
exit 0
###############################################################################
#### CMake build
###############################################################################
echo Build CMake
BUILD_DIR=$TEST_SCRIPT_DIR/build
echo "Prepare build dir $BUILD_DIR"
mkdir -p $BUILD_DIR
(cd $BUILD_DIR && cmake \
-Wno-dev \
-G "Unix Makefiles" \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_STATIC_LIBS=ON \
-DUSE_THREAD=ON \
-DUSE_OPENMP=ON \
$TEST_SCRIPT_DIR/$OPENBLAS_DIR)
set +e
(cd ${BUILD_DIR} && make -j $(nproc))
RES=$?
set -e
[ $RES != 0 ] && (cd ${BUILD_DIR} && make VERBOSE=1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment