From 557025fe7a6701d806f277ea2615e5b98085daf5 Mon Sep 17 00:00:00 2001 From: Adam Parler Date: Fri, 5 Jan 2024 03:15:40 -0800 Subject: [PATCH] Broke out FFTW build into own script --- make_cluster.sh | 37 +++----------------- scripts/install_fftw.sh | 75 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 32 deletions(-) create mode 100644 scripts/install_fftw.sh diff --git a/make_cluster.sh b/make_cluster.sh index 196b083..19ccd19 100644 --- a/make_cluster.sh +++ b/make_cluster.sh @@ -184,8 +184,8 @@ pkg_install_dir=${OPENMPI_INSTALL_DIR}/${OPENMPI_VERSION}/${AVFS_COMPILER}/${AVF --libdir="${pkg_install_dir}/lib" \ --enable-mpi1-compatibility \ ${EXTRA_CONFIGURE_FLAGS} -make -j$(procs) -make -j$(procs) install +make -j$(nproc) +make -j$(nproc) install ## INSTALL MPICH FROM SOURCE module load gcc/${GCC_VERSION} cmake/${CMAKE_VERSION} @@ -221,8 +221,8 @@ pkg_install_dir=${MPICH_INSTALL_DIR}/${MPICH_VERSION}/${AVFS_COMPILER}/${AVFS_CO --without-x \ --enable-gl=no \ --with-device=${MPICH_DEVICE} -make -j$(procs) -make -j$(procs) install +make -j$(nproc) +make -j$(nproc) install MPIRUN="${pkg_install_dir}/bin/mpiexec" @@ -289,34 +289,7 @@ make -j$(nproc) \ 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 -j$(nproc) install +./scripts/install_fftw.sh ## INSTALL HDF5 FROM SOURCE module load gcc/8.1.0 openmpi/4.1.4 cmake/3.21.3 diff --git a/scripts/install_fftw.sh b/scripts/install_fftw.sh new file mode 100644 index 0000000..53e8d67 --- /dev/null +++ b/scripts/install_fftw.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +if [[ "$BASH_SOURCE" == "$0" ]]; then + BUILD_LOCATION=${PWD} + INSTALL_LOCATION=/avfs/people/parl703 + LOG_LINES=200 +else + ROOT=${PWD} +fi + +TARGET_CPU=${TARGET_CPU:-"native"} + +echo "==================== Installing FFTW ====================" +FFTW_VERSION=3.3.10 + +FFTW_BUILD_DIR=${BUILD_LOCATION}/fftw +FFTW_INSTALL_DIR=${INSTALL_LOCATION}/fftw/${FFTW_VERSION} +mkdir -p ${FFTW_BUILD_DIR} +mkdir -p ${FFTW_INSTALL_DIR} + +cd ${FFTW_BUILD_DIR} +if [ -f fftw-${FFTW_VERSION}.tar.gz ]; then + echo "fftw-${FFTW_VERSION}.tar.gz is found" +else + wget -c ftp://ftp.fftw.org/pub/fftw/fftw-${FFTW_VERSION}.tar.gz +fi +#[ -d fftw-${FFTW_VERSION}/build ] && rm -rf fftw-${FFTW_VERSION}/build +#tar -xf fftw-${FFTW_VERSION}.tar.gz +cd fftw-${FFTW_VERSION} +mkdir -p build && cd build + +FFTW_FLAGS="--enable-shared" + +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 + +if [ "$BUILD_SINGLE" = true ]; then + FFTW_FLAGS="--enable-float ${FFTW_FLAGS}" +fi + +if [ "$OPENMP_ENALBED" = true ]; then + FFTW_FLAGS="--enable-openmp ${FFTW_FLAGS}" + OTHER=openmp +else + FFTW_FLAGS="--enable-threads ${FFTW_FLAGS}" + OTHER=smp +fi + +if [ "$MPI_ENABLED" = true ]; then + FFTW_FLAGS="--enable-mpi ${FFTW_FLAGS}" + FFTW_INSTALL_DIR=${FFTW_INSTALL_DIR}/${MPI_MODE}/${MPI_VERSION} +else + FFTW_INSTALL_DIR=${FFTW_INSTALL_DIR}/${OTHER} +fi + +echo "Installing from scratch into ${FFTW_INSTALL_DIR}" +echo ${FFTW_FLAGS} +../configure --prefix=${FFTW_INSTALL_DIR} ${FFTW_FLAGS} > configure.log 2>&1 || tail -n ${LOG_LINES} configure.log +make -j$(nproc) > make.log 2>&1 || tail -n ${LOG_LINES} make.log +if [ -z "$SKIP_CHECK" ]; then + echo -n "Checking that everything is working properly ... " + make -j$(nproc) check > check.log 2>&1 || tail -n ${LOG_LINES} check.log + echo "Success!" +fi +#make -j$(nproc) install > install.log 2>&1 || tail -n ${LOG_LINES} install.log + +if [[ "$BASH_SOURCE" != "$0" ]]; then + cd ${ROOT} + echo "Exiting ..." +fi