Toolchain: Do not cache NPROCS

This commit is contained in:
Ole Schütt 2021-03-03 23:21:59 +01:00 committed by Ole Schütt
parent 9d8cd25fe8
commit 439702f443
29 changed files with 51 additions and 55 deletions

View file

@ -338,9 +338,6 @@ else
export MPI_MODE=no
fi
# number of processors to use
export NPROCS=$(get_nprocs)
# default enable options
dry_run=__FALSE__
enable_tsan=__FALSE__
@ -384,7 +381,7 @@ while [ $# -ge 1 ]; do
case $1 in
-j)
shift
export NPROCS=$1
export NPROCS_OVERWRITE=$1
;;
--no-check-certificate)
export DOWNLOADER_FLAGS="-n"
@ -865,7 +862,7 @@ fi
# Installing tools required for building CP2K and associated libraries
# ------------------------------------------------------------------------
echo "Compiling with $NPROCS processes."
echo "Compiling with $(get_nprocs) processes."
# set environment for compiling compilers and tools required for CP2K
# and libraries it depends on

View file

@ -22,9 +22,6 @@ SYS_LIB_PATH=${SYS_LIB_PATHS:-'/usr/local/lib64:/usr/local/lib:/usr/lib64:/usr/l
INCLUDE_PATHS=${INCLUDE_PATHS:-"CPATH SYS_INCLUDE_PATH"}
LIB_PATHS=${LIB_PATHS:-'LD_LIBRARY_PATH LIBRARY_PATH LD_RUN_PATH SYS_LIB_PATH'}
# number of processors
NPROCS=${NPROCS:-1}
# mode flags
ENABLE_OMP=${ENABLE_OMP:-"__TRUE__"}
ENABLE_TSAN=${ENABLE_TSAN:-"__FALSE__"}

View file

@ -236,7 +236,7 @@ compiled with it you will first need to execute at the prompt:
source ${SETUPFILE}
To build CP2K you should change directory:
cd cp2k/
make -j ${NPROCS} ARCH=local VERSION="${arch_vers}"
make -j $(get_nprocs) ARCH=local VERSION="${arch_vers}"
arch files for GPU enabled CUDA versions are named "local_cuda.*"
arch files for valgrind versions are named "local_valgrind.*"

View file

@ -41,8 +41,8 @@ case "$with_cmake" in
cp CMakeLists.txt CMakeLists.txt.orig
sed -i 's/option(BUILD_CursesDialog "Build the CMake Curses Dialog ccmake" ON)/option(BUILD_CursesDialog "Build the CMake Curses Dialog ccmake" OFF)/g' CMakeLists.txt
fi
./bootstrap --prefix="${pkg_install_dir}" --parallel="${NPROCS}" -- -DCMAKE_USE_OPENSSL=OFF > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
./bootstrap --prefix="${pkg_install_dir}" --parallel="$(get_nprocs)" -- -DCMAKE_USE_OPENSSL=OFF > configure.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make install > install.log 2>&1
cd ..
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage0/$(basename ${SCRIPT_NAME})"

View file

@ -62,11 +62,11 @@ case "$with_gcc" in
--enable-lto \
--enable-plugins \
> configure.log 2>&1
make -j $NPROCS \
make -j $(get_nprocs) \
CFLAGS="-fPIC $CFLAGS" \
CXXFLAGS="-fPIC $CXXFLAGS" \
> make.log 2>&1
make -j $NPROCS install > install.log 2>&1
make -j $(get_nprocs) install > install.log 2>&1
# thread sanitizer
if [ $ENABLE_TSAN = "__TRUE__" ]; then
# now the tricky bit... we need to recompile in particular
@ -78,7 +78,7 @@ case "$with_gcc" in
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55374#c10
cd x86_64*/libgfortran
make clean > clean.log 2>&1
make -j $NPROCS \
make -j $(get_nprocs) \
CFLAGS="-std=gnu99 -g -O2 -fsanitize=thread " \
FCFLAGS="-g -O2 -fsanitize=thread" \
CXXFLAGS="-std=gnu99 -g -O2 -fsanitize=thread " \
@ -87,7 +87,7 @@ case "$with_gcc" in
make install > install.log 2>&1
cd ../libgomp
make clean > clean.log 2>&1
make -j $NPROCS \
make -j $(get_nprocs) \
CFLAGS="-std=gnu99 -g -O2 -fsanitize=thread " \
FCFLAGS="-g -O2 -fsanitize=thread" \
CXXFLAGS="-std=gnu99 -g -O2 -fsanitize=thread " \

View file

@ -46,7 +46,7 @@ case "$with_mpich" in
# https://github.com/pmodels/mpich/issues/4300
("${FC}" --version | grep -Eq 'GNU.+\s10\.') && compat_flag="-fallow-argument-mismatch" || compat_flag=""
./configure --prefix="${pkg_install_dir}" --libdir="${pkg_install_dir}/lib" MPICC="" FFLAGS="${FCFLAGS} ${compat_flag}" FCFLAGS="${FCFLAGS} ${compat_flag}" --without-x --enable-gl=no > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make install > install.log 2>&1
cd ..
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage1/$(basename ${SCRIPT_NAME})"

View file

@ -51,8 +51,8 @@ case "$with_openmpi" in
CFLAGS="${CFLAGS} -fgnu89-inline"
fi
./configure --prefix=${pkg_install_dir} --libdir="${pkg_install_dir}/lib" --enable-mpi1-compatibility CFLAGS="${CFLAGS}" > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $NPROCS install > install.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make -j $(get_nprocs) install > install.log 2>&1
cd ..
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage1/$(basename ${SCRIPT_NAME})"
fi

View file

@ -34,8 +34,8 @@ case "$with_valgrind" in
tar -xjf valgrind-${valgrind_ver}.tar.bz2
cd valgrind-${valgrind_ver}
./configure --prefix="${pkg_install_dir}" --libdir="${pkg_install_dir}/lib" > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $NPROCS install > install.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make -j $(get_nprocs) install > install.log 2>&1
cd ..
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage1/$(basename ${SCRIPT_NAME})"
fi

View file

@ -48,7 +48,7 @@ case "$with_fftw" in
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"
./configure --prefix=${pkg_install_dir} --libdir="${pkg_install_dir}/lib" ${FFTW_FLAGS} > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make install > install.log 2>&1
cd ..
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage2/$(basename ${SCRIPT_NAME})"

View file

@ -48,7 +48,7 @@ case "$with_openblas" in
# wrt NUM_THREADS=64: this is what the most common Linux distros seem to choose atm
# for a good compromise between memory usage and scalability
(
make -j $NPROCS \
make -j $(get_nprocs) \
MAKE_NB_JOBS=0 \
NUM_THREADS=64 \
USE_THREAD=1 \
@ -58,7 +58,7 @@ case "$with_openblas" in
PREFIX="${pkg_install_dir}" \
> make.log 2>&1
) || (
make -j $NPROCS \
make -j $(get_nprocs) \
MAKE_NB_JOBS=0 \
TARGET=NEHALEM \
NUM_THREADS=64 \
@ -69,7 +69,7 @@ case "$with_openblas" in
PREFIX="${pkg_install_dir}" \
> make.nehalem.log 2>&1
)
make -j $NPROCS \
make -j $(get_nprocs) \
MAKE_NB_JOBS=0 \
NUM_THREADS=64 \
USE_THREAD=1 \

View file

@ -58,7 +58,7 @@ LAPACKELIB = liblapacke.a
EOF
# lapack/blas build is *not* parallel safe (updates to the archive race)
# Run first in parallel which will result most likely in an incomplete library
make -j $NPROCS lib blaslib > make.log 2>&1
make -j $(get_nprocs) lib blaslib > make.log 2>&1
# Complete library in non-parallel mode
make -j 1 lib blaslib > make1.log 2>&1
# no make install, so have to do this manually

View file

@ -79,7 +79,7 @@ case "$with_libint" in
--libdir="${pkg_install_dir}/lib" \
> configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make install > install.log 2>&1
cd ..

View file

@ -37,7 +37,7 @@ case "$with_libxc" in
tar -xzf libxc-${libxc_ver}.tar.gz
cd libxc-${libxc_ver}
./configure --prefix="${pkg_install_dir}" --libdir="${pkg_install_dir}/lib" > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make install > install.log 2>&1
cd ..
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage3/$(basename ${SCRIPT_NAME})"

View file

@ -65,8 +65,8 @@ case "$with_cosma" in
;;
esac
make -j $NPROCS > make.log 2>&1
make -j $NPROCS install > install.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make -j $(get_nprocs) install > install.log 2>&1
cd ..
if [ "$ENABLE_CUDA" = "__TRUE__" ]; then
@ -95,7 +95,7 @@ case "$with_cosma" in
-DCOSMA_WITH_APPS=NO .. > cmake.log 2>&1
;;
esac
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
install -d ${pkg_install_dir}/lib/cuda
[ -f libs/grid2grid/src/grid2grid/*.a ] && install -m 644 libs/grid2grid/src/grid2grid/*.a ${pkg_install_dir}/lib/cuda >> install.log 2>&1
[ -f libs/options/*.so ] && install -m 644 libs/options/*.so ${pkg_install_dir}/lib/cuda >> install.log 2>&1

View file

@ -57,7 +57,7 @@ EOF
# stage of building an executable that uses the libxsmm
# library
cd libxsmm-${libxsmm_ver}
make -j $NPROCS \
make -j $(get_nprocs) \
MALLOC=0 \
INTRINSICS=1 \
CXX=$CXX \
@ -65,7 +65,7 @@ EOF
FC=$FC \
PREFIX=${pkg_install_dir} \
> make.log 2>&1
make -j $NPROCS \
make -j $(get_nprocs) \
MALLOC=0 \
INTRINSICS=1 \
CXX=$CXX \

View file

@ -55,7 +55,7 @@ case "$with_scalapack" in
-DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" \
-DCMAKE_INSTALL_LIBDIR="lib" \
-DCMAKE_BUILD_TYPE=Release .. > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make install >> make.log 2>&1
popd > /dev/null

View file

@ -117,7 +117,7 @@ case "$with_elpa" in
LDFLAGS="-Wl,--enable-new-dtags ${MATH_LDFLAGS} ${SCALAPACK_LDFLAGS} ${cray_ldflags}" \
LIBS="${SCALAPACK_LIBS} ${MATH_LIBS}" \
> configure.log 2>&1
make -j $NPROCS ${ELPA_MAKEOPTS} > make.log 2>&1
make -j $(get_nprocs) ${ELPA_MAKEOPTS} > make.log 2>&1
make install > install.log 2>&1
cd ..
done

View file

@ -42,7 +42,7 @@ case "$with_ptscotch" in
-e "s|\(^CCD\).*|\1 = $MPICC|g" \
-e "s|\(^CFLAGS\).*|\1 = $CFLAGS -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Drestrict=__restrict -DIDXSIZE64 ${MPI_CFLAGS}|g" \
> Makefile.inc
make scotch -j $NPROCS > make.log 2>&1
make scotch -j $(get_nprocs) > make.log 2>&1
make ptscotch -j $NROCS > make.log 2>&1
# PT-scotch make install is buggy in that it cannot create
# intermediate directories

View file

@ -44,7 +44,7 @@ case "$with_superlu" in
-DCMAKE_INSTALL_PREFIX=${pkg_install_dir} \
-DCMAKE_INSTALL_LIBDIR=${pkg_install_dir}/lib \
.. > cmake.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make install > install.log 2>&1
cd ..

View file

@ -37,8 +37,8 @@ case "$with_gsl" in
--libdir="${pkg_install_dir}/lib" \
--enable-shared \
--enable-static > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $NPROCS install > install.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make -j $(get_nprocs) install > install.log 2>&1
cd ..
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage6/$(basename ${SCRIPT_NAME})"
fi

View file

@ -54,7 +54,7 @@ case "$with_plumed" in
LIBS="${libs}" \
--prefix=${pkg_install_dir} \
--libdir="${pkg_install_dir}/lib" > configure.log 2>&1
make VERBOSE=1 -j $NPROCS > make.log 2>&1
make VERBOSE=1 -j $(get_nprocs) > make.log 2>&1
make install > install.log 2>&1
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage6/$(basename ${SCRIPT_NAME})"
fi

View file

@ -39,8 +39,8 @@ case "$with_hdf5" in
--libdir="${pkg_install_dir}/lib" \
--enable-shared \
> configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $NPROCS install > install.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make -j $(get_nprocs) install > install.log 2>&1
cd ..
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage7/$(basename ${SCRIPT_NAME})"
fi

View file

@ -81,7 +81,7 @@ case "$with_libvdwxc" in
--with-mpi \
>> configure.log 2>&1
fi
make -j $NPROCS > compile.log 2>&1
make -j $(get_nprocs) > compile.log 2>&1
make install > compile.log 2>&1
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage7/$(basename ${SCRIPT_NAME})"
fi

View file

@ -47,9 +47,9 @@ case "${with_libvori:=__INSTALL__}" in
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE \
.. > cmake.log 2>&1
CMAKE_BUILD_PARALLEL_LEVEL="${NPROCS}" cmake --build . > build.log 2>&1
CMAKE_BUILD_PARALLEL_LEVEL="${NPROCS}" cmake --build . --target test > test.log 2>&1
CMAKE_BUILD_PARALLEL_LEVEL="${NPROCS}" cmake --build . --target install > install.log 2>&1
CMAKE_BUILD_PARALLEL_LEVEL="$(get_nprocs)" cmake --build . > build.log 2>&1
CMAKE_BUILD_PARALLEL_LEVEL="$(get_nprocs)" cmake --build . --target test > test.log 2>&1
CMAKE_BUILD_PARALLEL_LEVEL="$(get_nprocs)" cmake --build . --target install > install.log 2>&1
write_checksums "${install_lock_file}" "${SCRIPT_DIR}/stage7/$(basename "${SCRIPT_NAME}")"
fi

View file

@ -39,7 +39,7 @@ case "$with_spglib" in
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX="${pkg_install_dir}" -DCMAKE_BUILD_TYPE=Release .. > configure.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make install >> make.log 2>&1
mkdir ${pkg_install_dir}/include/spglib
cp ${pkg_install_dir}/include/{,spglib/}spglib.h

View file

@ -138,7 +138,7 @@ case "$with_sirius" in
-DUSE_ELPA=OFF \
${COMPILATION_OPTIONS} .. > compile.log 2>&1
make -j $NPROCS -C src >> compile.log 2>&1
make -j $(get_nprocs) -C src >> compile.log 2>&1
install -d ${pkg_install_dir}/include >> install.log 2>&1
install -d ${pkg_install_dir}/lib >> install.log 2>&1
@ -163,7 +163,7 @@ case "$with_sirius" in
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_CXX_COMPILER="${MPICXX}" \
-DCMAKE_C_COMPILER="${MPICC}" ${COMPILATION_OPTIONS} .. >> compile.log 2>&1
make -j $NPROCS -C src >> compile.log 2>&1
make -j $(get_nprocs) -C src >> compile.log 2>&1
install -d ${pkg_install_dir}/lib/cuda
install -d ${pkg_install_dir}/include/cuda
install -m 644 src/*.a ${pkg_install_dir}/lib/cuda >> install.log 2>&1

View file

@ -45,8 +45,8 @@ case "$with_spfft" in
-DSPFFT_MPI=ON \
-DSPFFT_INSTALL=ON \
.. > cmake.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $NPROCS install > install.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make -j $(get_nprocs) install > install.log 2>&1
cd ..
if [ "$ENABLE_CUDA" = "__TRUE__" ]; then
@ -62,7 +62,7 @@ case "$with_spfft" in
-DSPFFT_INSTALL=ON \
-DSPFFT_GPU_BACKEND=CUDA \
.. > cmake.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
install -d ${pkg_install_dir}/lib/cuda
[ -f src/libspfft.a ] && install -m 644 src/*.a ${pkg_install_dir}/lib/cuda >> install.log 2>&1
[ -f src/libspfft.so ] && install -m 644 src/*.so ${pkg_install_dir}/lib/cuda >> install.log 2>&1

View file

@ -46,8 +46,8 @@ case "$with_spla" in
-DSPLA_INSTALL=ON \
-DSPLA_STATIC=OM \
.. > cmake.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $NPROCS install > install.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
make -j $(get_nprocs) install > install.log 2>&1
cd ..
if [ "$ENABLE_CUDA" = "__TRUE__" ]; then
@ -64,7 +64,7 @@ case "$with_spla" in
-DSPLA_INSTALL=ON \
-DSPLA_GPU_BACKEND=CUDA \
.. > cmake.log 2>&1
make -j $NPROCS > make.log 2>&1
make -j $(get_nprocs) > make.log 2>&1
install -d ${pkg_install_dir}/lib/cuda
[ -f src/libspla.a ] && install -m 644 src/*.a ${pkg_install_dir}/lib/cuda >> install.log 2>&1
[ -f src/libspla.so ] && install -m 644 src/*.so ${pkg_install_dir}/lib/cuda >> install.log 2>&1

View file

@ -135,7 +135,9 @@ reverse() (
# get the number of processes available for compilation
get_nprocs() {
if $(command -v nproc >&- 2>&-); then
if [ -n "${NPROCS_OVERWRITE}" ]; then
echo "${NPROCS_OVERWRITE}"
elif $(command -v nproc >&- 2>&-); then
echo $(nproc --all)
else
echo 1