From 95abcc9171fed5e0a722a7b53bab9bb14eded4d2 Mon Sep 17 00:00:00 2001 From: Philipp Spilger <philipp.spilger@kip.uni-heidelberg.de> Date: Fri, 16 Feb 2024 10:16:56 +0100 Subject: [PATCH] feat: Use --jobs at all parallel invokations Change-Id: I639072b31bd59fe10a7ebb20c1ef7a57ac96cc57 --- lib/yashchiki/commons.sh | 8 ++++---- lib/yashchiki/fetch.sh | 2 +- lib/yashchiki/update_build_cache_in_container.sh | 4 ++-- share/yashchiki/styles/asic/create_recipe.sh | 1 + share/yashchiki/styles/visionary/create_recipe.sh | 3 ++- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/yashchiki/commons.sh b/lib/yashchiki/commons.sh index bb532f3e..5bb6c2a3 100755 --- a/lib/yashchiki/commons.sh +++ b/lib/yashchiki/commons.sh @@ -231,7 +231,7 @@ fi parallel_cmds() { local num_jobs local opts OPTIND OPTARG - num_jobs="$(nproc)" + num_jobs="${YASHCHIKI_JOBS}" while getopts ":j:" opts do case $opt in @@ -417,7 +417,7 @@ get_specfiles() { fi idx=$((idx + 1)) done - ) | parallel -r -j$(nproc) 1>/dev/null + ) | parallel -r -j${YASHCHIKI_JOBS} 1>/dev/null # TODO: DELME for sf in "${specfiles[@]}"; do @@ -483,7 +483,7 @@ _install_from_buildcache() { # get all top-level directories that have to be created so that each tar process only creates its own directory local toplevel_dirs - mapfile -t toplevel_dirs < <(parallel -j "$(nproc)" \ + mapfile -t toplevel_dirs < <(parallel -j "${YASHCHIKI_JOBS}" \ "bash -c 'tar Ptf ${BUILD_CACHE_INSIDE}/{}.tar.gz | head -n 1'" < "${FILE_HASHES_TO_INSTALL_FROM_BUILDCACHE}" \ | xargs -r dirname | sort | uniq ) @@ -492,7 +492,7 @@ _install_from_buildcache() { [ ! -d "${dir}" ] && mkdir -p "${dir}" done - parallel -v -j $(nproc) tar Pxf "${BUILD_CACHE_INSIDE}/{}.tar.gz" \ + parallel -v -j ${YASHCHIKI_JOBS} tar Pxf "${BUILD_CACHE_INSIDE}/{}.tar.gz" \ < "${FILE_HASHES_TO_INSTALL_FROM_BUILDCACHE}" # have spack reindex its install contents to find the new packages diff --git a/lib/yashchiki/fetch.sh b/lib/yashchiki/fetch.sh index 289c9c1f..7a4db2df 100755 --- a/lib/yashchiki/fetch.sh +++ b/lib/yashchiki/fetch.sh @@ -83,7 +83,7 @@ for package in "${packages_to_fetch[@]}"; do echo "Concretizing ${package:0:30} for fetching.." >&2 # pause if we have sufficient concretizing jobs set +x # do not clobber build log so much - while (( $(jobs | wc -l) >= $(nproc) )); do + while (( $(jobs | wc -l) >= ${YASHCHIKI_JOBS} )); do # call jobs because otherwise we will not exit the loop jobs &>/dev/null sleep 1 diff --git a/lib/yashchiki/update_build_cache_in_container.sh b/lib/yashchiki/update_build_cache_in_container.sh index 2371d59f..c16ee96f 100755 --- a/lib/yashchiki/update_build_cache_in_container.sh +++ b/lib/yashchiki/update_build_cache_in_container.sh @@ -86,9 +86,9 @@ fi cd ${MY_SPACK_FOLDER} get_hashes_to_store \ - | parallel -r ${args_progress} -j$(nproc) \ + | parallel -r ${args_progress} -j${YASHCHIKI_JOBS} \ tar Pcfz "${destination_folder}/{}.tar.gz" \"\$\(spack location -i /{}\)\" # verify integrity (of actual files, not possible symlinks) find "${destination_folder}" -type f -name "*.tar.gz" -print0 \ - | parallel -r -0 -j$(nproc) "tar Ptf '{}' 1>/dev/null" + | parallel -r -0 -j${YASHCHIKI_JOBS} "tar Ptf '{}' 1>/dev/null" diff --git a/share/yashchiki/styles/asic/create_recipe.sh b/share/yashchiki/styles/asic/create_recipe.sh index c599df7b..6b218e11 100755 --- a/share/yashchiki/styles/asic/create_recipe.sh +++ b/share/yashchiki/styles/asic/create_recipe.sh @@ -236,6 +236,7 @@ From: ${DOCKER_BASE_IMAGE} export YASHCHIKI_BUILD_SPACK_GCC="${YASHCHIKI_BUILD_SPACK_GCC}" export YASHCHIKI_SPACK_GCC="${YASHCHIKI_SPACK_GCC}" export YASHCHIKI_SPACK_GCC_VERSION="${YASHCHIKI_SPACK_GCC_VERSION}" + export YASHCHIKI_JOBS="${YASHCHIKI_JOBS}" export YASHCHIKI_SPACK_CONFIG="/tmp/spack_config" export CONTAINER_STYLE="${CONTAINER_STYLE}" "${SPACK_INSTALL_SCRIPTS}/complete_spack_install_routine_called_in_post_as_root.sh" diff --git a/share/yashchiki/styles/visionary/create_recipe.sh b/share/yashchiki/styles/visionary/create_recipe.sh index a1bae05e..b6c4353a 100755 --- a/share/yashchiki/styles/visionary/create_recipe.sh +++ b/share/yashchiki/styles/visionary/create_recipe.sh @@ -77,11 +77,12 @@ From: ${DOCKER_BASE_IMAGE} export YASHCHIKI_BUILD_SPACK_GCC="${YASHCHIKI_BUILD_SPACK_GCC}" export YASHCHIKI_SPACK_GCC="${YASHCHIKI_SPACK_GCC}" export YASHCHIKI_SPACK_GCC_VERSION="${YASHCHIKI_SPACK_GCC_VERSION}" + export YASHCHIKI_JOBS="${YASHCHIKI_JOBS}" export YASHCHIKI_SPACK_CONFIG="/tmp/spack_config" export YASHCHIKI_CACHES_ROOT="${YASHCHIKI_CACHES_ROOT}" export CONTAINER_STYLE="${CONTAINER_STYLE}" # Improve efficiency by installing system packages in the background (even - # though we set the number of worker to \$(nproc), often times - e.g. when + # though we set the number of worker to \${YASHCHIKI_JOBS}, often times - e.g. when # concretizing - only one process will be active.) # NOTE: For this to work all spack-related dependencies need to be # specified under "Inlucde:" above. install_system_dependencies.sh should -- GitLab