Skip to content

Commit

Permalink
Merge pull request #469 from LLNL/v2024.xx.y-RC
Browse files Browse the repository at this point in the history
Merge RC branch to main for rv2024.07.0 release
  • Loading branch information
rhornung67 authored Aug 12, 2024
2 parents e5b2102 + 66cbd54 commit 6e81aa5
Show file tree
Hide file tree
Showing 730 changed files with 32,363 additions and 6,311 deletions.
76 changes: 46 additions & 30 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,75 +1,91 @@
###############################################################################
# Copyright (c) 2017-23, Lawrence Livermore National Security, LLC
# Copyright (c) 2017-24, Lawrence Livermore National Security, LLC
# and RAJA Performance Suite project contributors.
# See the RAJAPerf/LICENSE file for details.
#
# SPDX-License-Identifier: (BSD-3-Clause)
###############################################################################

# DESCRIPTION:
###############################################################################
# General GitLab pipelines configurations for supercomputers and Linux clusters
# at Lawrence Livermore National Laboratory (LLNL).
#
# This entire pipeline is LLNL-specific
#
# Important note: This file is a copy of the template provided by
# llnl/radiuss-shared-ci. It should not require any change from the project to
# get started but could feature project-specific stages.
# Important note: This file is a template provided by llnl/radiuss-shared-ci.
# Remains to set variable values, change the reference to the radiuss-shared-ci
# repo, opt-in and out optional features. The project can then extend it with
# additional stages.
#
# Instead, each project should provide:
# - .gitlab/subscribed-pipelines.yml
# In addition, each project should copy over and complete:
# - .gitlab/custom-jobs-and-variables.yml
# - .gitlab/${MACHINE}-build-and-test-extra.yml
# - .gitlab/subscribed-pipelines.yml
#
# The jobs should be specified in a file local to the project,
# - .gitlab/jobs/${CI_MACHINE}.yml
# or generated (see LLNL/Umpire for an example).
###############################################################################

# We define the following GitLab pipeline variables:
variables:
# Required information about GitHub repository
GITHUB_PROJECT_NAME: "RAJAPerf"
GITHUB_PROJECT_ORG: "LLNL"
# Use the umdev service user to run CI. This prevents from running pipelines as
# an actual user.
##### LC GITLAB CONFIGURATION
# Use a LLNL service user to run CI. This prevents from running pipelines as an
# actual user.
LLNL_SERVICE_USER: rajasa
# Use the service user workspace. Solves permission issues, stores everything
# at the same location whoever triggers a pipeline.
# CUSTOM_CI_BUILDS_DIR: ""
# CUSTOM_CI_BUILDS_DIR: "/usr/workspace/rajasa/gitlab-runner"
# Tells Gitlab to recursively update the submodules when cloning the project.
GIT_SUBMODULE_STRATEGY: recursive
# We build the projects in the CI clone directory.
# TODO: add a clean-up mechanism

##### PROJECT VARIABLES
# We build the projects in the CI clone directory (used in
# script/gitlab/build_and_test.sh script).
# TODO: add a clean-up mechanism.
BUILD_ROOT: ${CI_PROJECT_DIR}

##### SHARED_CI CONFIGURATION
# Required information about GitHub repository
GITHUB_PROJECT_NAME: "RAJAPerf"
GITHUB_PROJECT_ORG: "LLNL"
# Set the build-and-test command.
BUILD_AND_TEST_CMD: "./scripts/gitlab/build_and_test.sh"
# Override the list of branch that will skip the "draft PR test".
# Add protected branches here. Defaults to "develop main master".
# ALWAYS_RUN_LIST: "develop main"
JOB_CMD:
value: "./scripts/gitlab/build_and_test.sh"
expand: false
# Override the pattern describing branches that will skip the "draft PR filter
# test". Add protected branches here. See default value in
# preliminary-ignore-draft-pr.yml.
# ALWAYS_RUN_PATTERN: "^develop$|^main$|^v[0-9.]*-RC$"

# We organize the CI on Gitlab in sub-pipelines. Each sub-pipeline corresponds
# to a test phase on a given machine.
# We organize the build-and-test stage with sub-pipelines. Each sub-pipeline
# corresponds to a test batch on a given machine.

# High level stages
stages:
- machine-checks
- prerequisites
- build-and-test

# Template for jobs triggering a build-and-test sub-pipelines:
# Template for jobs triggering a build-and-test sub-pipeline:
.build-and-test:
stage: build-and-test
trigger:
include:
- local: '.gitlab/custom-jobs-and-variables.yml'
- project: 'radiuss/radiuss-shared-ci'
ref: v2023.06.0
file: '${CI_MACHINE}-build-and-test.yml'
- local: '.gitlab/${CI_MACHINE}-build-and-test-extra.yml'
ref: 'v2024.06.0'
file: 'pipelines/${CI_MACHINE}.yml'
- artifact: '${CI_MACHINE}-jobs.yml'
job: 'generate-job-lists'
strategy: depend
forward:
pipeline_variables: true

include:
# checks preliminary to running the actual CI test (optional)
- project: 'lc-templates/id_tokens'
file: 'id_tokens.yml'
# [Optional] checks preliminary to running the actual CI test
#- project: 'radiuss/radiuss-shared-ci'
# ref: v2023.03.1
# file: 'preliminary-ignore-draft-pr.yml'
# ref: 'v2024.06.0'
# file: 'utilities/preliminary-ignore-draft-pr.yml'
# pipelines subscribed by the project
- local: '.gitlab/subscribed-pipelines.yml'
39 changes: 25 additions & 14 deletions .gitlab/custom-jobs-and-variables.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
###############################################################################
# Copyright (c) 2017-23, Lawrence Livermore National Security, LLC
# Copyright (c) 2017-24, Lawrence Livermore National Security, LLC
# and RAJA Performance Suite project contributors.
# See the RAJAPerf/LICENSE file for details.
#
Expand All @@ -15,48 +15,59 @@ variables:

# Ruby
# Arguments for top level allocation
RUBY_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --reservation=ci --qos=ci_ruby --time=45 --nodes=1"
RUBY_SHARED_ALLOC: "--exclusive --reservation=ci --time=40 --nodes=1"
# Arguments for job level allocation
RUBY_BUILD_AND_TEST_JOB_ALLOC: "--reservation=ci --qos=ci_ruby --time=30 --nodes=1"
# Note: We repeat the reservation, necessary when jobs are manually re-triggered.
RUBY_JOB_ALLOC: "--reservation=ci --nodes=1"
# Project specific variants for ruby
PROJECT_RUBY_VARIANTS: "~shared +openmp"
# Project specific deps for ruby
PROJECT_RUBY_DEPS: ""
PROJECT_RUBY_DEPS: "^blt@develop "

# Poodle
# Arguments for top level allocation
POODLE_SHARED_ALLOC: "--exclusive --time=40 --nodes=1"
# Arguments for job level allocation
POODLE_JOB_ALLOC: "--nodes=1"
# Project specific variants for poodle
PROJECT_POODLE_VARIANTS: "~shared +openmp"
# Project specific deps for poodle
PROJECT_POODLE_DEPS: "^blt@develop "

# Corona
# Arguments for top level allocation
CORONA_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --time-limit=60m --nodes=1"
CORONA_SHARED_ALLOC: "--exclusive --time-limit=12m --nodes=1 -o per-resource.count=2"
# Arguments for job level allocation
CORONA_BUILD_AND_TEST_JOB_ALLOC: "--time-limit=30m --nodes=1 --begin-time=+5s"
CORONA_JOB_ALLOC: "--nodes=1 --begin-time=+5s"
# Project specific variants for corona
PROJECT_CORONA_VARIANTS: "~shared ~openmp"
# Project specific deps for corona
PROJECT_CORONA_DEPS: "^blt@develop "

# Tioga
# Arguments for top level allocation
TIOGA_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --time-limit=60m --nodes=1"
TIOGA_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=26m --nodes=1 -o per-resource.count=2"
# Arguments for job level allocation
TIOGA_BUILD_AND_TEST_JOB_ALLOC: "--time-limit=45m --nodes=1 --begin-time=+5s"
# Project specific variants for corona
PROJECT_TIOGA_VARIANTS: "~shared ~openmp"
# Project specific deps for corona
TIOGA_JOB_ALLOC: "--nodes=1 --begin-time=+5s"
# Project specific variants for tioga
PROJECT_TIOGA_VARIANTS: "~shared +openmp"
# Project specific deps for tioga
PROJECT_TIOGA_DEPS: "^blt@develop "

# Lassen and Butte use a different job scheduler (spectrum lsf) that does not
# allow pre-allocation the same way slurm does.
# Arguments for job level allocation
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 30"
LASSEN_JOB_ALLOC: "1 -W 20 -q pci"
# Project specific variants for lassen
PROJECT_LASSEN_VARIANTS: "~shared +openmp cuda_arch=70"
# Project specific deps for lassen
PROJECT_LASSEN_DEPS: ""
PROJECT_LASSEN_DEPS: "^blt@develop "

# 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_build_and_test:
.custom_job:
artifacts:
reports:
junit: junit.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
###############################################################################
# Copyright (c) 2017-23, Lawrence Livermore National Security, LLC
# Copyright (c) 2017-24, Lawrence Livermore National Security, LLC
# and RAJA Performance Suite project contributors.
# See the RAJAPerf/LICENSE file for details.
#
# SPDX-License-Identifier: (BSD-3-Clause)
#############################################################################

# Override reproducer section to define project specific variables.
.corona_reproducer_vars:
script:
- |
echo -e "export MODULE_LIST=\"${MODULE_LIST}\""
echo -e "export SPEC=\"${SPEC//\"/\\\"}\""
########################
# Overridden shared jobs
########################
Expand Down
55 changes: 31 additions & 24 deletions .gitlab/lassen-build-and-test-extra.yml → .gitlab/jobs/lassen.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
###############################################################################
# Copyright (c) 2017-23, Lawrence Livermore National Security, LLC
# Copyright (c) 2017-24, Lawrence Livermore National Security, LLC
# and RAJA Performance Suite project contributors.
# See the RAJAPerf/LICENSE file for details.
#
# SPDX-License-Identifier: (BSD-3-Clause)
##############################################################################

# Override reproducer section to define project specific variables.
.lassen_reproducer_vars:
script:
- |
echo -e "export MODULE_LIST=\"${MODULE_LIST}\""
echo -e "export SPEC=\"${SPEC//\"/\\\"}\""
########################
# Overridden shared jobs
########################
Expand All @@ -16,18 +23,10 @@
# Overriding shared spec: Longer allocation + extra flags
xl_2022_08_19_gcc_8_3_1_cuda_11_2_0:
variables:
SPEC: "${PROJECT_LASSEN_VARIANTS} +cuda cxxflags==\"-qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qpic -qsmp=omp -qsuppress=1500-029 -qsuppress=1500-036\" %[email protected] ^[email protected]+allow-unsupported-compilers ${PROJECT_LASSEN_DEPS}"
SPEC: "${PROJECT_LASSEN_VARIANTS} +cuda cxxflags==\"-qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qpic -qsmp=omp -qsuppress=1500-029 -qsuppress=1500-036\" %xl@=16.1.1.12.gcc.8.3.1 ^[email protected]+allow-unsupported-compilers ${PROJECT_LASSEN_DEPS}"
MODULE_LIST: "cuda/11.2.0"
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 120"
extends: .build_and_test_on_lassen

# Overriding shared spec: Longer allocation + extra flags
xl_2022_08_19_gcc_8_3_1_cuda_11_7_0:
variables:
SPEC: "${PROJECT_LASSEN_VARIANTS} +cuda cxxflags==\"-qthreaded -std=c++14 -O3 -qstrict -qxlcompatmacros -qlanglvl=extended0x -qalias=noansi -qhot -qpic -qsmp=omp -qsuppress=1500-029 -qsuppress=1500-036\" %[email protected] ^[email protected]+allow-unsupported-compilers ${PROJECT_LASSEN_DEPS}"
MODULE_LIST: "cuda/11.7.0"
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 -W 120"
extends: .build_and_test_on_lassen
LASSEN_JOB_ALLOC: "1 -W 60 -q pci"
extends: .job_on_lassen


############
Expand All @@ -37,35 +36,43 @@ xl_2022_08_19_gcc_8_3_1_cuda_11_7_0:
# ${PROJECT_<MACHINE>_DEPS} in the extra jobs. There is no reason not to fully
# describe the spec here.

##########
# CUDA
##########
gcc_8_3_1:
variables:
SPEC: " ~shared +openmp %gcc@=8.3.1 ${PROJECT_LASSEN_DEPS}"
extends: .job_on_lassen

gcc_8_3_1_cuda_11_5_0_ats_disabled:
extends: .build_and_test_on_lassen
extends: .job_on_lassen
variables:
SPEC: " ~shared +openmp +cuda %gcc@=8.3.1 cuda_arch=70 ^[email protected]+allow-unsupported-compilers ${PROJECT_LASSEN_DEPS}"
MODULE_LIST: "cuda/11.5.0"
LASSEN_JOB_ALLOC: "1 --atsdisable -W 30 -q pci"

gcc_8_3_1_cuda_11_5_0_ats_disabled_mpi:
extends: .job_on_lassen
variables:
SPEC: " +openmp +cuda %[email protected] cuda_arch=70 ^[email protected]+allow-unsupported-compilers"
SPEC: " ~shared +openmp +cuda +mpi %gcc@=8.3.1 cuda_arch=70 ^[email protected]+allow-unsupported-compilers ^spectrum-mpi ${PROJECT_LASSEN_DEPS}"
MODULE_LIST: "cuda/11.5.0"
LASSEN_BUILD_AND_TEST_JOB_ALLOC: "1 --atsdisable -W 30"
LASSEN_JOB_ALLOC: "1 --atsdisable -W 30 -q pci"

##########
# OTHERS
##########

clang_13_0_1_libcpp:
variables:
SPEC: " ~shared +openmp %[email protected] cflags==\"-DGTEST_HAS_CXXABI_H_=0\" cxxflags==\"-stdlib=libc++ -DGTEST_HAS_CXXABI_H_=0\""
extends: .build_and_test_on_lassen
SPEC: " ~shared +openmp %clang@=13.0.1 cflags==\"-DGTEST_HAS_CXXABI_H_=0\" cxxflags==\"-stdlib=libc++ -DGTEST_HAS_CXXABI_H_=0\" ${PROJECT_LASSEN_DEPS}"
extends: .job_on_lassen

#clang_14_0_5_asan:
# variables:
# SPEC: " ~shared +openmp %[email protected] cxxflags==\"-fsanitize=address\""
# SPEC: " ~shared +openmp %clang@=14.0.5 cxxflags==\"-fsanitize=address\" ${PROJECT_LASSEN_DEPS}"
# ASAN_OPTIONS: "detect_leaks=1"
# LSAN_OPTIONS: "suppressions=${CI_PROJECT_DIR}/tpl/RAJA/suppressions.asan"
# extends: .build_and_test_on_lassen
# extends: .job_on_lassen

# Activated in RAJA, but we don't use desul atomics here
#gcc_8_3_1_cuda_10_1_168_desul_atomics:
# variables:
# SPEC: "+openmp +cuda +desul %[email protected] cuda_arch=70 ^[email protected].168"
# extends: .build_and_test_on_lassen
# SPEC: "+openmp +cuda +desul %gcc@=8.3.1 cuda_arch=70 cuda_arch=70 ^[email protected].243+allow-unsupported-compilers ${PROJECT_LASSEN_DEPS}"
# extends: .job_on_lassen
55 changes: 55 additions & 0 deletions .gitlab/jobs/poodle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
##############################################################################
# Copyright (c) 2017-24, Lawrence Livermore National Security, LLC
# and RAJA Performance Suite project contributors.
# See the RAJAPerf/LICENSE file for details.
#
# SPDX-License-Identifier: (BSD-3-Clause)
##############################################################################

# Override reproducer section to define projet specific variables.
.poodle_reproducer_vars:
script:
- |
echo -e "export MODULE_LIST=\"${MODULE_LIST}\""
echo -e "export SPEC=\"${SPEC//\"/\\\"}\""
########################
# Overridden shared jobs
########################
# We duplicate the shared jobs description and add necessary changes for RAJA.
# We keep ${PROJECT_<MACHINE>_VARIANTS} and ${PROJECT_<MACHINE>_DEPS} So that
# the comparison with the original job is easier.

clang_14_0_6:
variables:
SPEC: "${PROJECT_POODLE_VARIANTS} +omptask %clang@=14.0.6 ${PROJECT_POODLE_DEPS}"
extends: .job_on_poodle

gcc_10_3_1:
variables:
SPEC: "${PROJECT_POODLE_VARIANTS} +omptask %gcc@=10.3.1 ${PROJECT_POODLE_DEPS}"
extends: .job_on_poodle

intel_19_1_2_gcc_10_3_1:
variables:
SPEC: "${PROJECT_POODLE_VARIANTS} %intel@=19.1.2.gcc.10.3.1 ${PROJECT_POODLE_DEPS}"
extends: .job_on_poodle

intel_2022_1_0:
variables:
SPEC: "${PROJECT_POODLE_VARIANTS} %intel@=2022.1.0 ${PROJECT_POODLE_DEPS}"
allow_failure: true
extends: .job_on_poodle

############
# Extra jobs
############
# We do not recommend using ${PROJECT_<MACHINE>_VARIANTS} and
# ${PROJECT_<MACHINE>_DEPS} in the extra jobs. There is no reason not to fully
# describe the spec here.

intel_2022_1_0_mpi:
variables:
SPEC: "~shared +openmp +mpi %intel@=2022.1.0 ^mvapich2 ${PROJECT_POODLE_DEPS}"
allow_failure: true
extends: .job_on_poodle
Loading

0 comments on commit 6e81aa5

Please sign in to comment.