Skip to content

Commit

Permalink
Merge branch 'develop' of github.com:LLNL/Umpire into task/UM-1020-as…
Browse files Browse the repository at this point in the history
…an-poisoning-for-hip
  • Loading branch information
kab163 committed Apr 3, 2023
2 parents 4b92502 + 91ffd6f commit 276f15b
Show file tree
Hide file tree
Showing 445 changed files with 2,365 additions and 2,278 deletions.
20 changes: 16 additions & 4 deletions .gitlab-ci.yml
Expand Up @@ -22,6 +22,9 @@

# We define the following GitLab pipeline variables:
variables:
# Required information about GitHub repository
GITHUB_PROJECT_NAME: "Umpire"
GITHUB_PROJECT_ORG: "LLNL"
# Use the umdev LLNL service user to run CI. This prevents from running
# pipelines as an actual user.
LLNL_SERVICE_USER: umdev
Expand All @@ -33,9 +36,14 @@ variables:
# We build the projects in the CI clone directory.
# TODO: add a clean-up mechanism
BUILD_ROOT: ${CI_PROJECT_DIR}
# 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: ""

# 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 in sub-pipelines. Each sub-pipeline
# corresponds to a test batch on a given machine.

# High level stages
stages:
Expand All @@ -50,13 +58,17 @@ stages:
include:
- local: '.gitlab/custom-jobs-and-variables.yml'
- project: 'radiuss/radiuss-shared-ci'
ref: v2022.09.0
ref: v2023.03.0rc
file: '${CI_MACHINE}-build-and-test.yml'
- local: '.gitlab/${CI_MACHINE}-build-and-test-extra.yml'
strategy: depend
forward:
pipeline_variables: true

# pipelines subscribed by the project
include:
# [Optional] checks preliminary to running the actual CI test
#- project: 'radiuss/radiuss-shared-ci'
# ref: v2023.03.0rc
# file: 'preliminary-ignore-draft-pr.yml'
# pipelines subscribed by the project
- local: .gitlab/subscribed-pipelines.yml
4 changes: 2 additions & 2 deletions .gitlab/corona-build-and-test-extra.yml
Expand Up @@ -25,8 +25,8 @@
# This job intentionally tests our umpire package.py because although this job does not
# explicitly have the ~tools, the package.py should still disable tools from being built.
###
rocm_5_1_1_openmp_clang_13_0_0:
rocmcc_5_4_1_hip_openmp:
variables:
SPEC: "+fortran +openmp +rocm amdgpu_target=gfx906 %clang@13.0.0 ^hip@5.1.1 ^blt@develop"
SPEC: "~shared +fortran +openmp +rocm +device_alloc tests=basic amdgpu_target=gfx906 %rocmcc@5.4.1 ^hip@5.4.1 ^blt@develop"
extends: .build_and_test_on_corona

26 changes: 18 additions & 8 deletions .gitlab/custom-jobs-and-variables.yml
Expand Up @@ -7,43 +7,53 @@

# 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_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --partition=pdebug --time=10 --nodes=1"
RUBY_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --reservation=ci --qos=ci_ruby --time=10 --nodes=1"
# Arguments for job level allocation
RUBY_BUILD_AND_TEST_JOB_ALLOC: "--overlap --time=10 --nodes=1"
RUBY_BUILD_AND_TEST_JOB_ALLOC: "--overlap --reservation=ci --qos=ci_ruby --time=10 --nodes=1"
# Project specific variants for ruby
PROJECT_RUBY_VARIANTS: "+fortran "
PROJECT_RUBY_VARIANTS: "~shared +fortran ~device_alloc +tools tests=basic "
# Project specific deps for ruby
PROJECT_RUBY_DEPS: ""

# Corona
# Arguments for top level allocation
CORONA_BUILD_AND_TEST_SHARED_ALLOC: "--time-limit=15m --nodes=1"
CORONA_BUILD_AND_TEST_SHARED_ALLOC: "--exclusive --time-limit=15m --nodes=1"
# Arguments for job level allocation
CORONA_BUILD_AND_TEST_JOB_ALLOC: "--time-limit=10m --nodes=1"
# Project specific variants for corona
PROJECT_CORONA_VARIANTS: "+fortran "
PROJECT_CORONA_VARIANTS: "~shared +fortran ~device_alloc tests=basic "
# 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=15m --nodes=1"
# Arguments for job level allocation
TIOGA_BUILD_AND_TEST_JOB_ALLOC: "--time-limit=10m --nodes=1"
# Project specific variants for tioga
PROJECT_TIOGA_VARIANTS: "~shared +fortran ~device_alloc tests=basic "
# 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 18"
# Project specific variants for lassen
PROJECT_LASSEN_VARIANTS: "+fortran "
PROJECT_LASSEN_VARIANTS: "~shared +fortran ~device_alloc +tools 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 is here projects can fine tune the
# Not all configuration can be shared. Here projects can fine tune the
# CI behavior.
.custom_build_and_test:
artifacts:
Expand Down
37 changes: 22 additions & 15 deletions .gitlab/lassen-build-and-test-extra.yml
Expand Up @@ -12,81 +12,88 @@
# We keep ${PROJECT_<MACHINE>_VARIANTS} and ${PROJECT_<MACHINE>_DEPS} So that
# the comparison with the original job is easier.

# No overridden jobs so far.
# Spec has test disabled in shared CI, conflicting with default test setting in Umpire
# TODO: This is likely an issue in RADIUSS Shared CI: why disable tests ?.
xl_16_1_1_12_gcc_8_3_1_cuda_11_0_2:
variables:
SPEC: "~shared +fortran ~device_alloc +tools +cuda tests=none %xl@16.1.1.12 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ^cuda@11.0.2 ${PROJECT_LASSEN_DEPS}"
extends: .build_and_test_on_lassen


############
# 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
# ${PROJECT_<MACHINE>_DEPS} in the extra jobs. There is no reason not to fully
# describe the spec here.

ibm_clang_10_0_1_mpi_shmem:
variables:
SPEC: "%clang@ibm.10.0.1 +ipc_shmem +mpi ^spectrum-mpi"
SPEC: "~shared ~device_alloc +tools tests=basic %clang@ibm.10.0.1 +ipc_shmem +mpi ^spectrum-mpi"
extends: .build_and_test_on_lassen

ibm_clang_10_0_1_mpi:
variables:
SPEC: "+fortran %clang@ibm.10.0.1 +mpi ^spectrum-mpi"
SPEC: "~shared +fortran ~device_alloc +tools tests=basic %clang@ibm.10.0.1 +mpi ^spectrum-mpi"
extends: .build_and_test_on_lassen

ibm_clang_10_0_1_cuda_10_1_168_mpi_shmem:
variables:
SPEC: "%clang@ibm.10.0.1 +cuda +ipc_shmem +mpi cxxflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ^spectrum-mpi ^cuda@10.1.168"
SPEC: "~shared ~device_alloc +tools tests=basic %clang@ibm.10.0.1 +cuda +ipc_shmem +mpi cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ^spectrum-mpi ^cuda@10.1.168"
extends: .build_and_test_on_lassen

# Extras.
clang_9_0_0_libcpp:
variables:
SPEC: "%clang@9.0.0+libcpp cxxflags=\"-stdlib=libc++ -DGTEST_HAS_CXXABI_H_=0\" cflags=\"-DGTEST_HAS_CXXABI_H_=0\""
SPEC: "~shared ~device_alloc +tools tests=basic %clang@9.0.0+libcpp cxxflags==\"-stdlib=libc++ -DGTEST_HAS_CXXABI_H_=0\" cflags==\"-DGTEST_HAS_CXXABI_H_=0\""
extends: .build_and_test_on_lassen

clang_9_0_0_memleak:
variables:
SPEC: "+asan +sanitizer_tests %clang@9.0.0 cxxflags=-fsanitize=address"
SPEC: "~shared +asan +sanitizer_tests +tools ~device_alloc tests=basic %clang@9.0.0 cxxflags==-fsanitize=address"
ASAN_OPTIONS: "detect_leaks=1"
extends: .build_and_test_on_lassen

# clang_9_0_0_datarace (build and test on lassen):
# variables:
# SPEC: "%clang@9.0.0 cxxflags=-fsanitize=thread"
# SPEC: "%clang@9.0.0 cxxflags==\"-fsanitize=thread\""
# allow_failure: true
# extends: .build_and_test_on_lassen

gcc_8_3_1_dev_benchmarks:
variables:
SPEC: "+dev_benchmarks %gcc@8.3.1 build_type=Release"
SPEC: "~shared +dev_benchmarks +tools ~device_alloc %gcc@8.3.1 build_type=Release"
extends: .build_and_test_on_lassen

xl_default_omp_target:
variables:
SPEC: "%xl@default+openmp+openmp_target ^cmake@3.14.5"
SPEC: "~shared ~device_alloc +tools tests=basic %xl@default+openmp+openmp_target"
allow_failure: true
extends: .build_and_test_on_lassen

gcc_8_3_1_numa:
variables:
SPEC: "+fortran +numa%gcc@8.3.1"
SPEC: "~shared +fortran +numa +tools ~device_alloc tests=basic %gcc@8.3.1"
extends: .build_and_test_on_lassen

gcc_8_3_1_cuda_10_1_168:
variables:
SPEC: "+fortran +cuda+shared+tools+backtrace %gcc@8.3.1 ^cuda@10.1.168"
SPEC: "+fortran +cuda +tools +backtrace ~device_alloc tests=basic %gcc@8.3.1 ^cuda@10.1.168"
extends: .build_and_test_on_lassen

# Develop/main builds against specific tpl versions.

gcc_8_3_1_tpls:
variables:
SPEC: "+fortran %gcc@8.3.1 ^blt@develop"
SPEC: "~shared +fortran ~device_alloc +tools tests=basic %gcc@8.3.1 ^blt@develop"
extends: .build_and_test_on_lassen

ibm_clang_9_0_0_gcc_8_3_1_cuda_10_1_168_tpls:
variables:
SPEC: "+fortran +cuda %clang@ibm.9.0.0 cxxflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ^cuda@10.1.168 ^blt@develop"
SPEC: "~shared +fortran +cuda ~device_alloc +tools tests=basic %clang@ibm.9.0.0 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-8.3.1\" ^cuda@10.1.168 ^blt@develop"
extends: .build_and_test_on_lassen

xl_16_1_1_12_gcc_8_3_1_cuda_10_1_168_tpls:
variables:
SPEC: "+fortran +cuda %xl@16.1.1.12 cxxflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-7.3.1\" cflags=\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-7.3.1\" ^cuda@10.1.168 ^cmake@3.14.5 ^blt@develop"
SPEC: "~shared +fortran +cuda ~device_alloc +tools tests=basic %xl@16.1.1.12 cxxflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-7.3.1\" cflags==\"--gcc-toolchain=/usr/tce/packages/gcc/gcc-7.3.1\" ^cuda@10.1.168 ^blt@develop"
extends: .build_and_test_on_lassen
10 changes: 5 additions & 5 deletions .gitlab/ruby-build-and-test-extra.yml
Expand Up @@ -23,27 +23,27 @@

gcc_8_1_0_numa:
variables:
SPEC: "+fortran+numa %gcc@8.1.0"
SPEC: "~shared +fortran +numa ~device_alloc +tools tests=basic %gcc@8.1.0"
extends: .build_and_test_on_ruby

clang_10_0_1_sqlite_experimental:
variables:
SPEC: "+sqlite_experimental %clang@10.0.1"
SPEC: "~shared +sqlite_experimental ~device_alloc +tools tests=basic %clang@10.0.1"
extends: .build_and_test_on_ruby

# Develop builds against specific tpl version.
pgi_20_1_gcc_local_8_3_1_tpls:
variables:
SPEC: "+fortran %pgi@20.1 cxxflags=-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc cflags=-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc fflags=-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc ^blt@develop"
SPEC: "~shared +fortran ~device_alloc +tools tests=basic %pgi@20.1 cxxflags==\"-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc\" cflags==\"-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc\" fflags==\"-rc=/usr/workspace/umpire/pgi/x86_64/local-gcc-8.3.1-rc\" ^blt@develop"
extends: .build_and_test_on_ruby

clang_10_0_1_tpls:
variables:
SPEC: "+fortran %clang@10.0.1 ^blt@develop"
SPEC: "~shared +fortran ~device_alloc +tools tests=basic %clang@10.0.1 ^blt@develop"
extends: .build_and_test_on_ruby

gcc_8_1_0_tpls:
variables:
SPEC: "+fortran %gcc@8.1.0 ^blt@develop"
SPEC: "~shared +fortran ~device_alloc +tools tests=basic %gcc@8.1.0 ^blt@develop"
extends: .build_and_test_on_ruby

5 changes: 5 additions & 0 deletions .gitlab/subscribed-pipelines.yml
Expand Up @@ -16,6 +16,11 @@ corona-build-and-test:
CI_MACHINE: "corona"
extends: [.build-and-test]

tioga-build-and-test:
variables:
CI_MACHINE: "tioga"
extends: [.build-and-test]

lassen-build-and-test:
variables:
CI_MACHINE: "lassen"
Expand Down
32 changes: 32 additions & 0 deletions .gitlab/tioga-build-and-test-extra.yml
@@ -0,0 +1,32 @@
###############################################################################
# Copyright (c) 2022, Lawrence Livermore National Security, LLC and RADIUSS
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
###############################################################################

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

# 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 not reason not to fully
# describe the spec here.

###
# This job intentionally tests our umpire package.py because although this job does not
# explicitly have the ~tools, the package.py should still disable tools from being built.
###
rocmcc_5_4_1_hip_openmp:
variables:
SPEC: "~shared +fortran +openmp +rocm +device_alloc tests=basic amdgpu_target=gfx90a %rocmcc@5.4.1 ^hip@5.4.1 ^blt@develop"
extends: .build_and_test_on_tioga

4 changes: 2 additions & 2 deletions .uberenv_config.json
Expand Up @@ -4,10 +4,10 @@
"package_final_phase" : "initconfig",
"package_source_dir" : "../..",
"spack_url": "https://github.com/spack/spack.git",
"spack_branch": "v0.18.1",
"spack_branch": "v0.19.0",
"spack_activate" : {},
"spack_configs_path": "scripts/radiuss-spack-configs",
"spack_packages_path": "scripts/spack_packages",
"spack_packages_path": "scripts/radiuss-spack-configs/packages",
"spack_concretizer": "clingo",
"spack_setup_clingo": false,
"debug": true
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
@@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 2016-22, Lawrence Livermore National Security, LLC and Umpire
# Copyright (c) 2016-23, Lawrence Livermore National Security, LLC and Umpire
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
Expand Down
2 changes: 1 addition & 1 deletion RELEASE
@@ -1,6 +1,6 @@
Umpire Version 2022.10.0

Copyright (c) 2016-22, Lawrence Livermore National Security, LLC.
Copyright (c) 2016-23, Lawrence Livermore National Security, LLC.
Produced at the Lawrence Livermore National Laboratory.
All rights reserved. See details in Umpire/LICENSE.

Expand Down
15 changes: 13 additions & 2 deletions benchmarks/CMakeLists.txt
@@ -1,5 +1,5 @@
##############################################################################
# Copyright (c) 2016-22, Lawrence Livermore National Security, LLC and Umpire
# Copyright (c) 2016-23, Lawrence Livermore National Security, LLC and Umpire
# project contributors. See the COPYRIGHT file for details.
#
# SPDX-License-Identifier: (MIT)
Expand All @@ -17,7 +17,8 @@ blt_add_executable(
SOURCES allocator_stress_test.cpp
DEPENDS_ON ${stress_test_depends})

if (ENABLE_CUDA AND UMPIRE_ENABLE_DEVICE_ALLOCATOR)
if (UMPIRE_ENABLE_DEVICE_ALLOCATOR)
if (UMPIRE_ENABLE_CUDA)
blt_add_executable(
NAME device_allocator_stress_test
SOURCES device_allocator_stress_test.cpp
Expand All @@ -30,6 +31,16 @@ if (ENABLE_CUDA AND UMPIRE_ENABLE_DEVICE_ALLOCATOR)
set_target_properties(
device_allocator_stress_test
PROPERTIES CUDA_SEPARABLE_COMPILATION On)
elseif (UMPIRE_ENABLE_HIP)
blt_add_executable(
NAME device_allocator_stress_test
SOURCES device_allocator_stress_test.cpp
DEPENDS_ON umpire blt::hip blt::hip_runtime)

set_target_properties(
device_allocator_stress_test
PROPERTIES LINK_FLAGS "-fgpu-rdc")
endif()
endif()

blt_add_executable(
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/allocator_benchmarks.cpp
@@ -1,5 +1,5 @@
//////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2016-22, Lawrence Livermore National Security, LLC and Umpire
// Copyright (c) 2016-23, Lawrence Livermore National Security, LLC and Umpire
// project contributors. See the COPYRIGHT file for details.
//
// SPDX-License-Identifier: (MIT)
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/allocator_memory_cost_benchmark.cpp
@@ -1,5 +1,5 @@
//////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2016-22, Lawrence Livermore National Security, LLC and Umpire
// Copyright (c) 2016-23, Lawrence Livermore National Security, LLC and Umpire
// project contributors. See the COPYRIGHT file for details.
//
// SPDX-License-Identifier: (MIT)
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/allocator_stress_test.cpp
@@ -1,5 +1,5 @@
//////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2016-22, Lawrence Livermore National Security, LLC and Umpire
// Copyright (c) 2016-23, Lawrence Livermore National Security, LLC and Umpire
// project contributors. See the COPYRIGHT file for details.
//
// SPDX-License-Identifier: (MIT)
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/copy_benchmarks.cpp
@@ -1,5 +1,5 @@
//////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2016-22, Lawrence Livermore National Security, LLC and Umpire
// Copyright (c) 2016-23, Lawrence Livermore National Security, LLC and Umpire
// project contributors. See the COPYRIGHT file for details.
//
// SPDX-License-Identifier: (MIT)
Expand Down
2 changes: 1 addition & 1 deletion benchmarks/copy_stress_test.cpp
@@ -1,5 +1,5 @@
//////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2016-22, Lawrence Livermore National Security, LLC and Umpire
// Copyright (c) 2016-23, Lawrence Livermore National Security, LLC and Umpire
// project contributors. See the COPYRIGHT file for details.
//
// SPDX-License-Identifier: (MIT)
Expand Down

0 comments on commit 276f15b

Please sign in to comment.