From 438056eefca9b8356ec7aab89bf05544e3fc647f Mon Sep 17 00:00:00 2001 From: Adam Parler Date: Wed, 3 Jan 2024 13:22:44 -0800 Subject: [PATCH] Changed order of some commands for consistent flow. Updated OPENMPI MPICH OPENBLAS and FFTW install commands. --- make_cluster.sh | 138 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 111 insertions(+), 27 deletions(-) diff --git a/make_cluster.sh b/make_cluster.sh index 0778489..196b083 100644 --- a/make_cluster.sh +++ b/make_cluster.sh @@ -17,33 +17,34 @@ fi GCC_BUILD_DIR=${BUILD_LOCATION}/gcc GCC_INSTALL_DIR=${INSTALL_LOCATION}/gcc mkdir -p ${GCC_INSTALL_DIR} +mkdir gcc-${GCC_VERSION}-build GCC_VERSION=7.5.0 cd ${GCC_BUILD_DIR} -mkdir gcc-${GCC_VERSION}-build -wget https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz +wget ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz tar -xf gcc-${GCC_VERSION}.tar.gz mv gcc-${GCC_VERSION} gcc-${GCC_VERSION}-source cd gcc-${GCC_VERSION}-source ./contrib/download_prerequisites cd ../gcc-${GCC_VERSION}-build -${GCC_BUILD_DIR}/gcc-${GCC_VERSION}-source/configure --prefix=${GCC_INSTALL_DIR}/${GCC_VERSION} --enable-languages=c,c++,fortran,go --disable-multilib --enable-bootstrap --enable-lto --enable-plugins +${GCC_BUILD_DIR}/gcc-${GCC_VERSION}-source/configure --prefix=${GCC_INSTALL_DIR}/${GCC_VERSION} --enable-languages=c,c++,fortran,go --enable-lto --disable-multilib --enable-checking=release --enable-threads=posix --enable-libstdcxx-debug --enable-__cxa_atexit --enable-plugins --enable-bootstrap make -j$(nproc) +make -j$(nproc) check make install ## INSTALL ENVIRONMENT MODULES FROM SOURCE MODULES_BUILD_DIR=${BUILD_LOCATION} MODULES_INSTALL_DIR=${INSTALL_LOCATION}/modules +mkdir -p ${MODULES_BUILD_DIR} mkdir -p ${MODULES_INSTALL_DIR} -cd ${MODULES_BUILD_DIR} MODULES_VERSION=5.3.1 +cd ${MODULES_BUILD_DIR} curl -LJO https://github.com/cea-hpc/modules/releases/download/v${MODULES_VERSION}/modules-${MODULES_VERSION}.tar.gz -tar xfz modules-${MODULES_VERSION}.tar.gz +tar -xf modules-${MODULES_VERSION}.tar.gz cd modules-${MODULES_VERSION} - mkdir build && cd build ./configure --prefix=${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION} --modulefilesdir=${MODULES_INSTALL_DIR}/Modules/${MODULES_VERSION}/modulefiles make -j$(nproc) @@ -87,6 +88,7 @@ tar -xf qt-everywhere-opensource-src-${QT_VERSION}.tar.xz cd qt-everywhere-opensource-src-${QT_VERSION} mkdir build && cd build ../configure -prefix ${QT_INSTALL_DIR}/${QT_VERSION} -make tests -release -opensource -confirm-license +##### THIS COMMAND NEEDS TO BE FINISHED##### ## INSTALL CMAKE FROM SOURCE CMAKE_BUILD_DIR=${BUILD_LOCATION}/cmake @@ -121,15 +123,16 @@ GIT_INSTALL_DIR=${INSTALL_LOCATION}/git mkdir -p ${GIT_BUILD_DIR} mkdir -p ${GIT_INSTALL_DIR} -cd ${GIT_BUILD_DIR} GIT_VERSION=2.11.3 + +cd ${GIT_BUILD_DIR} wget -c https://mirrors.edge.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz tar -xzf git-${GIT_VERSION}.tar.gz cd git-${GIT_VERSION} make configure ./configure --prefix=${GIT_INSTALL_DIR}/${GIT_VERSION} make -j$(nproc) -make test +make -j$(nproc) test make install ## INSTALL LLVM FROM SOURCE @@ -151,9 +154,21 @@ cmake -S llvm -B build -G "Unix Makefiles" \ make -j$(nproc) make install +## INSTALL OPENMPI FROM SOURCE module load gcc/${GCC_VERSION} cmake/${CMAKE_VERSION} -## INSTALL OPENMPI FROM SOURCE +OPENMPI_BUILD_DIR=${BUILD_LOCATION}/openmpi +OPENMPI_INSTALL_DIR=${INSTALL_LOCATION}/openmpi +mkdir -p ${OPENMPI_BUILD_DIR} +mkdir -p ${OPENMPI_INSTALL_DIR} + +OPENMPI_VERSION=4.1.1 + +cd ${OPENMPI_BUILD_DIR} +wget -c https://download.open-mpi.org/release/open-mpi/v${OPENMPI_VERSION%.*}/openmpi-${OPENMPI_VERSION}.tar.gz +tar -xf openmpi-${OPENMPI_VERSION}.tar.gz +cd openmpi-${OPENMPI_VERSION} +mkdir build && cd build if [ $(command -v srun) ]; then echo "Slurm installation found. OpenMPI will be configured with --with-pmi." @@ -162,26 +177,52 @@ else EXTRA_CONFIGURE_FLAGS="" fi -./configure CFLAGS="${CFLAGS}" \ +pkg_install_dir=${OPENMPI_INSTALL_DIR}/${OPENMPI_VERSION}/${AVFS_COMPILER}/${AVFS_COMPILER_VERSION} + +../configure CFLAGS="${CFLAGS}" \ --prefix=${pkg_install_dir} \ --libdir="${pkg_install_dir}/lib" \ --enable-mpi1-compatibility \ ${EXTRA_CONFIGURE_FLAGS} +make -j$(procs) +make -j$(procs) install ## INSTALL MPICH FROM SOURCE +module load gcc/${GCC_VERSION} cmake/${CMAKE_VERSION} +MPICH_BUILD_DIR=${BUILD_LOCATION}/mpich +MPICH_INSTALL_DIR=${INSTALL_LOCATION}/mpich +mkdir -p ${MPICH_BUILD_DIR} +mkdir -p ${MPICH_INSTALL_DIR} -./configure \ +MPICH_VERSION=4.0.3 + +cd ${MPICH_BUILD_DIR} +wget -c https://mpich.org/static/downloads/${MPICH_VERSION}/mpich-${MPICH_VERSION}.tar.gz +tar -xf mpich-${MPICH_VERSION}.tar.gz + +cd mpich-${MPICH_VERSION} +mkdir build && cd build + +if ("${FC}" --version | grep -q 'GNU'); then + compat_flag=$(allowed_gfortran_flags "-fallow-argument-mismatch") +else + compat_flag="" +fi + +pkg_install_dir=${MPICH_INSTALL_DIR}/${MPICH_VERSION}/${AVFS_COMPILER}/${AVFS_COMPILER_VERSION} + +../configure \ --prefix="${pkg_install_dir}" \ + --libdir="${pkg_install_dir}/lib" \ MPICC="" \ FFLAGS="${FCFLAGS} ${compat_flag}" \ FCFLAGS="${FCFLAGS} ${compat_flag}" \ --without-x \ --enable-gl=no \ - --with-device=${MPICH_DEVICE} \ - -make -j$(nproc) -make install + --with-device=${MPICH_DEVICE} +make -j$(procs) +make -j$(procs) install MPIRUN="${pkg_install_dir}/bin/mpiexec" @@ -220,19 +261,62 @@ mkdir -p ${OPENBLAS_INSTALL_DIR} OPENBLAS_VERSION=0.3.18 cd ${OPENBLAS_BUILD_DIR} -wget -c openblas -tar -xf openblas-${OPENBLAS_VERSION}.tar.gz -cd openblas-${OPENBLAS_VERSION} +wget -c https://github.com/OpenMathLib/OpenBLAS/releases/download/v${OPENBLAS_VERSION}/OpenBLAS-${OPENBLAS_VERSION}.tar.gz +tar -xf OpenBLAS-${OPENBLAS_VERSION}.tar.gz +cd OpenBLAS-${OPENBLAS_VERSION} +pkg_install_dir=${OPENBLAS_INSTALL_DIR}/${OPENBLAS_VERSION} +make -j$(nproc) \ + MAKE_NB_JOBS=0 \ + TARGET=${TARGET} \ + NUM_THREADS=128 \ + USE_THREAD=1 \ + USE_OPENMP=1 \ + NO_AFFINITY=1 \ + CC="${CC}" \ + FC="${FC}" \ + PREFIX="${pkg_install_dir}" + + +make -j$(nproc) \ + MAKE_NB_JOBS=0 \ + TARGET=${TARGET} \ + NUM_THREADS=128 \ + USE_THREAD=1 \ + USE_OPENMP=1 \ + NO_AFFINITY=1 \ + CC="${CC}" \ + FC="${FC}" \ + PREFIX="${pkg_install_dir}" install + +## INSTALL FFTW FROM SOURCE +FFTW_BUILD_DIR=${BUILD_LOCATION}/fftw +FFTW_INSTALL_DIR=${INSTALL_LOCATION}/fftw +mkdir -p ${FFTW_BUILD_DIR} +mkdir -p ${FFTW_INSTALL_DIR} + +FFTW_VERSION=3.3.10 + +cd ${FFTW_BUILD_DIR} +wget -c http://www.fftw.org/fftw-${FFTW_VERSION}.tar.gz +tar -xf fftw-${FFTW_VERSION}.tar.gz +cd fftw-${FFTW_VERSION} +mkdir build && cd build +FFTW_FLAGS="--enable-openmp --disable-shared --enable-static" + +if [ "$MPI_ENABLED" = true ]; then + FFTW_FLAGS="--enable-mpi ${FFTW_FLAGS}" +fi +if [ "${TARGET_CPU}" = "native" ]; then + if [ -f /proc/cpuinfo ]; then + grep '\bavx\b' /proc/cpuinfo 1> /dev/null && FFTW_FLAGS="${FFTW_FLAGS} --enable-avx" + grep '\bavx2\b' /proc/cpuinfo 1> /dev/null && FFTW_FLAGS="${FFTW_FLAGS} --enable-avx2" + grep '\bavx512f\b' /proc/cpuinfo 1> /dev/null && FFTW_FLAGS="${FFTW_FLAGS} --enable-avx512" + fi +fi +pkg_install_dir=${PROGRAM_INSTALL_DIR}/${PROGRAM_VERSION} +./configure --prefix=${pkg_install_dir} --libdir="${pkg_install_dir}/lib" ${FFTW_FLAGS} make -j$(nproc) -make install PREFIX=${OPENBLAS_INSTALL_DIR}/${OPENBLAS_VERSION} - -## INSTALL LAPACK FROM SOURCE -LAPACK_BUILD_DIR=${BUILD_LOCATION}/lapack -LAPACK_INSTALL_DIR=${INSTALL_LOCATION}/lapack -mkdir -p ${LAPACK_BUILD_DIR} -mkdir -p ${LAPACK_INSTALL_DIR} - -LAPACK_VERSION=3.10.0 +make -j$(nproc) install ## INSTALL HDF5 FROM SOURCE module load gcc/8.1.0 openmpi/4.1.4 cmake/3.21.3