diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7b41489776..2cfd1b3acf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -34,8 +34,11 @@ variables: # Use the service user workspace. Solves permission issues, stores everything # at the same location whoever triggers a pipeline. # CUSTOM_CI_BUILDS_DIR: "/usr/workspace/rajasa/gitlab-runner" -# Tells Gitlab to recursively update the submodules when cloning the project. - GIT_SUBMODULE_STRATEGY: recursive +# Submodules: We don't need to fetch dependencies handled by Spack. + GIT_SUBMODULE_STRATEGY: normal + GIT_SUBMODULE_DEPTH: 1 + GIT_SUBMODULE_UPDATE_FLAGS: --jobs 3 + GIT_SUBMODULE_PATHS: tpl/desul scripts/radiuss-spack-configs scripts/uberenv ##### PROJECT VARIABLES MP_BRANCH: "develop" diff --git a/.gitlab/custom-jobs-and-variables.yml b/.gitlab/custom-jobs-and-variables.yml index f8e77a42aa..64a1b9ed3a 100644 --- a/.gitlab/custom-jobs-and-variables.yml +++ b/.gitlab/custom-jobs-and-variables.yml @@ -65,7 +65,6 @@ variables: # Configuration shared by build and test jobs specific to this project. # Not all configuration can be shared. Here projects can fine tune the # CI behavior. -# See Umpire for an example (export junit test reports). .custom_job: artifacts: reports: diff --git a/.gitlab/jobs/tioga.yml b/.gitlab/jobs/tioga.yml index dc16ee3292..3f1a35b9e9 100644 --- a/.gitlab/jobs/tioga.yml +++ b/.gitlab/jobs/tioga.yml @@ -37,12 +37,12 @@ cce_17_0_1: SPEC: "${PROJECT_TIOGA_VARIANTS} %cce@=17.0.1 ${PROJECT_TIOGA_DEPS}" extends: .job_on_tioga -rocmcc_6_3_0_hip_desul_atomics: +rocmcc_6_3_1_hip_desul_atomics: variables: - SPEC: "~shared +rocm ~openmp +desul +tests amdgpu_target=gfx90a %rocmcc@=6.3.0 ^hip@6.3.0" + SPEC: "~shared +rocm ~openmp +desul +tests amdgpu_target=gfx90a %rocmcc@=6.3.1 ^hip@6.3.1" extends: .job_on_tioga -rocmcc_6_3_0_hip_openmp: +rocmcc_6_3_1_hip_openmp: variables: - SPEC: "~shared +rocm +openmp +omptask +tests amdgpu_target=gfx90a %rocmcc@=6.3.0 ^hip@6.3.0" + SPEC: "~shared +rocm +openmp +omptask +tests amdgpu_target=gfx90a %rocmcc@=6.3.1 ^hip@6.3.1" extends: .job_on_tioga diff --git a/.uberenv_config.json b/.uberenv_config.json index be03e85915..6f64e983a6 100644 --- a/.uberenv_config.json +++ b/.uberenv_config.json @@ -4,9 +4,8 @@ "package_final_phase" : "initconfig", "package_source_dir" : "../..", "spack_url": "https://github.com/spack/spack.git", -"spack_branch": "develop-2025-02-09", +"spack_commit": "280017a9ba3f6a969743deca0eebc96e7c0e5cfd", "spack_configs_path": "scripts/radiuss-spack-configs", "spack_packages_path": "scripts/radiuss-spack-configs/packages", -"spack_concretizer": "clingo", "spack_setup_clingo": false } diff --git a/scripts/gitlab/build_and_test.sh b/scripts/gitlab/build_and_test.sh index bbf2212d10..608fa6863e 100755 --- a/scripts/gitlab/build_and_test.sh +++ b/scripts/gitlab/build_and_test.sh @@ -33,9 +33,9 @@ push_to_registry=${PUSH_TO_REGISTRY:-true} # REGISTRY_TOKEN allows you to provide your own personal access token to the CI # registry. Be sure to set the token with at least read access to the registry. registry_token=${REGISTRY_TOKEN:-""} -ci_registry_user=${CI_REGISTRY_USER:-"${USER}"} ci_registry_image=${CI_REGISTRY_IMAGE:-"czregistry.llnl.gov:5050/radiuss/raja"} -ci_registry_token=${CI_JOB_TOKEN:-"${registry_token}"} +export ci_registry_user=${CI_REGISTRY_USER:-"${USER}"} +export ci_registry_token=${CI_JOB_TOKEN:-"${registry_token}"} timed_message () { @@ -59,9 +59,7 @@ fi if [[ -n ${module_list} ]] then - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - echo "~~~~~ Modules to load: ${module_list}" - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + timed_message "Modules to load: ${module_list}" module load ${module_list} fi @@ -81,7 +79,7 @@ then prefix="${prefix}-${job_unique_id}" else # We set the prefix in the parent directory so that spack dependencies are not installed inside the source tree. - prefix="$(pwd)/../spack-and-build-root" + prefix="${project_dir}/../spack-and-build-root" fi echo "Creating directory ${prefix}" @@ -126,7 +124,7 @@ then if [[ -n ${ci_registry_token} ]] then timed_message "GitLab registry as Spack Buildcache" - ${spack_cmd} -D ${spack_env_path} mirror add --unsigned --oci-username ${ci_registry_user} --oci-password ${ci_registry_token} gitlab_ci oci://${ci_registry_image} + ${spack_cmd} -D ${spack_env_path} mirror add --unsigned --oci-username-variable ci_registry_user --oci-password-variable ci_registry_token gitlab_ci oci://${ci_registry_image} fi timed_message "Spack build of dependencies" @@ -202,8 +200,18 @@ then mkdir -p ${build_dir} && cd ${build_dir} timed_message "Building RAJA" + # We set the MPI tests command to allow overlapping. + # Shared allocation: Allows build_and_test.sh to run within a sub-allocation (see CI config). + # Use /dev/shm: Prevent MPI tests from running on a node where the build dir doesn't exist. + cmake_options="" + if [[ "${truehostname}" == "ruby" || "${truehostname}" == "poodle" ]] + then + cmake_options="-DBLT_MPI_COMMAND_APPEND:STRING=--overlap" + fi + $cmake_exe \ -C ${hostconfig_path} \ + ${cmake_options} \ -DCMAKE_INSTALL_PREFIX=${install_dir} \ ${project_dir} if ! $cmake_exe --build . -j ${core_counts[$truehostname]} @@ -241,7 +249,7 @@ then timed_message "Preparing tests xml reports for export" tree Testing - xsltproc -o junit.xml ${project_dir}/blt/tests/ctest-to-junit.xsl Testing/*/Test.xml + xsltproc -o junit.xml ${project_dir}/scripts/radiuss-spack-configs/utilities/ctest-to-junit.xsl Testing/*/Test.xml mv junit.xml ${project_dir}/junit.xml if grep -q "Errors while running CTest" ./tests_output.txt diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index 5d16f366c1..7b3c95ac17 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit 5d16f366c1ee1e0db4491f856e82c3c600fef0a1 +Subproject commit 7b3c95ac17b6fb692bc7712da37d7ef0fc33fa45