Skip to content

Commit

Permalink
V2024.02.0 RC (#252)
Browse files Browse the repository at this point in the history
* Depend on develop version of TPLs

* Tweak version constraints

* Update Umpire package

* Fix syntax error in Umpire package

* Update packages for CHAI and Umpire

* Depend on newer camp

* Update versions for RAJA and Umpire

* Fixes for libcpp builds

* Add SLURM_OVERLAP variable

* Add greater control for when CHAI is a submodule

* Fix hip build with resource manager disabled

* Depend on camp@main

* Missed one reference to camp@master

* Bug fixes for HIP and managed_ptr

* Clean up managed_ptr.hpp

* Fix host build warning

* Customize block size for HIP build

* Add a managed_ptr example

* Fix HIP kernel launches

* Add reproducer for HIP managed_ptr errors

* Clean up managed_ptr reproducer

* Add a simpler reproducer

* Add simplest reproducer

* Fix macro

* Fix mutex lock in evict() that overlaps with lock in free()

* initial changes to add CHAI_ cmake prefix

* fixing cmake option command syntax

* trying to fix azure pipeline image and raja plugin flag

* make edits to azure pipeline file

* Switching from quartz to ruby in gitlab CI

* Updating umpire camp dependency

* Release v2022.03.0 (#208)

* Update Spack packages for CI (#210)

* Add CHAI + RAJA launch integration test. (#219)

* Release v2022.10.0 (#217)

* Make operator overloads bind in more cases (#222)

* MigrateInner on CHAI Copyable for PINNED / UM (#223)

* Use shared CI (#213)

* Deprecate API for synchronization after device kernels (#228)

* setExecutionSpace thread safety(#230)


Co-authored-by: Neela Kausik <[email protected]>

* Release v2023.06.0 (#232)

* [Woptim] Update shared ci to v2023.08.0 (#236)

* Remove explicit device synchronization (#235)

* Update radiuss-shared-ci to new release (with radiuss-spack-configs) (#238)

* Use free instead of realloc to zero size (#239)

* [Woptim] shared ci 2023.12.0 (#241)

* Update Shared CI and Spack Configs to add poodle

* Activate poodle subpipeline

* Reduce allocated time

* Fine tune allocation duration

* Fine tune allocation duration in CI

* Comment alloc command choices

* Update RSC to main

* Fix missing poodle alloc info, update to radiuss Shared CI 2023.12.0, sync build_and_test script with RAJA

* Update radiuss-spack-configs

* CI updates (#244)

* Updates radiuss-spack-configs to commit a37c3e1
* Changes to match the CI of other projects

* Support for a single memory space writeable by both GPU and CPU (#242)

* Support for a single memory space writeable by both GPU and CPU. Provides appropriate synchronizations when needed instead of performing any memory copies.

---------

Co-authored-by: Alan Dayton <[email protected]>

* Clean up CHAI dependency handling

* Revert "Clean up CHAI dependency handling"

This reverts commit 5afb66a.

* Clean up CMake in CHAI (#247)

* Update copyright to 2024 (#248)

* Update to BLT v0.6.1 (#243)

* Update to BLT v0.6.1
* Update to RAJA v2024.02.0
* Update to Umpire 2024.02.0
* Use new way of exporting tpls
* Disable failing container builds since container images are being revamped
* Allow failure for the job using libcpp - doesn't play nicely with fmt at the moment
* Use branch of radiuss-spack-configs to fix spack builds
* Add install tests
* Add a file with release notes
* Ignoring runner issues on tioga since the jobs passed previously

* [Woptim] update spack + update to rocm 5.7.1 (#245)

* Update Spack version
* Update RADIUSS Spack Configs with February 2024 release changes

---------

Co-authored-by: Alan Dayton <[email protected]>

* Update version numbers

---------

Co-authored-by: David Beckingsale <[email protected]>
Co-authored-by: Benjamin T. Liu <[email protected]>
Co-authored-by: Kristi <[email protected]>
Co-authored-by: Kristi <[email protected]>
Co-authored-by: Arturo Vargas <[email protected]>
Co-authored-by: robinson96 <[email protected]>
Co-authored-by: Adrien Bernede <[email protected]>
Co-authored-by: Neela Kausik <[email protected]>
Co-authored-by: Ben Liu <[email protected]>
  • Loading branch information
10 people authored Mar 5, 2024
1 parent 77d22da commit 31773a2
Show file tree
Hide file tree
Showing 112 changed files with 2,419 additions and 2,253 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ Win32/chai.vcxproj.user
Win32/.vs/
Win32/x64/
*.aps
*.orig
126 changes: 68 additions & 58 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,80 +1,90 @@
###############################################################################
# Copyright (c) 2016-20, Lawrence Livermore National Security, LLC and CHAI
# project contributors. See the COPYRIGHT file for details.
# Copyright (c) 2022-24, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the CHAI LICENSE file for details.
#
# SPDX-License-Identifier: (MIT)
###############################################################################

# DESCRIPTION:
###############################################################################
# General GitLab pipelines configurations for supercomputers and Linux clusters
# at Lawrence Livermore National Laboratory (LLNL).
#
# This entire pipeline is LLNL-specific
# #############################################################################

# We define the following GitLab pipeline variables:
#
# GIT_SUBMODULE_STRATEGY:
# Tells Gitlab to recursively update the submodules when cloning the project
# 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.
#
# ALLOC_NAME:
# On LLNL's quartz, this pipeline creates only one allocation shared among jobs
# in order to save time and resources. This allocation has to be uniquely named
# so that we are sure to retrieve it.
# In addition, each project should copy over and complete:
# - .gitlab/custom-jobs-and-variables.yml
# - .gitlab/subscribed-pipelines.yml
#
# BUILD_ROOT:
# The path to the shared resources between all jobs. The BUILD_ROOT is unique to
# the pipeline, preventing any form of concurrency with other pipelines. This
# also means that the BUILD_ROOT directory will never be cleaned.
# TODO: add a clean-up mechanism
# 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:
##### LC GITLAB CONFIGURATION
# Use an LLNL service user to run CI. This prevents from running pipelines as an
# actual user.
LLNL_SERVICE_USER: umdev
# Use the service user workspace. Solves permission issues, stores everything
# at the same location whoever triggers a pipeline.
CUSTOM_CI_BUILDS_DIR: /usr/workspace/umdev/gitlab-runner
# Tells Gitlab to recursively update the submodules when cloning the project.
GIT_SUBMODULE_STRATEGY: recursive
ALLOC_NAME: ${CI_PROJECT_NAME}_ci_${CI_PIPELINE_ID}
BUILD_ROOT: ${CI_PROJECT_DIR}

# Normally, stages are blocking in Gitlab. However, using the keyword "needs" we
# can express dependencies between job that break the ordering of stages, in
# favor of a DAG.
# In practice q_*, l_* and b_* stages are independently run and start immediately.

stages:
- q_allocate_resources
- q_build_and_test
- q_release_resources
- l_build_and_test
- b_build_and_test
##### 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}

# This is the rules that drives the activation of "advanced" jobs. All advanced
# jobs will share this through a template mechanism.
.advanced_pipeline:
rules:
- if: '$CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "develop" || $ALL_TARGETS == "ON"' #run only if ...
##### SHARED_CI CONFIGURATION
# Required information about GitHub repository
GITHUB_PROJECT_NAME: "CHAI"
GITHUB_PROJECT_ORG: "LLNL"
# Set the build-and-test command.
# 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.
# ALWAYS_RUN_PATTERN: ""

# These are also templates (.name) that define project specific build commands.
# If an allocation exist with the name defined in this pipeline, the job will
# use it (slurm specific).
.build_toss_3_x86_64_ib_script:
script:
- echo ${ALLOC_NAME}
- export JOBID=$(squeue -h --name=${ALLOC_NAME} --format=%A)
- echo ${JOBID}
- srun $( [[ -n "${JOBID}" ]] && echo "--jobid=${JOBID}" ) -t 10 -N 1 scripts/gitlab/build_and_test.sh
# We organize the build-and-test stage with sub-pipelines. Each sub-pipeline
# corresponds to a test batch on a given machine.

# Lassen and Butte use a different job scheduler (spectrum lsf) that does not
# allow pre-allocation the same way slurm does.
.build_blueos_3_ppc64le_ib_script:
script:
- lalloc 1 -W 20 scripts/gitlab/build_and_test.sh
# High level stages
stages:
- prerequisites
- build-and-test

.build_blueos_3_ppc64le_ib_p9_script:
extends: .build_blueos_3_ppc64le_ib_script
# 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.12.0'
file: 'pipelines/${CI_MACHINE}.yml'
- artifact: '${CI_MACHINE}-jobs.yml'
job: 'generate-job-lists'
strategy: depend
forward:
pipeline_variables: true

# This is where jobs are included.
include:
- local: .gitlab/quartz-templates.yml
- local: .gitlab/quartz-jobs.yml
- local: .gitlab/lassen-templates.yml
- local: .gitlab/lassen-jobs.yml
- local: .gitlab/butte-templates.yml
- local: .gitlab/butte-jobs.yml
# [Optional] checks preliminary to running the actual CI test
#- project: 'radiuss/radiuss-shared-ci'
# ref: 'v2023.12.0'
# file: 'preliminary-ignore-draft-pr.yml'
# pipelines subscribed by the project
- local: '.gitlab/subscribed-pipelines.yml'
71 changes: 0 additions & 71 deletions .gitlab/butte-jobs.yml

This file was deleted.

31 changes: 0 additions & 31 deletions .gitlab/butte-templates.yml

This file was deleted.

73 changes: 73 additions & 0 deletions .gitlab/custom-jobs-and-variables.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
###############################################################################
# Copyright (c) 2022-24, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the CHAI LICENSE file for details.
#
# SPDX-License-Identifier: (MIT)
###############################################################################

# We define the following GitLab pipeline variables:
variables:
# On LLNL's ruby, this pipeline creates only one allocation shared among jobs
# in order to save time and resources. This allocation has to be uniquely named
# so that we are sure to retrieve it and avoid collisions.
ALLOC_NAME: ${CI_PROJECT_NAME}_ci_${CI_PIPELINE_ID}

# Ruby
# Arguments for top level allocation
RUBY_SHARED_ALLOC: "--exclusive --reservation=ci --time=7 --nodes=1"
# Arguments for job level allocation
# Note: We repeat the reservation, necessary when jobs are manually re-triggered.
RUBY_JOB_ALLOC: "--overlap --reservation=ci --nodes=1"
# Project specific variants for ruby
PROJECT_RUBY_VARIANTS: "~shared +raja tests=basic "
# Project specific deps for ruby
PROJECT_RUBY_DEPS: ""

# Poodle
# Arguments for top level allocation
POODLE_SHARED_ALLOC: "--exclusive --partition=pdebug --time=7 --nodes=1"
# Arguments for job level allocation
# Note: We repeat the reservation, necessary when jobs are manually re-triggered.
POODLE_JOB_ALLOC: "--overlap --nodes=1"
# Project specific variants for poodle
PROJECT_POODLE_VARIANTS: "~shared +raja tests=basic "
# Project specific deps for poodle
PROJECT_POODLE_DEPS: ""

# Corona
# Arguments for top level allocation
CORONA_SHARED_ALLOC: "--exclusive --time-limit=9m --nodes=1"
# Arguments for job level allocation
CORONA_JOB_ALLOC: "--nodes=1 --begin-time=+5s"
# Project specific variants for corona
PROJECT_CORONA_VARIANTS: "~shared +raja tests=basic "
# Project specific deps for corona
PROJECT_CORONA_DEPS: ""

# Tioga
# Arguments for top level allocation
TIOGA_SHARED_ALLOC: "--exclusive --time-limit=16m --nodes=1"
# Arguments for job level allocation
TIOGA_JOB_ALLOC: "--nodes=1 --begin-time=+5s"
# Project specific variants for tioga
PROJECT_TIOGA_VARIANTS: "~shared +raja tests=basic "
# 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 8 -q pci"
# Project specific variants for lassen
PROJECT_LASSEN_VARIANTS: "~shared +raja cuda_arch=70 tests=basic"
# Project specific deps for lassen
PROJECT_LASSEN_DEPS: ""

# 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:
junit: junit.xml
28 changes: 28 additions & 0 deletions .gitlab/jobs/corona.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
##############################################################################
# Copyright (c) 2022-24, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the CHAI LICENSE file for details.
#
# SPDX-License-Identifier: (MIT)
##############################################################################

# Override reproducer section to define project specific variables.
.corona_reproducer_vars: &corona_reproducer_vars
- |
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 this
# project. We keep ${PROJECT_<MACHINE>_VARIANTS} and ${PROJECT_<MACHINE>_DEPS}
# So that the comparison with the original job is easier.

# No overridden jobs so far.

############
# 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.
Loading

0 comments on commit 31773a2

Please sign in to comment.