Files

33 lines
1.1 KiB
Bash

setupThreadLimit() {
# Limit number of threads used during checks. Default is "all cores".
# Using all cores causes high load on builders if checks are executed with NIX_BUILD_CORE parallelism.
# This gets even worse if multiple builds are scheduled on the same machine, potentially growing O(n^3) without explicit core limits.
# global value to override all of these at once
NIX_CHECK_PHASE_DEFAULT_NUM_THREADS="${NIX_CHECK_PHASE_DEFAULT_NUM_THREADS:-1}"
thread_vars=(
OMP_NUM_THREADS
OPENBLAS_NUM_THREADS
MKL_NUM_THREADS
BLIS_NUM_THREADS
VECLIB_MAXIMUM_THREADS
NUMBA_NUM_THREADS
NUMEXPR_NUM_THREADS
)
echo "setting known thread variables to default: $NIX_CHECK_PHASE_DEFAULT_NUM_THREADS"
for var in "${thread_vars[@]}"; do
export "$var=${!var:-$NIX_CHECK_PHASE_DEFAULT_NUM_THREADS}"
printf " %s=%s" "$var" "${!var}"
done
printf "\n"
}
if [[ -z "${dontLimitCheckPhaseThreads-}" ]]; then
echo "Using checkPhaseThreadLimitHook"
preCheckHooks+=('setupThreadLimit')
preInstallCheckHooks+=('setupThreadLimit')
fi