Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compiler wrappers + update packages + use spack environments #520

Merged
merged 39 commits into from
Apr 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
c733096
Update Shared CI and Spack Configs to add poodle support
adrienbernede Nov 6, 2023
d63b88a
Use dedicated CI reservation, reduce allocated time, improve script t…
adrienbernede Nov 7, 2023
b78cc8b
Allow jobs to run concurrently on ruby
adrienbernede Nov 7, 2023
eb0e450
Only one node available at a time in pdebug
adrienbernede Nov 7, 2023
20d95e7
Update RSC to main
adrienbernede Nov 14, 2023
b20c866
Now with fixed MPI versions
adrienbernede Nov 14, 2023
a70f576
Allow controlled overlapping in flux allocations
adrienbernede Nov 23, 2023
958c716
Move to RADIUSS Shared CI 2023.12.0 release branch
adrienbernede Dec 11, 2023
7ef71ba
Fix script name
adrienbernede Dec 11, 2023
cb5db4a
From RSC : define adiak_DIR for CMake to find it
adrienbernede Dec 11, 2023
a8b2ab1
Set poodle build parallelism, remove time limit in sub jobs, generate…
adrienbernede Jan 8, 2024
8fea00f
Update build and test script with other projects
adrienbernede Jan 8, 2024
15588b5
Fix junit generate
adrienbernede Jan 8, 2024
be7a99e
A shot in the dark
adrienbernede Jan 8, 2024
60188ed
Deactivate failing job to investigate other flux watch failure
adrienbernede Jan 8, 2024
c21e982
Merge branch 'master' into woptim/shared-ci-2023-12-0
adrienbernede Jan 22, 2024
8f37a37
Update RSC with rocm 5.7.1 (add compilers), add CI queue on lassen, u…
adrienbernede Jan 22, 2024
b4275bf
Deactivate PAPI service on poodle
adrienbernede Feb 1, 2024
7573498
Deactivate PAPI service in custom poodle job as well
adrienbernede Feb 1, 2024
5191e6f
Merge branch 'master' into woptim/shared-ci-2023-12-0
adrienbernede Feb 1, 2024
dd64f7f
Merge branch 'master' into woptim/shared-ci-2023-12-0
adrienbernede Mar 25, 2024
08c740a
From RSC: update lassen wrappers, update packages from spack
adrienbernede Mar 25, 2024
bc73ad0
Update Spack to match RSC requirements
adrienbernede Mar 25, 2024
d082bb8
From RSC: Fix: enforce cuda version with module load
adrienbernede Mar 26, 2024
8f431de
Update radiuss-shared-ci, fix reproducer
adrienbernede Mar 26, 2024
93975eb
From RSC: Update BLT requirement, change RAJA default variants, Remov…
adrienbernede Mar 27, 2024
e8c12f1
From RSC: Restore basic MPI support in RAJAPerf
adrienbernede Mar 28, 2024
9ec4f57
From RSC: RAJAPerf, Umpire, Caliper MPI handling like Axom
adrienbernede Mar 28, 2024
7b7f5dd
From RSC: Fix missing import
adrienbernede Mar 28, 2024
fa39594
Move to Environments in RSC
adrienbernede Mar 28, 2024
a3447a6
Disable MPI tests on tioga
adrienbernede Apr 9, 2024
0be3662
From RSC: add CARE
adrienbernede Apr 9, 2024
2a2a467
From RSC: Fix merge with CARE package
adrienbernede Apr 11, 2024
cd9c0ff
Merge branch 'master' into woptim/spack-envs
adrienbernede Apr 12, 2024
f50a17b
Point at RADIUSS Spack Configs @ main
adrienbernede Apr 15, 2024
b32de78
Use new pci queue on tioga
adrienbernede Apr 16, 2024
7962149
Merge branch 'master' into woptim/shared-ci-2023-12-0
adrienbernede Apr 17, 2024
5ca9f86
Apply changes required by LC (token handling)
adrienbernede Apr 17, 2024
7917e50
Allow failure for XL job on Lassen
adrienbernede Apr 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
# We define the following GitLab pipeline variables:
variables:
##### LC GITLAB CONFIGURATION
# Use the umdev LLNL service user to run CI. This prevents from running
# pipelines as an actual user.
# Use an LLNL service user to run CI. This prevents from running pipelines as
# an actual user.
LLNL_SERVICE_USER: ""
# Use the service user workspace. Solves permission issues, stores everything
# at the same location whoever triggers a pipeline.
Expand All @@ -38,8 +38,8 @@ variables:
GIT_SUBMODULE_STRATEGY: recursive

##### PROJECT VARIABLES
# We build the projects in the CI clone directory.
# Used in script/gitlab/build_and_test.sh script.
# 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}

Expand All @@ -48,7 +48,11 @@ variables:
GITHUB_PROJECT_NAME: "Caliper"
GITHUB_PROJECT_ORG: "LLNL"
# Set the build-and-test command.
JOB_CMD: "./scripts/gitlab/build-and-test.sh"
# Nested variables are allowed and useful to customize the job command. We
# prevent variable expansion so that you can define them at job level.
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.
Expand All @@ -69,7 +73,7 @@ stages:
include:
- local: '.gitlab/custom-jobs-and-variables.yml'
- project: 'radiuss/radiuss-shared-ci'
ref: 'v2023.09.0'
ref: 'v2024.04.0'
file: 'pipelines/${CI_MACHINE}.yml'
- artifact: '${CI_MACHINE}-jobs.yml'
job: 'generate-job-lists'
Expand All @@ -78,9 +82,11 @@ stages:
pipeline_variables: true

include:
- 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.09.0'
ref: 'v2024.04.0'
file: 'utilities/preliminary-ignore-draft-pr.yml'
# pipelines subscribed by the project
- local: '.gitlab/subscribed-pipelines.yml'
35 changes: 23 additions & 12 deletions .gitlab/custom-jobs-and-variables.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,38 +14,48 @@ variables:

# Ruby
# Arguments for top level allocation
RUBY_SHARED_ALLOC: "--exclusive --partition=pdebug --time=30 --nodes=1"
RUBY_SHARED_ALLOC: "--exclusive --reservation=ci --time=5 --nodes=2"
# Arguments for job level allocation
RUBY_JOB_ALLOC: "--overlap --time=20 --nodes=1"
RUBY_JOB_ALLOC: "--overlap --reservation=ci --nodes=1"
# Project specific variants for ruby
PROJECT_RUBY_VARIANTS: " +tests"
PROJECT_RUBY_VARIANTS: "+tests"
# Project specific deps for ruby
PROJECT_RUBY_DEPS: ""

# Poodle
# Arguments for top level allocation
POODLE_SHARED_ALLOC: "--exclusive --partition=pdebug --time=10 --nodes=1"
# Arguments for job level allocation
POODLE_JOB_ALLOC: "--overlap --nodes=1"
# Project specific variants for poodle
PROJECT_POODLE_VARIANTS: "+tests ~papi"
# Project specific deps for poodle
PROJECT_POODLE_DEPS: ""

# Corona
# Arguments for top level allocation
CORONA_SHARED_ALLOC: "--exclusive --time-limit=15m --nodes=1"
CORONA_SHARED_ALLOC: "--exclusive --time-limit=8m --nodes=1 -o per-resource.count=2"
# Arguments for job level allocation
CORONA_JOB_ALLOC: "--time-limit=10m --nodes=1 --begin-time=+5s"
CORONA_JOB_ALLOC: "--nodes=1 --begin-time=+5s"
# Project specific variants for corona
PROJECT_CORONA_VARIANTS: " +tests"
PROJECT_CORONA_VARIANTS: "+tests"
# Project specific deps for corona
PROJECT_CORONA_DEPS: ""

# Tioga
# Arguments for top level allocation
TIOGA_SHARED_ALLOC: "--exclusive --time-limit=20m --nodes=1"
TIOGA_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=15m --nodes=1 -o per-resource.count=2"
# Arguments for job level allocation
TIOGA_JOB_ALLOC: "--time-limit=10m --nodes=1 --begin-time=+5s"
TIOGA_JOB_ALLOC: "--nodes=1 --begin-time=+5s"
# Project specific variants for tioga
PROJECT_TIOGA_VARIANTS: " +tests"
PROJECT_TIOGA_VARIANTS: "+tests"
# Project specific deps for tioga
PROJECT_TIOGA_DEPS: ""

# 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_JOB_ALLOC: "1 -W 10"
LASSEN_JOB_ALLOC: "1 -W 10 -q pci"
# Project specific variants for lassen
PROJECT_LASSEN_VARIANTS: " +tests"
# Project specific deps for lassen
Expand All @@ -56,5 +66,6 @@ variables:
# CI behavior.
# See Umpire for an example (export junit test reports).
.custom_job:
variables:
JOB_TEMPLATE_CANNOT_BE_EMPTY: "True"
artifacts:
reports:
junit: junit.xml
9 changes: 8 additions & 1 deletion .gitlab/jobs/corona.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
##############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
##############################################################################

# Override reproducer section to define project specific variables.
.corona_reproducer_vars:
script:
- |
echo -e "export MODULE_LIST=\"${MODULE_LIST}\""
echo -e "export SPEC=\"${SPEC//\"/\\\"}\""

# With GitLab CI, included files cannot be empty.
variables:
INCLUDED_FILE_CANNOT_BE_EMPTY: "True"
Expand Down
32 changes: 30 additions & 2 deletions .gitlab/jobs/lassen.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,43 @@
##############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
##############################################################################

# Override reproducer section to define project specific variables.
.lassen_reproducer_vars:
script:
- |
echo -e "export MODULE_LIST=\"${MODULE_LIST}\""
echo -e "export SPEC=\"${SPEC//\"/\\\"}\""

# With GitLab CI, included files cannot be empty.
variables:
INCLUDED_FILE_CANNOT_BE_EMPTY: "True"

## Template for extra jobs defined by the project.
########################
# 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.

# Allow failure due to weird error only with XL on Lassen. Passes in debug mode.
xl_2022_08_19_gcc_8_3_1_cuda_11_2_0:
variables:
SPEC: "${PROJECT_LASSEN_VARIANTS} +cuda %xl@=16.1.1.12.gcc.8.3.1 ^[email protected]+allow-unsupported-compilers ${PROJECT_LASSEN_DEPS}"
MODULE_LIST: "cuda/11.2.0"
extends: .job_on_lassen
allow_failure: true

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

master:
variables:
SPEC: " +tests"
Expand Down
23 changes: 23 additions & 0 deletions .gitlab/jobs/poodle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
##############################################################################
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
##############################################################################

# Override reproducer section to define project specific variables.
.poodle_reproducer_vars:
script:
- |
echo -e "export MODULE_LIST=\"${MODULE_LIST}\""
echo -e "export SPEC=\"${SPEC//\"/\\\"}\""

# With GitLab CI, included files cannot be empty.
variables:
INCLUDED_FILE_CANNOT_BE_EMPTY: "True"

## Template for extra jobs defined by the project.
master:
variables:
SPEC: " +tests ~papi"
extends: .job_on_poodle
9 changes: 8 additions & 1 deletion .gitlab/jobs/ruby.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
##############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
##############################################################################

# Override reproducer section to define project specific variables.
.ruby_reproducer_vars:
script:
- |
echo -e "export MODULE_LIST=\"${MODULE_LIST}\""
echo -e "export SPEC=\"${SPEC//\"/\\\"}\""

# With GitLab CI, included files cannot be empty.
variables:
INCLUDED_FILE_CANNOT_BE_EMPTY: "True"
Expand Down
17 changes: 15 additions & 2 deletions .gitlab/jobs/tioga.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
##############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# Copyright (c) 2022-23, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
##############################################################################

# Override reproducer section to define project specific variables.
.tioga_reproducer_vars:
script:
- |
echo -e "export MODULE_LIST=\"${MODULE_LIST}\""
echo -e "export SPEC=\"${SPEC//\"/\\\"}\""

# With GitLab CI, included files cannot be empty.
variables:
INCLUDED_FILE_CANNOT_BE_EMPTY: "True"
Expand All @@ -18,5 +25,11 @@ variables:

master:
variables:
SPEC: " +tests %[email protected]"
SPEC: " +tests %[email protected]"
extends: .job_on_tioga

rocmcc_5_7_1_hip:
variables:
ON_TIOGA: "OFF"
SPEC: "${PROJECT_TIOGA_VARIANTS} +rocm amdgpu_target=gfx90a %[email protected] ^[email protected] ${PROJECT_TIOGA_DEPS}"
extends: .job_on_tioga
14 changes: 14 additions & 0 deletions .gitlab/subscribed-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,14 @@ generate-job-lists:
LOCAL_JOBS_PATH: ".gitlab/jobs"
script:
- cat ${RADIUSS_JOBS_PATH}/ruby.yml ${LOCAL_JOBS_PATH}/ruby.yml > ruby-jobs.yml
- cat ${RADIUSS_JOBS_PATH}/poodle.yml ${LOCAL_JOBS_PATH}/poodle.yml > poodle-jobs.yml
- cat ${RADIUSS_JOBS_PATH}/lassen.yml ${LOCAL_JOBS_PATH}/lassen.yml > lassen-jobs.yml
- cat ${RADIUSS_JOBS_PATH}/corona.yml ${LOCAL_JOBS_PATH}/corona.yml > corona-jobs.yml
- cat ${RADIUSS_JOBS_PATH}/tioga.yml ${LOCAL_JOBS_PATH}/tioga.yml > tioga-jobs.yml
artifacts:
paths:
- ruby-jobs.yml
- poodle-jobs.yml
- lassen-jobs.yml
- corona-jobs.yml
- tioga-jobs.yml
Expand All @@ -60,6 +62,18 @@ ruby-build-and-test:
needs: [ruby-up-check, generate-job-lists]
extends: [.build-and-test]

# POODLE
poodle-up-check:
variables:
CI_MACHINE: "poodle"
extends: [.machine-check]

poodle-build-and-test:
variables:
CI_MACHINE: "poodle"
needs: [poodle-up-check, generate-job-lists]
extends: [.build-and-test]

# Quartz it very similar to ruby, let’s deactivate it for now
## QUARTZ
#quartz-up-check:
Expand Down
2 changes: 1 addition & 1 deletion .uberenv_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"package_source_dir" : "../..",
"package_final_phase" : "initconfig",
"spack_url": "https://github.com/spack/spack.git",
"spack_branch": "v0.20.1",
"spack_branch": "develop-2024-02-18",
"spack_activate" : {},
"spack_configs_path": "scripts/radiuss-spack-configs",
"spack_packages_path": "scripts/radiuss-spack-configs/packages",
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright (c) 2015-2020, Lawrence Livermore National Security, LLC.
Copyright (c) 2015-2023, Lawrence Livermore National Security, LLC.
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
62 changes: 62 additions & 0 deletions scripts/ctest-to-junit.xsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Originated from https://github.com/rpavlik/jenkins-ctest-plugin
MIT License added to top of this file from repo's LICENSE file
-->

<!--
Copyright (c) 2010 VersionOne, Inc.
Copyright (c) 2011, 2014 Ryan Pavlik <[email protected].

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<testsuites>
<xsl:variable name="buildName" select="//Site/@BuildName"/>
<xsl:variable name="numberOfTests" select="count(//Site/Testing/Test)"/>
<xsl:variable name="numberOfFailures" select="count(//Site/Testing/Test[@Status!='passed'])" />
<testsuite name="CTest"
tests="{$numberOfTests}" time="0"
failures="{$numberOfFailures}" errors="0"
skipped="0">
<xsl:for-each select="//Site/Testing/Test">
<xsl:variable name="testName" select="translate(Name, '-', '_')"/>
<xsl:variable name="duration" select="Results/NamedMeasurement[@name='Execution Time']/Value"/>
<xsl:variable name="status" select="@Status"/>
<xsl:variable name="output" select="Results/Measurement/Value"/>
<xsl:variable name="className" select="translate(Path, '/.', '.')"/>
<testcase classname="projectroot{$className}"
name="{$testName}"
time="{$duration}">
<xsl:if test="@Status!='passed'">
<failure>
<xsl:value-of select="$output" />
</failure>
</xsl:if>
<system-out>
<xsl:value-of select="$output" />
</system-out>
</testcase>
</xsl:for-each>
</testsuite>
</testsuites>
</xsl:template>
</xsl:stylesheet>
Loading
Loading