Skip to content

Commit

Permalink
v0.12.0 RC (#249)
Browse files Browse the repository at this point in the history
* Add care::min and care::max, remove CARE_MIN and CARE_MAX

* Remove reference

* I guess I should write in C++

* Use ref in signature

* Revert "Use ref in signature"

This reverts commit a94f14e.

* Fixes for loop fuser

* Add abs

* Add FUSIBLE_LOOP_COUNTS_TO_OFFSETS_SCAN_PHASE

* Fix macros for loop fuser disabled

* Use refs

* Change signatures to match STL

* Remove conditional dependence on GPU_ACTIVE

* Add Loop Fuser support for host_device_map

* Remove header

* Add test

* Make input array const

* Add non-const overload of copy_n

* Add explicit instantiations for care::copy_n

* Fix use of CHAI_GPU_SIM_MODE (only affects GPU_SIM mode with gpu compiler)

* Fix for v0.7.0 refactoring

* Remove conditional dependence on OPENMP_ACTIVE

* Add PAUSE/RESUME capability for LoopFuser

* Fix warning during resume

* Missed one

* Windows fix

* Add missing macro

* Host device map fixes: implement host iterator_at and unify map loops; reset size in host clear(); fix loop fuser map macros for host; remove START argument for MAP macros

* Remove mutable

* Fix bounds checking for slices

* Fix comment for loop fuser

* Introduce CARE_PARALLEL_DEVICE

* Fix typo

* Use perfect forwarding for lambdas

* Add check for stale host data view

* Undo change from another branch

* Clarify description of CMake option

* Remove obsolete function

* Simplify host_device_ptr

* setup up host_device_ptr to be either _host_device_ptr or host_device_race_detection_ptr

* refactor race detection to use an accessor pattern

* fix build in care

* care builds again after initial stab at actual race detection.

* add accessor.

* add race detection test to TestForAll

* debugging test case.

* basic test case behaves appropriately

* misceallaneous race condition fixes and false positive workarounds.

* Adds race detection instrumentation to CARE, addresses several race conditions throughout the code.

* have default accessor be configurable, previous DefaultAccesor is no NoOpAccessor

* configure behavior of setting the thread id in a CARE_CHECKED_PARALLEL_LOOP

* support non-default Accessor for sortArray and uniqArray

* race condition test only if loop configured to support it.

* build fixes after adding uniqArray support.

* address reviewer concerns in care.

* Update CARE to C++14

* Remove illegal template argument

* Fix warnings about unused parameter

* Fix unused variable warning

* Fix compiler warning

* Try to fix ambiguous test

* Attempt to fix std being passed multiple times with different values

* Use c++11 supported version of remove_const

* Add missing template argument for GPU algorithms

* Pick specific CMake version

* Allow changes to blt submodule

* Update to BLT v0.5.2

* Remove gcc 4.9.3 build from CI

* Accessor fixes for GPU builds, use blt::hip instead of hip target in builds, make lop fuser flush length configurable.

* Update LoopFuser.cpp

* Clean up gitignore

* Update CAMP to v2022.10.1

* Update Umpire to v2022.10.0

* Update RAJA to v2022.10.5

* Update CHAI to v2022.10.0

* Default to c++14

* Update to CMake 3.20

* Fix up some changed options in tpls

* Fix up some changed options in tpls

* Update CARE spack spec to build with c++14

* Add cpp14 variant to care spack package

* Update submodule build configurations

* Rename blueos host config to be more generic

* Fixes for build using submodules on rzansel

* Remove gcc 4.9.3 implicit link directories

* Get rid of ambiguous operator== overload and just rely on ManagedArray operator==

* Remove accidentally committed file

* Add default array views

* Build fixes

* Simplify benchmark

* Update toss3 clang host config

* Invert layout

* Decide on convention for array views

* Update benchmark

* Update host configs

* Slight wording clarifications

* split out new capabilities into the right library locations.

* address clang-query failures.

* build fix, reallocate the correct reference.

* add a concept of a ZERO_COPY memory space and use it instead of PINNED in the SortFuser.

* address reviewer comments.

* build fixes after addressing reviewer comments.

* respond to more reviewer comments.

* fix typo.

* add GPU_MEMORY_IS_ACCESSIBLE_ON_GPU CMake option.

* Fix sort fuser seg fault

* Fix use of CARE_ENABLE_GPU_SIMULATION_MODE

* Win32 Build Fix

* Move toss3 host config to more specific location

* Add toss4 host config

* Move blueos host config to more specific location

* plugins

* Delete BenchmarkPlugin.cpp

* undoing accidental changes

* fix RAJAPlugin.cpp

* resolved some issues

* small tweak

* fixed formatting

* trying to revert 2 files and deleted RAJAPlugin class

* replaced calls to RAJAPlugin

* fixing build errors hopefully

* fix vector error

* Allow failure for builds

* new class for plugin data

* manually set chai execution space for 2d

* Update to latest radiuss-spack-configs

* Update to latest uberenv

* Make sure radiuss-ci is at latest

* Update to BLT v0.5.3

* Update uberenv configuration

* Allow remaining builds to fail

* Update BLT version

* Start with one job on Ruby

* fixed plugindata class

* Update build_and_test.sh script

* Add debug option to uberenv config

* Update spack packages

* Remove custom build on ruby for now

* Add missing comma to uberenv config file

* Spack now requires a repo.yaml file

* Rearrange to match expected spack package layout

* remove unnecessary includes

* Point to newer default pipelines

* Update CARE spack package

* Fix syntax errors

* Add debug prints

* output more info

* Try again

* Use specific core counts from RAJA

* Clean up some debugging junk

* More clean up

* Try to get spack build logs as artifacts

* fixed formatting and small issues

* Move backward to uberenv v1.0.0

* Remove debug info and override CUDA architecture in lassen job

* registration function

* Increase time limit on ruby and allow failure on one lassen job

* Consistent time limits

* Shared allocation needs to be longer than job allocation

* fixed reg function

* Increase CI time limit for Ruby

* resolved comments

* Delete BenchmarkForall.cpp

* removed streams stuff

* restored orignal BenchmarkForall.cpp

* Care->CARE

* resolved more comments

* resolved comments and errors

* fixes profileplugin registration

* added comments and formatting

* fixed HIP warning

* Revert to BLT v0.5.2

* Disallow BLT v0.5.3 in CARE spack package

* tweaked plugindata description

* actionmap alias

* forgot one actionmap

* move actionmap inside care namespace

* fix indentation

* try to fix printf errors

* fixed warnings in debugplugin and forall

* maybe silence profileplugin warnings

* forall unused parameter warning

* Pass gcc-toolchain in all cases

* Make BenchmarkForall more repeatable (#229)

* Make BenchmarkForall more repeatable

* Update to BLT v0.5.3 (#231)

* Invalidate key and value arrays after sort on CPU (#234)

* Use compiler generated functions in host_ptr and local_ptr (#236)

* Use compiler generated special member functions in host_ptr
* Use compiler generated special member functions in local_ptr

* Use public instead of private member (#237)

Fix after #236

* Fix bug in KeyValueSorter (#238)

* [woptim] Update radiuss-shared-ci to new release (with radiuss-spack-configs) (#235)

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

* Fix old naming

* Update job override

* Effectively use ibm clang

* Do not prevent the mirroring of release tags

---------

Co-authored-by: Alan Dayton <6393677+adayton1@users.noreply.github.com>

* Revamp CMake (#244)

* Bump minimum required CMake version to 3.18
* Improve dependency handling
* Improve exported targets
* Modularize CMake code

* [Woptim] Shared ci 2023.12.0 (#245)

Update Shared CI to 2023-12-0
Add poodle machine
Tweak allocations
Update build_and_test script (sync with RAJA).

---------

Co-authored-by: Adrien M. BERNEDE <51493078+adrienbernede@users.noreply.github.com>

* Update dependencies (#246)

* Update BLT to v0.6.1
* Update CAMP to v2024.02.0
* Update Umpire to v2024.02.0
* Update RAJA to v2024.02.0
* Update CHAI to v2024.02.0
* Update Spack to develop-2024-01-21
* Update radiuss-spack-configs to c585417
* Use local spack package for CARE and then radiuss-spack-configs spack packages for dependencies
* Fix up CARE install
* Use new way of exporting BLT logic
* Update local CARE spack package

* Update copyright (#247)

* Update copyright to 2024
* Clean up license text
* Remove outdated CMake config file

* Add ArrayDup from raw pointer (#242)

* Add ArrayDup from raw pointer

---------

Co-authored-by: Alan Dayton <dayton8@llnl.gov>

* Support for single memory space and other fixes (#248)

* Add support for single memory space
* Windows shared library build fixes
* Support for unsigned and 64 bit integers in algorithms and scans
* Optimizations to reduce host side memory touches

* Update version number and readme

* Update release notes

---------

Co-authored-by: Benjamin T. Liu <liu15@llnl.gov>
Co-authored-by: Peter B. Robinson <robinson96@llnl.gov>
Co-authored-by: Neela Kausik <kausik1@llnl.gov>
Co-authored-by: neelakausik <110871421+neelakausik@users.noreply.github.com>
Co-authored-by: Ben Liu <38140930+liu15@users.noreply.github.com>
Co-authored-by: Adrien Bernede <51493078+adrienbernede@users.noreply.github.com>
  • Loading branch information
7 people authored Mar 11, 2024
1 parent 2360151 commit 6acbd64
Show file tree
Hide file tree
Showing 157 changed files with 19,122 additions and 7,054 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: C/C++ CI

on:
pull_request:
branches: [ develop ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v2
- name: Initialize submodules
run: git submodule update --init --recursive
- name: Make build directory
run: mkdir build
- name: Set up CMake
uses: jwlawson/actions-setup-cmake@v1.13.1
with:
cmake-version: '3.20.x'
- name: Run CMake
run: cmake ../ -DCMAKE_BUILD_TYPE=Debug
working-directory: build
- name: Run make
run: make -j
working-directory: build
- name: Run tests
run: make test CTEST_OUTPUT_ON_FAILURE=TRUE
working-directory: build
- name: Clean up
run: rm -rf build
11 changes: 7 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
*.swp
*.swo
build*
*.vcxproj.user
*/x64/*/
*.aps
build
build-*
build_*/*
hc-*
*.orig
*.vscode
spack-*.txt
90 changes: 90 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
###############################################################################
# Copyright (c) 2022-24, Lawrence Livermore National Security, LLC and CARE
# project contributors. See the CARE 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 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.
#
# In addition, each project should copy over and complete:
# - .gitlab/custom-jobs-and-variables.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:
##### LC GITLAB CONFIGURATION
# Use the umdev 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.
# CUSTOM_CI_BUILDS_DIR: ""
# Tells Gitlab to recursively update the submodules when cloning the project.
GIT_SUBMODULE_STRATEGY: normal

##### 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: "CARE"
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: ""

# 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:
- prerequisites
- build-and-test

# 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

include:
# [Optional] checks preliminary to running the actual CI test
#- project: 'radiuss/radiuss-shared-ci'
# ref: 'v2023.12.0'
# file: 'utilities/preliminary-ignore-draft-pr.yml'
# pipelines subscribed by the project
- local: '.gitlab/subscribed-pipelines.yml'
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 CARE
# project contributors. See the CARE LICENSE file for details.
#
# SPDX-License-Identifier: BSD-3-Clause
###############################################################################

# 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=10 --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: ""
# 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
# 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: ""
# Project specific deps for poodle
PROJECT_POODLE_DEPS: ""

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

# Tioga
# Arguments for top level allocation
TIOGA_SHARED_ALLOC: "--exclusive --time-limit=20m --nodes=1"
# Arguments for job level allocation
TIOGA_JOB_ALLOC: "--nodes=1 --begin-time=+5s"
# Project specific variants for tioga
PROJECT_TIOGA_VARIANTS: ""
# 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 11 -q pci"
# Project specific variants for lassen
PROJECT_LASSEN_VARIANTS: " cuda_arch=70"
# 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 CARE
# project contributors. See the CARE LICENSE file for details.
#
# SPDX-License-Identifier: BSD-3-Clause
##############################################################################

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

# Override reproducer section to define project specific variables.
.lassen_reproducer_vars: &lassen_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.

# Override job with old cuda to allow it to fail.
clang_12_0_1_ibm_gcc_8_3_1_cuda_10_1_243:
variables:
SPEC: "${PROJECT_LASSEN_VARIANTS} +cuda %clang@12.0.1.ibm.gcc.8.3.1 ^cuda@10.1.243+allow-unsupported-compilers ${PROJECT_LASSEN_DEPS}"
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 no reason not to fully
# describe the spec here.
28 changes: 28 additions & 0 deletions .gitlab/jobs/poodle.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 CARE
# project contributors. See the CARE LICENSE file for details.
#
# SPDX-License-Identifier: BSD-3-Clause
###############################################################################

# Override reproducer section to define projet specific variables.
.poodle_reproducer_vars: &poodle_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.
28 changes: 28 additions & 0 deletions .gitlab/jobs/ruby.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 CARE
# project contributors. See the CARE LICENSE file for details.
#
# SPDX-License-Identifier: BSD-3-Clause
###############################################################################

# Override reproducer section to define projet specific variables.
.poodle_reproducer_vars: &poodle_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.
28 changes: 28 additions & 0 deletions .gitlab/jobs/tioga.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 CARE
# project contributors. See the CARE LICENSE file for details.
#
# SPDX-License-Identifier: BSD-3-Clause
##############################################################################

# Override reproducer section to define project specific variables.
.tioga_reproducer_vars: &tioga_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 6acbd64

Please sign in to comment.