From ed19b8d9e3ba009db1eb797e10846ccef66b86c3 Mon Sep 17 00:00:00 2001 From: Zane Fink Date: Thu, 8 Oct 2026 13:30:23 -0700 Subject: [PATCH] ci: create conda envs by prefix so jobs don't share a user's envs_dirs --- scripts/gitlab/ci-build-test.sh | 14 ++++++++------ scripts/gitlab/ci-run-benchmarks.sh | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/scripts/gitlab/ci-build-test.sh b/scripts/gitlab/ci-build-test.sh index 931ba610..6b8e9e00 100755 --- a/scripts/gitlab/ci-build-test.sh +++ b/scripts/gitlab/ci-build-test.sh @@ -34,6 +34,9 @@ install_miniforge() { bash "${miniforge_dir}/miniforge.sh" -b -u -p "${miniforge_dir}" rm "${miniforge_dir}/miniforge.sh" source "${miniforge_dir}/etc/profile.d/conda.sh" + # Create the env by prefix: a named env follows the user's condarc envs_dirs, + # which concurrent jobs then share and clobber. + CONDA_ENV_DIR="${miniforge_dir}/envs/proteus" } install_coverage_tools() { @@ -48,15 +51,14 @@ if [ "${CI_MACHINE}" == "matrix" ]; then echo "CUDA_VISIBLE_DEVICES=${CUDA_VISIBLE_DEVICES:-} SLURM_STEP_GPUS=${SLURM_STEP_GPUS:-}" # Install Clang/LLVM through conda. - MINIFORGE_DIR=miniforge3 - install_miniforge "${MINIFORGE_DIR}" + install_miniforge "${WORKDIR}/miniforge3" # Use an older version of gcc to avoid issues with detecting Clang as the CUDA # compiler. - conda create -y -q -n proteus --override-channels -c conda-forge \ + conda create -y -q -p "${CONDA_ENV_DIR}" --override-channels -c conda-forge \ python=${PYTHON_VERSION} clang=${PROTEUS_CI_LLVM_VERSION} clangxx=${PROTEUS_CI_LLVM_VERSION} \ pip pybind11 clangdev=${PROTEUS_CI_LLVM_VERSION} llvmdev=${PROTEUS_CI_LLVM_VERSION} \ lit=${PROTEUS_CI_LLVM_VERSION} mlir=${PROTEUS_CI_LLVM_VERSION} gcc=12 gxx=12 - conda activate proteus + conda activate "${CONDA_ENV_DIR}" LLVM_INSTALL_DIR=$(llvm-config --prefix) CMAKE_OPTIONS_MACHINE=" -DCMAKE_PREFIX_PATH=$CONDA_PREFIX;$CONDA_PREFIX/lib/cmake" @@ -78,9 +80,9 @@ elif [ "${CI_MACHINE}" == "tioga" ] || [ "${CI_MACHINE}" == "tuolumne" ]; then LLVM_INSTALL_DIR=${ROCM_PATH}/llvm install_miniforge "${WORKDIR}/miniforge3" - conda create -y -q -n proteus --override-channels -c conda-forge \ + conda create -y -q -p "${CONDA_ENV_DIR}" --override-channels -c conda-forge \ python=${PYTHON_VERSION} pip pybind11 - conda activate proteus + conda activate "${CONDA_ENV_DIR}" CMAKE_OPTIONS_MACHINE=" -DCMAKE_PREFIX_PATH=$CONDA_PREFIX;$CONDA_PREFIX/lib/cmake" CMAKE_OPTIONS_MACHINE+=" -DPROTEUS_ENABLE_HIP=on" diff --git a/scripts/gitlab/ci-run-benchmarks.sh b/scripts/gitlab/ci-run-benchmarks.sh index e39f8ac5..83e7f2c3 100755 --- a/scripts/gitlab/ci-run-benchmarks.sh +++ b/scripts/gitlab/ci-run-benchmarks.sh @@ -49,9 +49,9 @@ wget -q --tries=5 --retry-connrefused --wait=5 https://github.com/conda-forge/mi bash ${MINIFORGE_DIR}/miniforge.sh -b -u -p ${MINIFORGE_DIR} rm ${MINIFORGE_DIR}/miniforge.sh source ${MINIFORGE_DIR}/bin/activate -conda create -y -q -n proteus --override-channels -c conda-forge \ +conda create -y -q -p ${MINIFORGE_DIR}/envs/proteus --override-channels -c conda-forge \ python=${PYTHON_VERSION} pandas==2.2.3 matplotlib==3.10.0 -conda activate proteus +conda activate ${MINIFORGE_DIR}/envs/proteus if [ "${CI_MACHINE}" == "matrix" ]; then if [ "${BENCHMARKS_TOML}" == "rajaperf.toml" ]; then