diff --git a/.github/hubcast.yml b/.github/hubcast.yml new file mode 100644 index 00000000..c4163a05 --- /dev/null +++ b/.github/hubcast.yml @@ -0,0 +1,31 @@ +############################################################################## +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. +# +# SPDX-License-Identifier: BSD-3-Clause +############################################################################## + +Repo: + # Destination organization + dest_org: CARE + + # Destination repository + dest_name: CARE + + # Name of the CI check as reported back to GitHub + check_name: gitlab-ci + + # Report status of pipeline, child pipelines, and individual jobs + check_types: [pipeline, child-pipelines, jobs] + + # Delete branches from destination when source PR is closed + delete_closed: true + + # Do not sync draft PRs/MRs + sync_drafts: false + + # Post message when draft sync is disabled + sync_drafts_msg: true + + # Disable creation of GitLab MRs from GitHub PRs + create_mr: false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c2e354b2..852c023e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,3 +1,10 @@ +############################################################################### +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. +# +# SPDX-License-Identifier: BSD-3-Clause +############################################################################### + name: C/C++ CI on: @@ -17,9 +24,9 @@ jobs: - name: Make build directory run: mkdir build - name: Set up CMake - uses: jwlawson/actions-setup-cmake@v1.13.1 + uses: jwlawson/actions-setup-cmake@v2 with: - cmake-version: '3.23.x' + cmake-version: '3.24.x' - name: Run CMake run: cmake ../ -DCMAKE_BUILD_TYPE=Debug -DCARE_ENABLE_SUBMODULE_TESTS=Off -DCARE_ENABLE_SUBMODULE_BENCHMARKS=Off -DCARE_ENABLE_SUBMODULE_EXAMPLES=Off -DCARE_ENABLE_SUBMODULE_EXERCISES=Off -DCARE_ENABLE_SUBMODULE_DOCS=Off working-directory: build diff --git a/.gitignore b/.gitignore index 448c6c24..2321d077 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,10 @@ +############################################################################## +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. +# +# SPDX-License-Identifier: BSD-3-Clause +############################################################################## + *.swp *.swo build @@ -7,3 +14,5 @@ hc-* *.orig *.vscode spack-*.txt +slirp.out +.codex diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8238e7c1..102dc8f3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,6 @@ ############################################################################### -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################### @@ -71,7 +71,7 @@ include: file: 'id_tokens.yml' # Base pipeline templates and utilities - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/base-pipeline@v2025.12.0 + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/base-pipeline@2026.6.0 inputs: github_project_name: $GITHUB_PROJECT_NAME github_project_org: $GITHUB_PROJECT_ORG @@ -115,13 +115,15 @@ generate-job-lists: # DANE dane-up-check: extends: [.dane, .machine-check] + variables: + ASSOCIATED_CHILD_PIPELINE: "dane-build-and-test" dane-build-and-test: extends: [.dane, .build-and-test] needs: [dane-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/dane-pipeline@v2025.12.0 + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/dane-pipeline@2026.6.0 inputs: job_cmd: $JOB_CMD shared_alloc: $DANE_SHARED_ALLOC @@ -135,13 +137,15 @@ dane-build-and-test: # MATRIX matrix-up-check: extends: [.matrix, .machine-check] + variables: + ASSOCIATED_CHILD_PIPELINE: "matrix-build-and-test" matrix-build-and-test: extends: [.matrix, .build-and-test] needs: [matrix-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/matrix-pipeline@v2025.12.0 + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/matrix-pipeline@2026.6.0 inputs: job_cmd: $JOB_CMD shared_alloc: $MATRIX_SHARED_ALLOC @@ -155,13 +159,15 @@ matrix-build-and-test: # CORONA corona-up-check: extends: [.corona, .machine-check] + variables: + ASSOCIATED_CHILD_PIPELINE: "corona-build-and-test" corona-build-and-test: extends: [.corona, .build-and-test] needs: [corona-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/corona-pipeline@v2025.12.0 + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/corona-pipeline@2026.6.0 inputs: job_cmd: $JOB_CMD shared_alloc: $CORONA_SHARED_ALLOC @@ -175,13 +181,15 @@ corona-build-and-test: # TIOGA tioga-up-check: extends: [.tioga, .machine-check] + variables: + ASSOCIATED_CHILD_PIPELINE: "tioga-build-and-test" tioga-build-and-test: extends: [.tioga, .build-and-test] needs: [tioga-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tioga-pipeline@v2025.12.0 + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tioga-pipeline@2026.6.0 inputs: job_cmd: $JOB_CMD shared_alloc: $TIOGA_SHARED_ALLOC @@ -195,13 +203,15 @@ tioga-build-and-test: # TUOLUMNE tuolumne-up-check: extends: [.tuolumne, .machine-check] + variables: + ASSOCIATED_CHILD_PIPELINE: "tuolumne-build-and-test" tuolumne-build-and-test: extends: [.tuolumne, .build-and-test] needs: [tuolumne-up-check, generate-job-lists] trigger: include: - - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tuolumne-pipeline@v2025.12.0 + - component: $CI_SERVER_FQDN/radiuss/radiuss-shared-ci/tuolumne-pipeline@2026.6.0 inputs: job_cmd: $JOB_CMD shared_alloc: $TUOLUMNE_SHARED_ALLOC diff --git a/.gitlab/custom-jobs.yml b/.gitlab/custom-jobs.yml index a2c04252..2cdf2e12 100644 --- a/.gitlab/custom-jobs.yml +++ b/.gitlab/custom-jobs.yml @@ -1,6 +1,6 @@ ############################################################################### -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################### diff --git a/.gitlab/custom-variables.yml b/.gitlab/custom-variables.yml index 903a1520..d51ddab0 100644 --- a/.gitlab/custom-variables.yml +++ b/.gitlab/custom-variables.yml @@ -1,6 +1,6 @@ ############################################################################### -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################### @@ -22,39 +22,39 @@ variables: # Note: we repeat the reservation, helpful when jobs are manually re-triggered. DANE_JOB_ALLOC: "--overlap --reservation=ci --nodes=1" # Project specific variants for dane - PROJECT_DANE_VARIANTS: "" + PROJECT_DANE_VARIANTS: " cxxstd=20" # Project specific deps for dane - PROJECT_DANE_DEPS: "^umpire~c~shared ^raja~examples~exercises~tests ^chai~shared~examples " + PROJECT_DANE_DEPS: "^chai~shared~examples ^raja~examples~exercises~tests ^umpire~c~shared ^fmt@12.1.0" # Matrix (SLURM) allocation settings - MATRIX_SHARED_ALLOC: "--exclusive --partition=pdebug --time=10 --nodes=1" + MATRIX_SHARED_ALLOC: "OFF" # Note: we repeat the reservation, helpful when jobs are manually re-triggered. - MATRIX_JOB_ALLOC: "--partition=pdebug --overlap --nodes=1" + MATRIX_JOB_ALLOC: "--partition=pci --time=10 --gpus=1" # Project specific variants for matrix - PROJECT_MATRIX_VARIANTS: "+cuda cuda_arch=75" + PROJECT_MATRIX_VARIANTS: " cxxstd=20 +cuda cuda_arch=90" # Project specific deps for matrix - PROJECT_MATRIX_DEPS: "^umpire~c~shared ^raja~examples~exercises~tests ^chai~shared~examples " + PROJECT_MATRIX_DEPS: "^chai~shared~examples ^raja~examples~exercises~tests ^umpire~c~shared ^fmt@12.1.0" # Corona (flux) allocation settings CORONA_SHARED_ALLOC: "--exclusive --time-limit=20m --nodes=1" CORONA_JOB_ALLOC: "--nodes=1 --begin-time=+5s" # Project specific variants for corona - PROJECT_CORONA_VARIANTS: "" + PROJECT_CORONA_VARIANTS: " cxxstd=20" # Project specific deps for corona - PROJECT_CORONA_DEPS: "^umpire~c~shared ^raja~examples~exercises~tests ^chai~shared~examples " + PROJECT_CORONA_DEPS: "^chai~shared~examples ^raja~examples~exercises~tests ^umpire~c~shared ^fmt@12.1.0" # Tioga (flux) allocation settings TIOGA_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=20m --nodes=1" TIOGA_JOB_ALLOC: "--nodes=1 --begin-time=+5s" # Project specific variants for tioga - PROJECT_TIOGA_VARIANTS: "" + PROJECT_TIOGA_VARIANTS: " cxxstd=20" # Project specific deps for tioga - PROJECT_TIOGA_DEPS: "^umpire~c~shared ^raja~examples~exercises~tests ^chai~shared~examples " + PROJECT_TIOGA_DEPS: "^chai~shared~examples ^raja~examples~exercises~tests ^umpire~c~shared ^fmt@12.1.0" # Tuolumne (flux) allocation settings TUOLUMNE_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=20m --nodes=1" TUOLUMNE_JOB_ALLOC: "--nodes=1 --begin-time=+5s" # Project specific variants for tuolumne - PROJECT_TUOLUMNE_VARIANTS: "" + PROJECT_TUOLUMNE_VARIANTS: " cxxstd=20" # Project specific deps for tuolumne - PROJECT_TUOLUMNE_DEPS: "^umpire~c~shared ^raja~examples~exercises~tests ^chai~shared~examples " + PROJECT_TUOLUMNE_DEPS: "^chai~shared~examples ^raja~examples~exercises~tests ^umpire~c~shared ^fmt@12.1.0" diff --git a/.gitlab/jobs/corona.yml b/.gitlab/jobs/corona.yml index cfe67ff6..dbfbbc01 100644 --- a/.gitlab/jobs/corona.yml +++ b/.gitlab/jobs/corona.yml @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/.gitlab/jobs/dane.yml b/.gitlab/jobs/dane.yml index 1fad0ce4..e05a4e83 100644 --- a/.gitlab/jobs/dane.yml +++ b/.gitlab/jobs/dane.yml @@ -1,6 +1,6 @@ ############################################################################### -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################### diff --git a/.gitlab/jobs/matrix.yml b/.gitlab/jobs/matrix.yml index 480d97c6..0637b1be 100644 --- a/.gitlab/jobs/matrix.yml +++ b/.gitlab/jobs/matrix.yml @@ -1,6 +1,6 @@ ############################################################################### -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################### diff --git a/.gitlab/jobs/tioga.yml b/.gitlab/jobs/tioga.yml index 208e1711..f8621be5 100644 --- a/.gitlab/jobs/tioga.yml +++ b/.gitlab/jobs/tioga.yml @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/.gitlab/jobs/tuolumne.yml b/.gitlab/jobs/tuolumne.yml index 0be6c7f1..dbe7ab19 100644 --- a/.gitlab/jobs/tuolumne.yml +++ b/.gitlab/jobs/tuolumne.yml @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/.uberenv_config.json b/.uberenv_config.json index ef48d326..f801759f 100644 --- a/.uberenv_config.json +++ b/.uberenv_config.json @@ -4,7 +4,7 @@ "package_final_phase": "initconfig", "package_source_dir": "../..", "spack_url": "https://github.com/spack/spack.git", -"spack_branch": "v1.0.2", +"spack_branch": "v1.1.1", "spack_configs_path": "scripts/radiuss-spack-configs", "spack_packages_path": ["scripts/radiuss-spack-configs/spack_repo/llnl_radiuss/packages", "scripts/spack_packages/spack_repo/llnl_care/packages"], "spack_setup_clingo": false diff --git a/CMakeLists.txt b/CMakeLists.txt index 940f8eaa..5e9c3805 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## @@ -9,7 +9,7 @@ # Set up CMake ########################################################################## -cmake_minimum_required(VERSION 3.23) +cmake_minimum_required(VERSION 3.24) cmake_policy(SET CMP0096 OLD) # Required when building Umpire submodule ########################################################################## @@ -18,7 +18,7 @@ cmake_policy(SET CMP0096 OLD) # Required when building Umpire submodule project(CARE LANGUAGES C CXX - VERSION 0.15.3) + VERSION 2026.07.0) include(${PROJECT_SOURCE_DIR}/cmake/Setup.cmake) diff --git a/COPYRIGHT b/COPYRIGHT index e24a3c0f..35b8e8bf 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,14 +1,44 @@ Intellectual Property Notice ------------------------------ -CARE is licensed under the BSD-3 license, -(BSD-3 or https://opensource.org/licenses/BSD-3-Clause). +This file is part of CARE. +For details, see https://github.com/llnl/CARE -See the LICENSE file for details. +CARE is produced at the Lawrence Livermore National Laboratory. +See NOTICE file. -Copyrights and patents in the CARE project are retained by contributors. No -copyright assignment is required to contribute to CARE. +Unlimited Open Source - BSD Distribution +LLNL-CODE-809741 +CARE licensed under the BSD 3-Clause license +(BSD-3-Clause or https://opensource.org/licenses/BSD-3-Clause). +See LICENSE file. + +Copyrights and patents in the CARE project are retained by contributors. +No copyright assignment is required to contribute to CARE. + +See https://github.com/llnl/CARE/contributors for the list of contributors. + +Additional BSD Notice + +1. This notice is required to be provided under our contract with the U.S. +Department of Energy (DOE). This work was produced at Lawrence Livermore +National Laboratory under Contract No. DE-AC52-07NA27344 with the DOE. + +2. Neither the United States Government nor Lawrence Livermore National +Security, LLC nor any of their employees, makes any warranty, express or +implied, or assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or process +disclosed, or represents that its use would not infringe privately-owned rights. + +3. Also, reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does not +necessarily constitute or imply its endorsement, recommendation, or favoring by +the United States Government or Lawrence Livermore National Security, LLC. The +views and opinions of authors expressed herein do not necessarily state or +reflect those of the United States Government or Lawrence Livermore National +Security, LLC, and shall not be used for advertising or product endorsement +purposes. SPDX usage ------------ diff --git a/LICENSE b/LICENSE index 0e7db4be..e009e0ed 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,7 @@ BSD 3-Clause License -Copyright (c) 2020-2025, Lawrence Livermore National Security, LLC. +Copyright (c) 2020-2026, Lawrence Livermore National Security, LLC and other CARE contributors. + All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/README.md b/README.md index 5a0e65e0..3bed7faf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [comment]: # (#################################################################) -[comment]: # (Copyright 2020-25, Lawrence Livermore National Security, LLC and CARE) -[comment]: # (project contributors. See the CARE LICENSE file for details.) +[comment]: # (Copyright Lawrence Livermore National Security, LLC and other CARE) +[comment]: # (contributors. See the CARE LICENSE and COPYRIGHT files for details.) [comment]: # [comment]: # (SPDX-License-Identifier: BSD-3-Clause) [comment]: # (#################################################################) @@ -33,8 +33,16 @@ By default, only the tests are built. Documentation, benchmarks, and examples ca License ======= -CARE is release under the BSD-3-Clause License. See the LICENSE and NOTICE files for more details. +CARE is licensed under the [BSD 3-Clause license](https://opensource.org/licenses/BSD-3-Clause). +Unlimited Open Source - BSD 3-clause Distribution SPDX-License-Identifier: BSD-3-Clause +`LLNL-CODE-809741` -LLNL-CODE-809741 +Copyrights and patents in the CARE project are retained by contributors. +No copyright assignment is required to contribute to CARE. + +For release details and restrictions, please see the information in the +following: +- [COPYRIGHT](./COPYRIGHT) +- [LICENSE](./LICENSE) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index bc074012..4440b34d 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,6 +1,6 @@ [comment]: # (#################################################################) -[comment]: # (Copyright 2020-25, Lawrence Livermore National Security, LLC and CARE) -[comment]: # (project contributors. See the CARE LICENSE file for details.) +[comment]: # (Copyright Lawrence Livermore National Security, LLC and other CARE) +[comment]: # (contributors. See the CARE LICENSE and COPYRIGHT files for details.) [comment]: # [comment]: # (SPDX-License-Identifier: BSD-3-Clause) [comment]: # (#################################################################) @@ -12,6 +12,33 @@ in this file. The format of this file is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). +## [Version 2026.07.0] - Release date 2026-08-11 + +### Added +- Add ATOMIC\_GENERIC and ATOMIC\_GENERIC\_WITH\_STOP for new generic atomic implementations in RAJA v2026.07.0. +- Added `sortKeyValueArrays` for simultaneously sorting two arrays. +- Added additional instantiations when configured with explicit template instantiations. + +### Changed +- Switched to date-based versioning scheme. +- C++20 or higher is required. +- ROCm 6 or higher is required. +- CUDA 12 or higher is required. +- CMake 3.24 or higher is required. +- Updated BLT to v0.7.2. +- Updated CHAI to v2026.07.0. +- Updated RAJA to v2026.07.0. +- Updated Umpire to v2026.07.1. + +### Fixed +- Added explicit `host_device_ptr` constructor for constructing with a size. Previously, an unexpected chain of implicit conversions would happen. +- Fixed bugs in GPU implementation of `KeyValueSorter::sortByKeyThenValue` +- Fixed inconsistency between sequential and parallel implementations of `IntersectKeyValueSorters`. +- Fixed some compiler warnings. + +### Removed +- Removed unnecessary dependency on the default GPU stream in the `LoopFuser`. + ## [Version 0.15.3] - Release date 2025-12-22 ### Added diff --git a/benchmarks/BenchmarkArrayView.cpp b/benchmarks/BenchmarkArrayView.cpp index 3b7c0c40..06388b9d 100644 --- a/benchmarks/BenchmarkArrayView.cpp +++ b/benchmarks/BenchmarkArrayView.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/benchmarks/BenchmarkForall.cpp b/benchmarks/BenchmarkForall.cpp index 25015c20..2145b3a7 100644 --- a/benchmarks/BenchmarkForall.cpp +++ b/benchmarks/BenchmarkForall.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/benchmarks/BenchmarkHostDeviceMap.cpp b/benchmarks/BenchmarkHostDeviceMap.cpp index 88a182e5..37438a16 100644 --- a/benchmarks/BenchmarkHostDeviceMap.cpp +++ b/benchmarks/BenchmarkHostDeviceMap.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/benchmarks/BenchmarkNumeric.cpp b/benchmarks/BenchmarkNumeric.cpp index 928bcf3f..1be8905e 100644 --- a/benchmarks/BenchmarkNumeric.cpp +++ b/benchmarks/BenchmarkNumeric.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index fc7c2524..cb40e84d 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/blt b/blt index e783e30f..f08f95e0 160000 --- a/blt +++ b/blt @@ -1 +1 @@ -Subproject commit e783e30f2823ee1a208f7f90741b41c1f5a08063 +Subproject commit f08f95e0f49b1d53db8be2dd577d1cdbfd9e9f90 diff --git a/cmake/Setup.cmake b/cmake/Setup.cmake index a7a023ba..e9437eab 100644 --- a/cmake/Setup.cmake +++ b/cmake/Setup.cmake @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/cmake/SetupBLTWrapper.cmake b/cmake/SetupBLTWrapper.cmake index 0294b16d..a2839b0b 100644 --- a/cmake/SetupBLTWrapper.cmake +++ b/cmake/SetupBLTWrapper.cmake @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## @@ -50,12 +50,13 @@ if(NOT BLT_LOADED) option(ENABLE_FORTRAN "Enables Fortran compiler support" OFF) - set(BLT_CXX_STD "c++17" CACHE STRING "Set the c++ standard to use") + set(BLT_CXX_STD "c++20" CACHE STRING "Set the c++ standard to use") if(("${BLT_CXX_STD}" STREQUAL "c++98") OR ("${BLT_CXX_STD}" STREQUAL "c++11") OR - ("${BLT_CXX_STD}" STREQUAL "c++14")) - message(FATAL_ERROR "CARE requires a minimum C++ standard of c++17. Please set BLT_CXX_STD accordingly.") + ("${BLT_CXX_STD}" STREQUAL "c++14") OR + ("${BLT_CXX_STD}" STREQUAL "c++17")) + message(FATAL_ERROR "CARE requires a minimum C++ standard of c++20. Please set BLT_CXX_STD accordingly.") endif() include(${BLT_SOURCE_DIR}/SetupBLT.cmake) diff --git a/cmake/SetupCompilerOptions.cmake b/cmake/SetupCompilerOptions.cmake index 95776ce2..6cce42e2 100644 --- a/cmake/SetupCompilerOptions.cmake +++ b/cmake/SetupCompilerOptions.cmake @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/cmake/SetupDependencies.cmake b/cmake/SetupDependencies.cmake index 7a80b448..cfd551dc 100644 --- a/cmake/SetupDependencies.cmake +++ b/cmake/SetupDependencies.cmake @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/cmake/SetupMacros.cmake b/cmake/SetupMacros.cmake index cf811b39..2da6d9bf 100644 --- a/cmake/SetupMacros.cmake +++ b/cmake/SetupMacros.cmake @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/cmake/SetupOptions.cmake b/cmake/SetupOptions.cmake index 07ed16cd..3331f0e5 100644 --- a/cmake/SetupOptions.cmake +++ b/cmake/SetupOptions.cmake @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/cmake/care-config.cmake.in b/cmake/care-config.cmake.in index 4adcb845..df813694 100644 --- a/cmake/care-config.cmake.in +++ b/cmake/care-config.cmake.in @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/cmake/modules/FindCUB.cmake b/cmake/modules/FindCUB.cmake index b8406105..379c5c77 100644 --- a/cmake/modules/FindCUB.cmake +++ b/cmake/modules/FindCUB.cmake @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/debug/gdb/care-gdb.py b/debug/gdb/care-gdb.py index cf778990..cbf05524 100644 --- a/debug/gdb/care-gdb.py +++ b/debug/gdb/care-gdb.py @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/debug/totalview/host_device_ptr.tvd b/debug/totalview/host_device_ptr.tvd index f91c21d6..8b980280 100644 --- a/debug/totalview/host_device_ptr.tvd +++ b/debug/totalview/host_device_ptr.tvd @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 7680d234..f6bcbbf9 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/doxygen/CMakeLists.txt b/docs/doxygen/CMakeLists.txt index 1ecb86ff..35540016 100644 --- a/docs/doxygen/CMakeLists.txt +++ b/docs/doxygen/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/doxygen/Doxyfile.in b/docs/doxygen/Doxyfile.in index 7a03c11d..348135d3 100644 --- a/docs/doxygen/Doxyfile.in +++ b/docs/doxygen/Doxyfile.in @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/sphinx/CMakeLists.txt b/docs/sphinx/CMakeLists.txt index 363b5b6f..6b8c8a34 100644 --- a/docs/sphinx/CMakeLists.txt +++ b/docs/sphinx/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/sphinx/conf.py b/docs/sphinx/conf.py index af9955d8..5ff01eff 100644 --- a/docs/sphinx/conf.py +++ b/docs/sphinx/conf.py @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## @@ -48,16 +48,16 @@ # General information about the project. project = u'CARE' -copyright = u'2020-2025, Peter Robinson, Ben Liu, Alan Dayton, Arlie Capps, Al Nichols' +copyright = u'2020-2026, Lawrence Livermore National Security, LLC and other CARE contributors' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = '0.15' +version = '2026.07' # The full version, including alpha/beta/rc tags. -release = '0.15.3' +release = '2026.07.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/sphinx/data_structures.rst b/docs/sphinx/data_structures.rst index 54e4d0ba..87d6fd07 100644 --- a/docs/sphinx/data_structures.rst +++ b/docs/sphinx/data_structures.rst @@ -1,6 +1,6 @@ .. ############################################################################## - # Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE - # project contributors. See the CARE LICENSE file for details. + # Copyright (c) Lawrence Livermore National Security, LLC and other CARE + # contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/sphinx/index.rst b/docs/sphinx/index.rst index 259c76b8..0398ba45 100644 --- a/docs/sphinx/index.rst +++ b/docs/sphinx/index.rst @@ -1,6 +1,6 @@ .. ############################################################################## - # Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE - # project contributors. See the CARE LICENSE file for details. + # Copyright (c) Lawrence Livermore National Security, LLC and other CARE + # contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/sphinx/infrastructure.rst b/docs/sphinx/infrastructure.rst index 1db64ea5..12478ae1 100644 --- a/docs/sphinx/infrastructure.rst +++ b/docs/sphinx/infrastructure.rst @@ -1,6 +1,6 @@ .. ############################################################################## - # Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE - # project contributors. See the CARE LICENSE file for details. + # Copyright (c) Lawrence Livermore National Security, LLC and other CARE + # contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/sphinx/install.rst b/docs/sphinx/install.rst index ad03f727..a3460e33 100644 --- a/docs/sphinx/install.rst +++ b/docs/sphinx/install.rst @@ -1,6 +1,6 @@ .. ############################################################################## - # Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE - # project contributors. See the CARE LICENSE file for details. + # Copyright (c) Lawrence Livermore National Security, LLC and other CARE + # contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/sphinx/loop_fuser.rst b/docs/sphinx/loop_fuser.rst index 893b2182..870a65ad 100644 --- a/docs/sphinx/loop_fuser.rst +++ b/docs/sphinx/loop_fuser.rst @@ -1,6 +1,6 @@ .. ############################################################################## - # Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE - # project contributors. See the CARE LICENSE file for details. + # Copyright (c) Lawrence Livermore National Security, LLC and other CARE + # contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/docs/sphinx/tutorial.rst b/docs/sphinx/tutorial.rst index 16bc229d..16d71271 100644 --- a/docs/sphinx/tutorial.rst +++ b/docs/sphinx/tutorial.rst @@ -1,6 +1,6 @@ .. ############################################################################## - # Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE - # project contributors. See the CARE LICENSE file for details. + # Copyright (c) Lawrence Livermore National Security, LLC and other CARE + # contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index d0bb356f..fd0c836c 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/examples/DeviceASAN.cpp b/examples/DeviceASAN.cpp index daaed196..9d202e0c 100644 --- a/examples/DeviceASAN.cpp +++ b/examples/DeviceASAN.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// @@ -21,7 +21,7 @@ int main(int, char**) { // // ==4084715==ERROR: AddressSanitizer: heap-buffer-overflow on amdgpu device 0 at pc 0x153d3cdd3db8 // READ of size 4 in workgroup id (3906,0,0) - // #0 0x153d3cdd3db8 in main::'lambda0'(int)::operator()(int) const at /g/g17/dayton8/ale3d/github_care_4/examples/DeviceASAN.cpp:26:14 + // #0 0x153d3cdd3db8 in main::'lambda0'(int)::operator()(int) const at care/examples/DeviceASAN.cpp:26:14 CARE_STREAM_LOOP(i, 0, size + 1) { data[i]++; } CARE_STREAM_LOOP_END diff --git a/examples/RaceConditions.cpp b/examples/RaceConditions.cpp index 4859a064..67bd6d1f 100644 --- a/examples/RaceConditions.cpp +++ b/examples/RaceConditions.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/examples/ScanLoop.cpp b/examples/ScanLoop.cpp index b5e2d895..2469e6f5 100644 --- a/examples/ScanLoop.cpp +++ b/examples/ScanLoop.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/examples/StreamLoop.cpp b/examples/StreamLoop.cpp index 97456232..bb0e1786 100644 --- a/examples/StreamLoop.cpp +++ b/examples/StreamLoop.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/host-configs/lc/toss_4_x86_64_ib/clang.cmake b/host-configs/lc/toss_4_x86_64_ib/clang.cmake index 19c42362..500beae6 100644 --- a/host-configs/lc/toss_4_x86_64_ib/clang.cmake +++ b/host-configs/lc/toss_4_x86_64_ib/clang.cmake @@ -1,11 +1,11 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## -set(COMPILER_BASE "/usr/tce/packages/clang/clang-14.0.6-magic" CACHE PATH "") +set(COMPILER_BASE "/usr/tce/packages/clang/clang-19.1.3-magic" CACHE PATH "") set(CMAKE_C_COMPILER "${COMPILER_BASE}/bin/clang" CACHE PATH "") set(CMAKE_CXX_COMPILER "${COMPILER_BASE}/bin/clang++" CACHE PATH "") diff --git a/host-configs/lc/toss_4_x86_64_ib/clang_tsan.cmake b/host-configs/lc/toss_4_x86_64_ib/clang_tsan.cmake index 05654970..d161e589 100644 --- a/host-configs/lc/toss_4_x86_64_ib/clang_tsan.cmake +++ b/host-configs/lc/toss_4_x86_64_ib/clang_tsan.cmake @@ -1,18 +1,19 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## -set(COMPILER_BASE "/usr/tce/packages/clang/clang-14.0.6-magic" CACHE PATH "") +set(COMPILER_BASE "/usr/tce/packages/clang/clang-19.1.3-magic" CACHE PATH "") set(CMAKE_C_COMPILER "${COMPILER_BASE}/bin/clang" CACHE PATH "") set(CMAKE_CXX_COMPILER "${COMPILER_BASE}/bin/clang++" CACHE PATH "") set(GCC_HOME "/usr/tce/packages/gcc/gcc-13.3.1-magic" CACHE PATH "") -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --gcc-toolchain=${GCC_HOME} -fsanitize=thread -g" CACHE STRING "") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=${GCC_HOME} -fsanitize=thread -g" CACHE STRING "") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --gcc-toolchain=${GCC_HOME} -fsanitize=thread" CACHE STRING "") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=${GCC_HOME} -fsanitize=thread" CACHE STRING "") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread" CACHE STRING "") +set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "") set(ENABLE_OPENMP ON CACHE BOOL "") set(BLT_EXPORT_THIRDPARTY OFF CACHE BOOL "") diff --git a/host-configs/lc/toss_4_x86_64_ib/clang_ubsan.cmake b/host-configs/lc/toss_4_x86_64_ib/clang_ubsan.cmake new file mode 100644 index 00000000..a939530f --- /dev/null +++ b/host-configs/lc/toss_4_x86_64_ib/clang_ubsan.cmake @@ -0,0 +1,19 @@ +############################################################################## +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. +# +# SPDX-License-Identifier: BSD-3-Clause +############################################################################## + +set(COMPILER_BASE "/usr/tce/packages/clang/clang-19.1.3-magic" CACHE PATH "") +set(CMAKE_C_COMPILER "${COMPILER_BASE}/bin/clang" CACHE PATH "") +set(CMAKE_CXX_COMPILER "${COMPILER_BASE}/bin/clang++" CACHE PATH "") + +set(GCC_HOME "/usr/tce/packages/gcc/gcc-13.3.1-magic" CACHE PATH "") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --gcc-toolchain=${GCC_HOME} -fsanitize=undefined -fno-omit-frame-pointer" CACHE STRING "") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=${GCC_HOME} -fsanitize=undefined -fno-omit-frame-pointer" CACHE STRING "") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined" CACHE STRING "") +set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "") + +set(BLT_EXPORT_THIRDPARTY OFF CACHE BOOL "") + diff --git a/host-configs/lc/toss_4_x86_64_ib/intel.cmake b/host-configs/lc/toss_4_x86_64_ib/intel.cmake index beac3364..d9c229d8 100644 --- a/host-configs/lc/toss_4_x86_64_ib/intel.cmake +++ b/host-configs/lc/toss_4_x86_64_ib/intel.cmake @@ -1,11 +1,11 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## -set(COMPILER_BASE "/usr/tce/packages/intel/intel-2022.1.0-magic" CACHE PATH "") +set(COMPILER_BASE "/usr/tce/packages/intel/intel-2025.2.0-magic" CACHE PATH "") set(CMAKE_C_COMPILER "${COMPILER_BASE}/bin/icx" CACHE PATH "") set(CMAKE_CXX_COMPILER "${COMPILER_BASE}/bin/icpx" CACHE PATH "") diff --git a/host-configs/lc/toss_4_x86_64_ib/nvcc_clang.cmake b/host-configs/lc/toss_4_x86_64_ib/nvcc_clang.cmake index 6c018c2b..6a3a9806 100644 --- a/host-configs/lc/toss_4_x86_64_ib/nvcc_clang.cmake +++ b/host-configs/lc/toss_4_x86_64_ib/nvcc_clang.cmake @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## @@ -10,7 +10,7 @@ set(GCC_VER "13.3.1" CACHE STRING "") set(GCC_DIR "/usr/tce/packages/gcc/gcc-${GCC_VER}-magic" CACHE PATH "") # Use clang toolchain for host code compilers -set(CLANG_VER "14.0.6" CACHE STRING "") +set(CLANG_VER "19.1.3" CACHE STRING "") set(CLANG_DIR "/usr/tce/packages/clang/clang-${CLANG_VER}-magic" CACHE PATH "") set(CMAKE_C_COMPILER "${CLANG_DIR}/bin/clang" CACHE PATH "") diff --git a/host-configs/lc/toss_4_x86_64_ib_cray/amdclang.cmake b/host-configs/lc/toss_4_x86_64_ib_cray/amdclang.cmake index 1687b7dd..ac4bbafe 100644 --- a/host-configs/lc/toss_4_x86_64_ib_cray/amdclang.cmake +++ b/host-configs/lc/toss_4_x86_64_ib_cray/amdclang.cmake @@ -1,11 +1,11 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## -set(ROCM_VER "6.4.1" CACHE STRING "") +set(ROCM_VER "6.4.3" CACHE STRING "") set(ROCM_PATH "/usr/tce/packages/rocmcc/rocmcc-${ROCM_VER}-magic" CACHE PATH "") set(COMPILER_BASE "/usr/tce/packages/rocmcc/rocmcc-${ROCM_VER}-magic" CACHE PATH "") set(CMAKE_C_COMPILER "${COMPILER_BASE}/bin/amdclang" CACHE PATH "") diff --git a/reproducers/CMakeLists.txt b/reproducers/CMakeLists.txt index ac7f1768..c6aea565 100644 --- a/reproducers/CMakeLists.txt +++ b/reproducers/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/reproducers/ReproducerManagedPtr.cpp b/reproducers/ReproducerManagedPtr.cpp index 064cceeb..f6c1cd96 100644 --- a/reproducers/ReproducerManagedPtr.cpp +++ b/reproducers/ReproducerManagedPtr.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/scripts/check-license-info.sh b/scripts/check-license-info.sh index f30cf8ed..fb5ddc0c 100755 --- a/scripts/check-license-info.sh +++ b/scripts/check-license-info.sh @@ -1,7 +1,8 @@ #!/usr/bin/env zsh + ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## @@ -15,10 +16,9 @@ RED="\033[1;31m" GREEN="\033[1;32m" NOCOLOR="\033[0m" -files_no_license=$(grep -rL "Copyright.*2020-25, Lawrence Livermore National Security, LLC and CARE" . \ +files_no_license=$(grep -rL "Copyright (c) Lawrence Livermore National Security, LLC and other CARE" . \ --exclude-dir=.git \ --exclude-dir=blt \ - --exclude-dir=cub \ --exclude-dir=umpire \ --exclude-dir=raja \ --exclude-dir=chai \ @@ -26,21 +26,20 @@ files_no_license=$(grep -rL "Copyright.*2020-25, Lawrence Livermore National Sec --exclude-dir=uberenv \ --exclude-dir=build \ --exclude=\*.swp \ - --exclude=ci.yml \ - --exclude=.gitignore \ --exclude=.gitmodules \ --exclude=LICENSE \ --exclude=COPYRIGHT \ --exclude=NOTICE \ + --exclude=README.md \ + --exclude=RELEASE_NOTES.md \ --exclude=\*.natvis \ --exclude=repo.yaml \ --exclude=package.py \ --exclude=.uberenv_config.json) -files_no_license+=$(grep -rL "project contributors. See the CARE LICENSE file for details." . \ +files_no_license+=$(grep -rL "contributors. See the CARE LICENSE and COPYRIGHT files for details." . \ --exclude-dir=.git \ --exclude-dir=blt \ - --exclude-dir=cub \ --exclude-dir=umpire \ --exclude-dir=raja \ --exclude-dir=chai \ @@ -48,8 +47,6 @@ files_no_license+=$(grep -rL "project contributors. See the CARE LICENSE file fo --exclude-dir=uberenv \ --exclude-dir=build \ --exclude=\*.swp \ - --exclude=ci.yml \ - --exclude=.gitignore \ --exclude=.gitmodules \ --exclude=LICENSE \ --exclude=COPYRIGHT \ @@ -62,7 +59,6 @@ files_no_license+=$(grep -rL "project contributors. See the CARE LICENSE file fo files_no_license+=$(grep -rL "SPDX-License-Identifier: BSD-3-Clause" . \ --exclude-dir=.git \ --exclude-dir=blt \ - --exclude-dir=cub \ --exclude-dir=umpire \ --exclude-dir=raja \ --exclude-dir=chai \ @@ -70,8 +66,6 @@ files_no_license+=$(grep -rL "SPDX-License-Identifier: BSD-3-Clause" . \ --exclude-dir=uberenv \ --exclude-dir=build \ --exclude=\*.swp \ - --exclude=ci.yml \ - --exclude=.gitignore \ --exclude=.gitmodules \ --exclude=LICENSE \ --exclude=COPYRIGHT \ @@ -82,10 +76,10 @@ files_no_license+=$(grep -rL "SPDX-License-Identifier: BSD-3-Clause" . \ --exclude=.uberenv_config.json) if [ $files_no_license ]; then - print "${RED} [!] Some files are missing license text:${NOCOLOR}" + print "${RED}[!] Some files are missing license text:${NOCOLOR}" echo "${files_no_license}" exit 255 else - print "${GREEN} [Ok] All files have required license info.${NOCOLOR}" + print "${GREEN}[Ok] All files have required license info.${NOCOLOR}" exit 0 fi diff --git a/scripts/gitlab/build_and_test.sh b/scripts/gitlab/build_and_test.sh index 16de843b..4df6f2d1 100755 --- a/scripts/gitlab/build_and_test.sh +++ b/scripts/gitlab/build_and_test.sh @@ -7,15 +7,31 @@ then fi ############################################################################### -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################### +# Navigation: +# - VARIABLES +# - HELPER FUNCTIONS +# - SETUP +# - BUILD DEPENDENCIES +# - HOST CONFIG / CMAKE CACHE FILES +# - BUILD PROJECT +# - TEST PROJECT +# - CLEANUP + +############################################################################### +# VARIABLES +############################################################################### + set -o errexit set -o nounset +exec 2>&1 + option=${1:-""} hostname="$(hostname)" truehostname=${hostname//[0-9]/} @@ -37,12 +53,157 @@ ci_registry_image=${CI_REGISTRY_IMAGE:-"czregistry.llnl.gov:5050/radiuss/care"} export ci_registry_user=${CI_REGISTRY_USER:-"${USER}"} export ci_registry_token=${CI_JOB_TOKEN:-"${registry_token}"} -timed_message () +############################################################################### +# HELPER FUNCTIONS +############################################################################### + +# Helper function to print errors in red +print_error () +{ + local error_msg="${1}" + echo -e "\e[31m[Error]: ${error_msg}\e[0m" +} + +# Helper function to print warnings in gray +print_warning () { - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - echo "~ $(date --rfc-3339=seconds) ~ ${1}" - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + local warning_msg="${1}" + echo -e "\e[1;30m[Warning]: ${warning_msg}\e[0m" } + +# Helper function to print information +print_info () +{ + local info_msg="${1}" + echo -e "[Information]: ${info_msg}" +} + +# Portable UTC timestamp formatter for epoch seconds. +format_utc_timestamp () +{ + local timestamp="${1}" + # BSD/macOS date supports epoch conversion via: date -r + if date -u -r "${timestamp}" "+%Y-%m-%d %H:%M:%S UTC" >/dev/null 2>&1 + then + date -u -r "${timestamp}" "+%Y-%m-%d %H:%M:%S UTC" + else + # GNU date supports epoch conversion via: date -d "@" + date -u -d "@${timestamp}" "+%Y-%m-%d %H:%M:%S UTC" + fi +} + +# Portable elapsed time formatter (HH:MM:SS). +format_elapsed_hms () +{ + local elapsed="${1}" + printf '%02d:%02d:%02d' $((elapsed / 3600)) $(((elapsed % 3600) / 60)) $((elapsed % 60)) +} + +# Track script start time for elapsed time calculations +script_start_time=$(date +%s) + +# Storage for section start times (supports nesting) +declare -A section_start_times + +# Section stack for tracking nested sections +section_id_stack=() +section_counter=0 +section_indent="" + +# GitLab CI collapsible section helpers with nesting support +section_start () +{ + local section_name="${1}" + local section_title="${2}" + local section_state="${3:-""}" + + local collapsed="false" + if [[ "${section_state}" == "collapsed" ]] + then + collapsed="true" + fi + + # Generate unique section ID + section_counter=$((section_counter + 1)) + local section_id="${section_name}_${section_counter}" + + local timestamp=$(date +%s) + local current_time=$(format_utc_timestamp "${timestamp}") + local total_elapsed=$((timestamp - script_start_time)) + local total_elapsed_formatted=$(format_elapsed_hms "${total_elapsed}") + + # Store section start time for later calculation + section_start_times[${section_id}]=${timestamp} + + # Push section ID onto stack + section_id_stack+=("${section_id}") + + echo -e "\e[1;30m${section_indent}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\e[0m" + echo -e "\e[1;30m${section_indent}~ TIME | TOTAL | SECTION \e[0m" + echo -e "\e[1;30m${section_indent}~ ${current_time} | ${total_elapsed_formatted} | ${section_title}\e[0m" + echo -e "\e[0Ksection_start:${timestamp}:${section_id}[collapsed=${collapsed}]\r\e[0K${section_indent}~ ${section_title}" + + # Increase indentation for nested sections + section_indent="${section_indent} " +} + +section_end () +{ + # Pop section ID from stack + if [[ ${#section_id_stack[@]} -eq 0 ]]; then + print_warning "section_end called with empty stack" + return 1 + fi + + # Decrease indentation before displaying + section_indent="${section_indent% }" + + local stack_index=$((${#section_id_stack[@]} - 1)) + local section_id="${section_id_stack[$stack_index]}" + unset section_id_stack[$stack_index] + + local timestamp=$(date +%s) + local current_time=$(format_utc_timestamp "${timestamp}") + local total_elapsed=$((timestamp - script_start_time)) + local total_elapsed_formatted=$(format_elapsed_hms "${total_elapsed}") + + # Calculate section elapsed time + local section_start=${section_start_times[${section_id}]:-${timestamp}} + local section_elapsed=$((timestamp - section_start)) + local section_elapsed_formatted=$(format_elapsed_hms "${section_elapsed}") + + echo -e "\e[0Ksection_end:${timestamp}:${section_id}\r\e[0K\e[0m" + echo -e "\e[1;30m${section_indent}~ ${current_time} | ${total_elapsed_formatted} | ${section_elapsed_formatted}\e[0m" + echo -e "\e[1;30m${section_indent}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\e[0m" + + # Clean up stored time + unset section_start_times[${section_id}] +} + +# For convenience, a helper function to run a command within a section and handle errors +run_section () +{ + local id="$1" + local title="$2" + local collapsed="$3" + local err_msg="$4" + local status=0 + shift 4 + + section_start "$id" "$title" "$collapsed" + if "$@"; then + section_end + else + status=$? + section_end + print_error "$err_msg" + exit $status + fi +} + +############################################################################### +# SETUP +############################################################################### camp_version=${UPDATE_CAMP:-""} raja_version=${UPDATE_RAJA:-""} umpire_version=${UPDATE_UMPIRE:-""} @@ -50,12 +211,10 @@ chai_version=${UPDATE_CHAI:-""} if [[ ${debug_mode} == true ]] then - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - echo "~~~~~ Debug mode:" - echo "~~~~~ - Spack debug mode." - echo "~~~~~ - Deactivated shared memory." - echo "~~~~~ - Do not push to buildcache." - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + print_info "Debug mode:" + print_info "- Spack debug mode." + print_info "- Deactivated shared memory." + print_info "- Do not push to buildcache." use_dev_shm=false spack_debug=true push_to_registry=false @@ -63,7 +222,7 @@ fi if [[ -n ${module_list} ]] then - timed_message "Modules to load: ${module_list}" + print_info "Loading modules: ${module_list}" module load ${module_list} fi @@ -86,28 +245,30 @@ else prefix="${project_dir}/../spack-and-build-root" fi -echo "Creating directory ${prefix}" -echo "project_dir: ${project_dir}" +print_info "Creating directory ${prefix}" +print_info "project_dir: ${project_dir}" mkdir -p ${prefix} spack_cmd="${prefix}/spack/bin/spack" spack_env_path="${prefix}/spack_env" -uberenv_cmd="./scripts/uberenv/uberenv.py" +uberenv_cmd="${project_dir}/scripts/uberenv/uberenv.py" if [[ ${spack_debug} == true ]] then spack_cmd="${spack_cmd} --debug --stacktrace" uberenv_cmd="${uberenv_cmd} --spack-debug" fi -# Dependencies +############################################################################### +# BUILD DEPENDENCIES +############################################################################### if [[ "${option}" != "--build-only" && "${option}" != "--test-only" ]] then - timed_message "Building dependencies" + section_start "dependencies" "Building Dependencies" if [[ -z ${spec} ]] then - echo "[Error]: SPEC is undefined, aborting..." + section_end ; print_error "SPEC is undefined, aborting..." exit 1 fi @@ -115,22 +276,22 @@ then if [[ -n ${camp_version} ]] then - extra_deps="${extra_deps} ^camp@${camp_version}" + extra_deps="${extra_deps} ^camp@git.${camp_version}=main" fi if [[ -n ${umpire_version} ]] then - extra_deps="${extra_deps} ^umpire@${umpire_version}" + extra_deps="${extra_deps} ^umpire@git.${umpire_version}=develop" fi if [[ -n ${raja_version} ]] then - extra_deps="${extra_deps} ^raja@${raja_version}" + extra_deps="${extra_deps} ^raja@git.${raja_version}=develop" fi if [[ -n ${chai_version} ]] then - extra_deps="${extra_deps} ^chai@${chai_version}" + extra_deps="${extra_deps} ^chai@git.${chai_version}=develop" fi [[ -n ${extra_deps} ]] && spec="${spec} ${extra_deps}" @@ -146,45 +307,51 @@ then mkdir -p ${spack_user_cache} # generate cmake cache file with uberenv and radiuss spack package - timed_message "Spack setup and environment" - ${uberenv_cmd} --setup-and-env-only --spec="${spec}" ${prefix_opt} + run_section "spack_setup" "Spack setup and environment" "collapsed" \ + "Spack environment setup failed (Uberenv)" \ + ${uberenv_cmd} --setup-and-env-only --spec="${spec}" ${prefix_opt} if [[ -n ${ci_registry_token} ]] then - timed_message "GitLab registry as Spack Buildcache" - ${spack_cmd} -D ${spack_env_path} mirror add --unsigned --oci-username-variable ci_registry_user --oci-password-variable ci_registry_token gitlab_ci oci://${ci_registry_image} + run_section "registry_setup" "GitLab registry as Spack Buildcache" "collapsed" \ + "Adding gitlab registry to spack environment failed" \ + ${spack_cmd} -D ${spack_env_path} mirror add --unsigned --oci-username-variable ci_registry_user --oci-password-variable ci_registry_token gitlab_ci oci://${ci_registry_image} fi - timed_message "Spack build of dependencies" - ${uberenv_cmd} --skip-setup-and-env --spec="${spec}" ${prefix_opt} + run_section "spack_build" "Spack build of dependencies" "collapsed" \ + "Spack build of dependencies failed (Uberenv)" \ + ${uberenv_cmd} --skip-setup-and-env --spec="${spec}" ${prefix_opt} if [[ -n ${ci_registry_token} && ${push_to_registry} == true ]] then - timed_message "Push dependencies to buildcache" - ${spack_cmd} -D ${spack_env_path} buildcache push --only dependencies gitlab_ci + run_section "buildcache_push" "Push dependencies to buildcache" "collapsed" \ + "Pushing dependencies to gitlab registry failed" \ + ${spack_cmd} -D ${spack_env_path} buildcache push --only dependencies gitlab_ci fi - timed_message "Dependencies built" + section_end fi -# Find cmake cache file (hostconfig) +############################################################################### +# HOST CONFIG / CMAKE CACHE FILE +############################################################################### if [[ -z ${hostconfig} ]] then # If no host config file was provided, we assume it was generated. # This means we are looking of a unique one in project dir. - hostconfigs=( $( ls "${project_dir}/"*.cmake ) ) + shopt -s nullglob; hostconfigs=( "${project_dir}"/*.cmake ); shopt -u nullglob if [[ ${#hostconfigs[@]} == 1 ]] then hostconfig_path=${hostconfigs[0]} elif [[ ${#hostconfigs[@]} == 0 ]] then - echo "[Error]: No result for: ${project_dir}/*.cmake" - echo "[Error]: Spack generated host-config not found." + print_error "No result for: ${project_dir}/*.cmake" + print_error "Spack generated host-config not found." exit 1 else - echo "[Error]: More than one result for: ${project_dir}/*.cmake" - echo "[Error]: ${hostconfigs[@]}" - echo "[Error]: Please specify one with HOST_CONFIG variable" + print_error "More than one result for: ${project_dir}/*.cmake" + print_error "${hostconfigs[@]}" + print_error "Please specify one with HOST_CONFIG variable" exit 1 fi else @@ -193,8 +360,11 @@ else fi hostconfig=$(basename ${hostconfig_path}) -echo "[Information]: Found hostconfig ${hostconfig_path}" +print_info "Found hostconfig ${hostconfig_path}" +############################################################################### +# BUILD PROJECT +############################################################################### # Build Directory # When using /dev/shm, we use prefix for both spack builds and source build, unless BUILD_ROOT was defined build_root=${BUILD_ROOT:-"${prefix}"} @@ -202,23 +372,20 @@ build_root=${BUILD_ROOT:-"${prefix}"} build_dir="${build_root}/build_${hostconfig//.cmake/}" install_dir="${build_root}/install_${hostconfig//.cmake/}" -cmake_exe=`grep 'CMake executable' ${hostconfig_path} | cut -d ':' -f 2 | xargs` +cmake_exe=$(grep 'CMake executable' ${hostconfig_path} | cut -d ':' -f 2 | xargs 2>/dev/null) -# Build if [[ "${option}" != "--deps-only" && "${option}" != "--test-only" ]] then - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - echo "~~~~~ Prefix: ${prefix}" - echo "~~~~~ Host-config: ${hostconfig_path}" - echo "~~~~~ Build Dir: ${build_dir}" - echo "~~~~~ Project Dir: ${project_dir}" - echo "~~~~~ Install Dir: ${install_dir}" - echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - echo "" - timed_message "Cleaning working directory" + print_info "Prefix ${prefix}" + print_info "Host-config ${hostconfig_path}" + print_info "Build Dir ${build_dir}" + print_info "Project Dir ${project_dir}" + print_info "Install Dir ${install_dir}" + + section_start "clean" "Cleaning working directory" "collapsed" # Map CPU core allocations - declare -A core_counts=(["lassen"]=40 ["poodle"]=28 ["dane"]=28 ["corona"]=32 ["rzansel"]=48 ["tioga"]=32 ["tuolumne"]=48 ["matrix"]=48) + declare -A core_counts=(["dane"]=28 ["matrix"]=28 ["corona"]=32 ["tioga"]=32 ["tuolumne"]=48) # If building, then delete everything first # NOTE: 'cmake --build . -j core_counts' attempts to reduce individual build resources. @@ -226,8 +393,8 @@ then # use max cores. rm -rf ${build_dir} 2>/dev/null mkdir -p ${build_dir} && cd ${build_dir} + section_end - timed_message "Building CARE" # We set the MPI tests command to allow overlapping. # Shared allocation: Allows build_and_test.sh to run within a sub-allocation (see CI config). # Use /dev/shm: Prevent MPI tests from running on a node where the build dir doesn't exist. @@ -237,63 +404,105 @@ then cmake_options="-DBLT_MPI_COMMAND_APPEND:STRING=--overlap" fi - $cmake_exe \ + section_start "cmake_config" "CMake Configuration" "collapsed" + if $cmake_exe \ -C ${hostconfig_path} \ ${cmake_options} \ -DCMAKE_INSTALL_PREFIX=${install_dir} \ ${project_dir} - if ! $cmake_exe --build . -j ${core_counts[$truehostname]} then - echo "[Error]: Compilation failed, building with verbose output..." - timed_message "Re-building with --verbose" - $cmake_exe --build . --verbose -j 1 + section_end else - timed_message "Installing" - $cmake_exe --install . + status=$? + section_end ; print_error "CMake configuration failed, dumping output..." + + $cmake_exe \ + -C ${hostconfig_path} \ + ${cmake_options} \ + -DCMAKE_INSTALL_PREFIX=${install_dir} \ + ${project_dir} --debug-output --trace-expand + + exit ${status} fi - timed_message "CARE built and installed" + section_start "build" "Building CARE" "collapsed" + if $cmake_exe --build . -j ${core_counts[$truehostname]} + then + section_end + else + status=$? + section_end ; print_error "Compilation failed, building with verbose output..." + + section_start "build_verbose" "Verbose Rebuild" + $cmake_exe --build . --verbose -j 1 + section_end + + exit ${status} + fi + + run_section "install" "Installing CARE" "collapsed" \ + "Installation failed" \ + $cmake_exe --install . fi -# Test +############################################################################### +# TEST PROJECT +############################################################################### if [[ "${option}" != "--build-only" ]] && grep -q -i "ENABLE_TESTS.*ON" ${hostconfig_path} then if [[ ! -d ${build_dir} ]] then - echo "[Error]: Build directory not found : ${build_dir}" && exit 1 + print_error "Build directory not found : ${build_dir}" + exit 1 fi cd ${build_dir} - timed_message "Testing CARE" + section_start "tests" "Running Tests" "collapsed" ctest --output-on-failure --no-compress-output -T test -VV 2>&1 | tee tests_output.txt + ctest_status=${PIPESTATUS[0]} no_test_str="No tests were found!!!" if [[ "$(tail -n 1 tests_output.txt)" == "${no_test_str}" ]] then - echo "[Error]: No tests were found" && exit 1 + section_end ; print_error "No tests were found (ctest status: ${ctest_status})" + exit 1 fi - timed_message "Preparing tests xml reports for export" tree Testing xsltproc -o junit.xml ${project_dir}/scripts/radiuss-spack-configs/utilities/ctest-to-junit.xsl Testing/*/Test.xml mv junit.xml ${project_dir}/junit.xml if grep -q "Errors while running CTest" ./tests_output.txt then - echo "[Error]: Failure(s) while running CTest" && exit 1 + section_end ; print_error "Failure(s) while running CTest (ctest status: ${ctest_status})" + exit 1 fi if [[ ! -d ${install_dir} ]] then - echo "[Error]: Install directory not found : ${install_dir}" && exit 1 + section_end ; print_error "Install directory not found : ${install_dir}" + exit 1 fi - timed_message "CARE tests completed" + section_end fi -timed_message "Cleaning up" -make clean +############################################################################### +# CLEANUP +############################################################################### + +section_start "cleanup" "Cleaning up" "collapsed" +if make clean +then + section_end +else + status=$? + section_end ; print_error "Cleanup failed" + exit ${status} +fi -timed_message "Build and test completed" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" +echo "~ Build and test completed" +echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" diff --git a/scripts/make_release_tarball.sh b/scripts/make_release_tarball.sh index e54720e7..d2b872bd 100755 --- a/scripts/make_release_tarball.sh +++ b/scripts/make_release_tarball.sh @@ -1,8 +1,8 @@ #!/bin/bash ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/scripts/radiuss-spack-configs b/scripts/radiuss-spack-configs index fddc4f16..5a73b91c 160000 --- a/scripts/radiuss-spack-configs +++ b/scripts/radiuss-spack-configs @@ -1 +1 @@ -Subproject commit fddc4f16ee987abc9c1c61879eaf8a2d6a8253d9 +Subproject commit 5a73b91c06724ff089c13db1a3d197b5ea9d5c0c diff --git a/scripts/spack_packages/spack_repo/llnl_care/packages/README.md b/scripts/spack_packages/spack_repo/llnl_care/packages/README.md index 5c4a1dfe..ddd388be 100644 --- a/scripts/spack_packages/spack_repo/llnl_care/packages/README.md +++ b/scripts/spack_packages/spack_repo/llnl_care/packages/README.md @@ -1,6 +1,6 @@ [comment]: # (#################################################################) -[comment]: # (Copyright 2020-25, Lawrence Livermore National Security, LLC and CARE) -[comment]: # (project contributors. See the CARE LICENSE file for details.) +[comment]: # (Copyright Lawrence Livermore National Security, LLC and other CARE) +[comment]: # (contributors. See the CARE LICENSE and COPYRIGHT files for details.) [comment]: # [comment]: # (SPDX-License-Identifier: BSD-3-Clause) [comment]: # (#################################################################) diff --git a/scripts/uberenv b/scripts/uberenv index bec05e20..bf2f438f 160000 --- a/scripts/uberenv +++ b/scripts/uberenv @@ -1 +1 @@ -Subproject commit bec05e20bf2a1634d97ead358a9072c36f1fdcac +Subproject commit bf2f438fc1fe97bb8290a11e5d4f2d56085b4ee3 diff --git a/scripts/update-copyright.sh b/scripts/update-copyright.sh index db1c3e28..ef77f591 100755 --- a/scripts/update-copyright.sh +++ b/scripts/update-copyright.sh @@ -1,70 +1,18 @@ #!/usr/bin/env bash ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## -#============================================================================= -# Change the copyright date in all files that contain the text -# "the CARE LICENSE file", which is part of the copyright statement at the -# top of each CARE file. We use this to distinguish CARE files from ones -# that we do not own (e.g., other repos included as submodules), which we -# do not want to modify. Note that this file and *.git files are omitted -# as well. -# -# IMPORTANT: Since this file is not modified (it is running the shell -# script commands), you must EDIT THE COPYRIGHT DATES IN THE HEADER ABOVE -# MANUALLY. -# -# Edit the 'grep' command below to change the set of files that will be -# modified. -# -# Change the 'sed' command below to change the content that is changed -# in each file and what it is changed to. Typically, this would only be -# modifying the end year in the copyright date. -# -#============================================================================= -# -# If you need to modify this script, you may want to run each of these -# commands individually from the command line to make sure things are doing -# what you think they should be doing. This is why they are separated into -# steps here. -# -#============================================================================= +set -euo pipefail -#============================================================================= -# First find all the files we want to modify -#============================================================================= -grep -rl "the CARE LICENSE file" . --exclude-dir=.git --exclude-dir=blt --exclude-dir=cub --exclude-dir=umpire --exclude-dir=raja --exclude-dir=chai --exclude-dir=radiuss-spack-configs --exclude-dir=uberenv --exclude-dir=build --exclude=update-copyright.sh > files2change +NEW_END_YEAR="2026" +echo "Updating copyright end year to ${NEW_END_YEAR}:" -#============================================================================= -# Replace the old copyright dates with new dates -#============================================================================= -for i in `cat files2change` -do - echo $i - cp $i $i.sed.bak - # For when there is only a single year in the copyright - # sed "s/Copyright (c) \([0-9]\{4\}\),/Copyright (c) 2020-25,/" $i.sed.bak > $i - sed "s/Copyright (c) \([0-9]\{4\}\)-[0-9]\{2\},/Copyright (c) 2020-25,/" $i.sed.bak > $i +for file in "LICENSE" "docs/sphinx/conf.py"; do + echo " $file" + sed -i "s/\([0-9]\{4\}\)-[0-9]\{4\}/\1-${NEW_END_YEAR}/g" "$file" done - -echo LICENSE -cp LICENSE LICENSE.sed.bak -sed "s/Copyright (c) \([0-9]\{4\}\)-[0-9]\{4\}/Copyright (c) 2020-2025/" LICENSE.sed.bak > LICENSE - -for i in README.md -do - echo $i - cp $i $i.sed.bak - sed "s/\([0-9]\{4\}\)-[0-9]\{2\}/2020-25/" $i.sed.bak > $i -done - -#============================================================================= -# Remove temporary files created in the process -#============================================================================= -find . -name \*.sed.bak -exec rm {} \; -rm files2change diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 69b4ee33..d131d8dd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/src/care/ArrayView.h b/src/care/ArrayView.h index e2f1ee68..f491ec41 100644 --- a/src/care/ArrayView.h +++ b/src/care/ArrayView.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/CHAICallback.cpp b/src/care/CHAICallback.cpp index bdb7d281..302e4ac1 100644 --- a/src/care/CHAICallback.cpp +++ b/src/care/CHAICallback.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/CHAICallback.h b/src/care/CHAICallback.h index d7e656d7..756accae 100644 --- a/src/care/CHAICallback.h +++ b/src/care/CHAICallback.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/CHAIDataGetter.h b/src/care/CHAIDataGetter.h index 9f41d489..89b1536f 100644 --- a/src/care/CHAIDataGetter.h +++ b/src/care/CHAIDataGetter.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/CMakeLists.txt b/src/care/CMakeLists.txt index 59a8de1d..79143d01 100644 --- a/src/care/CMakeLists.txt +++ b/src/care/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## diff --git a/src/care/Debug.h b/src/care/Debug.h index 36495db7..70a444b1 100644 --- a/src/care/Debug.h +++ b/src/care/Debug.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/DebugPlugin.cpp b/src/care/DebugPlugin.cpp index da76ee6d..97f296ad 100644 --- a/src/care/DebugPlugin.cpp +++ b/src/care/DebugPlugin.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/DebugPlugin.h b/src/care/DebugPlugin.h index ff4df4b3..e6af1b95 100644 --- a/src/care/DebugPlugin.h +++ b/src/care/DebugPlugin.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/DefaultMacros.h b/src/care/DefaultMacros.h index af00f33b..db94d7a1 100644 --- a/src/care/DefaultMacros.h +++ b/src/care/DefaultMacros.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/ExecutionSpace.cpp b/src/care/ExecutionSpace.cpp index 8ebf2565..3b4ff709 100644 --- a/src/care/ExecutionSpace.cpp +++ b/src/care/ExecutionSpace.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/ExecutionSpace.h b/src/care/ExecutionSpace.h index 4f0cf64b..da1a33b1 100644 --- a/src/care/ExecutionSpace.h +++ b/src/care/ExecutionSpace.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/FOREACHMACRO.h b/src/care/FOREACHMACRO.h index 5ffb4a96..07220a3f 100644 --- a/src/care/FOREACHMACRO.h +++ b/src/care/FOREACHMACRO.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/GPUMacros.h b/src/care/GPUMacros.h index 6414fcb7..74d95ff9 100644 --- a/src/care/GPUMacros.h +++ b/src/care/GPUMacros.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/GPUWatchpoint.h b/src/care/GPUWatchpoint.h index 15109277..d405eb1a 100644 --- a/src/care/GPUWatchpoint.h +++ b/src/care/GPUWatchpoint.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/KeyValueSorter.h b/src/care/KeyValueSorter.h index a4883544..a6e4f852 100644 --- a/src/care/KeyValueSorter.h +++ b/src/care/KeyValueSorter.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/KeyValueSorter_decl.h b/src/care/KeyValueSorter_decl.h index 9595ced8..514ebf34 100644 --- a/src/care/KeyValueSorter_decl.h +++ b/src/care/KeyValueSorter_decl.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// @@ -31,7 +31,7 @@ namespace care { /// to make this GPU friendly. /////////////////////////////////////////////////////////////////////////// template -class CARE_DLL_API KeyValueSorter; +class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter; /// LocalKeyValueSorter should be used as the type for HOSTDEV functions /// to indicate that the function should only be called in a RAJA context. @@ -43,11 +43,10 @@ template using LocalKeyValueSorter = KeyValueSorter ; -#if defined(CARE_PARALLEL_DEVICE) || CARE_ENABLE_GPU_SIMULATION_MODE /////////////////////////////////////////////////////////////////////////// /// @author Peter Robinson, Alan Dayton -/// @brief ManagedArray API to cub::DeviceRadixSort::SortPairs +/// @brief ManagedArray API for sorting paired key and value arrays /// @param[in, out] keys - The array to sort /// @param[in, out] values - The array that is sorted simultaneously /// @param[in] start - The index to start sorting at @@ -60,21 +59,22 @@ using LocalKeyValueSorter = KeyValueSorter ; /// @return void /////////////////////////////////////////////////////////////////////////// template -std::enable_if_t::raw_type>::value, void> +std::enable_if_t::raw_type>::value, void> sortKeyValueArrays(host_device_ptr & keys, host_device_ptr & values, const size_t start, const size_t len, const bool noCopy=false); -#if defined(__HIPCC__) || (defined(__CUDACC__) && defined(CUB_MAJOR_VERSION) && defined(CUB_MINOR_VERSION) && (CUB_MAJOR_VERSION >= 2 || (CUB_MAJOR_VERSION == 1 && CUB_MINOR_VERSION >= 14))) || defined(_OPENMP) || CARE_ENABLE_GPU_SIMULATION_MODE + template -std::enable_if_t::raw_type>::value, void> +std::enable_if_t::raw_type>::value, void> sortKeyValueArrays(host_device_ptr & keys, host_device_ptr & values, const size_t start, const size_t len, const bool noCopy=false); -#endif + +#if defined(CARE_PARALLEL_DEVICE) || CARE_ENABLE_GPU_SIMULATION_MODE /////////////////////////////////////////////////////////////////////////// /// @author Benjamin Liu after Alan Dayton /// @brief Initializes keys and values by copying elements from the array @@ -127,7 +127,7 @@ size_t eliminateKeyValueDuplicates(host_device_ptr& newKeys, /// arrays to be compatible with sortKeyValueArrays. /////////////////////////////////////////////////////////////////////////// template -class CARE_DLL_API KeyValueSorter { +class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter { public: /////////////////////////////////////////////////////////////////////////// @@ -135,7 +135,7 @@ class CARE_DLL_API KeyValueSorter { /// @brief Default constructor /// @return a KeyValueSorter instance /////////////////////////////////////////////////////////////////////////// - KeyValueSorter() {} + CARE_HOST_DEVICE KeyValueSorter() noexcept {} /////////////////////////////////////////////////////////////////////////// /// @author Peter Robinson, Alan Dayton @@ -464,10 +464,10 @@ class CARE_DLL_API KeyValueSorter { auto keys = m_keys; // Use SCAN_LOOP to identify where ranges start - SCAN_LOOP(i, start, start+len-1, idx, count, + SCAN_LOOP(i, start, start+len, idx, count, (i == start) || (keys[i] != keys[i-1])) { rangeStarts[idx] = i; - } SCAN_LOOP_END(len, idx, count) + } SCAN_LOOP_END(start+len, idx, count) // Set the last range end rangeStarts.set(count , start+len); @@ -617,7 +617,7 @@ class CARE_DLL_API KeyValueSorter { // Use exclusive scan to compute output positions host_device_ptr positions(m_len+1); - care::exclusive_scan(RAJADeviceExec{}, isUnique, positions, m_len, 0, false); + care::exclusive_scan(RAJADeviceExec{}, isUnique, positions, m_len + 1, 0, false); // Get the total number of unique elements int newSize = positions.pick(m_len); @@ -854,7 +854,7 @@ void initializeValueArray(host_device_ptr& values, const host_device_ /// the need for copying the keys and values into separate arrays after the sort. /////////////////////////////////////////////////////////////////////////// template -class CARE_DLL_API KeyValueSorter { +class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter { public: /////////////////////////////////////////////////////////////////////////// @@ -1491,9 +1491,7 @@ void IntersectKeyValueSorters(RAJADeviceExec exec, KeyValueSorter void IntersectKeyValueSorters(RAJA::seq_exec exec, diff --git a/src/care/KeyValueSorter_impl.h b/src/care/KeyValueSorter_impl.h index bd2b1a43..b9039bdf 100644 --- a/src/care/KeyValueSorter_impl.h +++ b/src/care/KeyValueSorter_impl.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// @@ -38,13 +38,39 @@ namespace care { // TODO openMP parallel implementation -#if defined(CARE_PARALLEL_DEVICE) || CARE_ENABLE_GPU_SIMULATION_MODE -// TODO: Use if constexpr and std::is_arithmetic_v when c++17 support is required +namespace detail { +template +CARE_INLINE void stableSortKeyValuePairs(host_device_ptr & keys, + host_device_ptr & values, + const size_t len, + const size_t start=0) +{ + host_device_ptr<_kv> keyValues(len); + + CARE_SEQUENTIAL_LOOP(i, 0, (int) len) { + keyValues[i].key = keys[i+start]; + keyValues[i].value = values[i+start]; + } CARE_SEQUENTIAL_LOOP_END + + CHAIDataGetter<_kv, RAJA::seq_exec> getter {}; + _kv * rawData = getter.getRawArrayData(keyValues); + std::stable_sort(rawData, rawData + len, cmpKeys<_kv>); + + CARE_SEQUENTIAL_LOOP(i, 0, (int) len) { + keys[i+start] = keyValues[i].key; + values[i+start] = keyValues[i].value; + } CARE_SEQUENTIAL_LOOP_END + + keyValues.free(); +} + +} // namespace detail + /////////////////////////////////////////////////////////////////////////// /// @author Peter Robinson, Alan Dayton -/// @brief ManagedArray API to cub::DeviceRadixSort::SortPairs +/// @brief ManagedArray API for sorting paired key and value arrays /// @param[in, out] keys - The array to sort /// @param[in, out] values - The array that is sorted simultaneously /// @param[in] start - The index to start sorting at @@ -58,7 +84,7 @@ namespace care { /////////////////////////////////////////////////////////////////////////// template CARE_INLINE -std::enable_if_t::raw_type>::value, void> +std::enable_if_t::raw_type>::value, void> sortKeyValueArrays(host_device_ptr & keys, host_device_ptr & values, const size_t start, const size_t len, @@ -73,126 +99,110 @@ sortKeyValueArrays(host_device_ptr & keys, _noCopy = noCopy; } - // TODO openMP parallel implementation -#ifdef CARE_GPUCC + if constexpr (std::is_same_v) { + detail::stableSortKeyValuePairs(keys, values, len, start); + } + else { + // TODO openMP parallel implementation +#if defined(__HIPCC__) || (defined(__CUDACC__) && defined(CUB_MAJOR_VERSION) && defined(CUB_MINOR_VERSION) && (CUB_MAJOR_VERSION >= 2 || (CUB_MAJOR_VERSION == 1 && CUB_MINOR_VERSION >= 14))) - // Allocate space for the result - host_device_ptr keyResult{len}; - host_device_ptr valueResult{len}; + // Allocate space for the result + host_device_ptr keyResult{len}; + host_device_ptr valueResult{len}; - // Get the raw data to pass to cub - CHAIDataGetter keyGetter {}; - CHAIDataGetter valueGetter {}; + // Get the raw data to pass to cub + CHAIDataGetter keyGetter {}; + CHAIDataGetter valueGetter {}; - auto * rawKeyData = keyGetter.getRawArrayData(keys) + start; - auto * rawValueData = valueGetter.getRawArrayData(values) + start; + auto * rawKeyData = keyGetter.getRawArrayData(keys) + start; + auto * rawValueData = valueGetter.getRawArrayData(values) + start; - auto * rawKeyResult = keyGetter.getRawArrayData(keyResult); - auto * rawValueResult = valueGetter.getRawArrayData(valueResult); + auto * rawKeyResult = keyGetter.getRawArrayData(keyResult); + auto * rawValueResult = valueGetter.getRawArrayData(valueResult); - // Get the temp storage length - char * d_temp_storage = nullptr; - size_t temp_storage_bytes = 0; + // Get the temp storage length + char * d_temp_storage = nullptr; + size_t temp_storage_bytes = 0; - // When called with a nullptr for temp storage, this returns how much - // temp storage should be allocated. - if (len > 0) { + // When called with a nullptr for temp storage, this returns how much + // temp storage should be allocated. + if (len > 0) { #if defined(__CUDACC__) - cub::DeviceRadixSort::SortPairs((void *)d_temp_storage, temp_storage_bytes, - rawKeyData, rawKeyResult, - rawValueData, rawValueResult, - len); + cub::DeviceRadixSort::SortPairs((void *)d_temp_storage, temp_storage_bytes, + rawKeyData, rawKeyResult, + rawValueData, rawValueResult, + len); #elif defined(__HIPCC__) - hipcub::DeviceRadixSort::SortPairs((void *)d_temp_storage, temp_storage_bytes, - rawKeyData, rawKeyResult, - rawValueData, rawValueResult, - len); + hipcub::DeviceRadixSort::SortPairs((void *)d_temp_storage, temp_storage_bytes, + rawKeyData, rawKeyResult, + rawValueData, rawValueResult, + len); #endif - } + } - // Allocate the temp storage and get raw data to pass to cub - host_device_ptr tmpManaged {temp_storage_bytes}; + // Allocate the temp storage and get raw data to pass to cub + host_device_ptr tmpManaged {temp_storage_bytes}; - CHAIDataGetter charGetter {}; - d_temp_storage = charGetter.getRawArrayData(tmpManaged); + CHAIDataGetter charGetter {}; + d_temp_storage = charGetter.getRawArrayData(tmpManaged); - // Now sort - if (len > 0) { + // Now sort + if (len > 0) { #if defined(CHAI_THIN_GPU_ALLOCATE) - chai::ArrayManager::getInstance()->setExecutionSpace(chai::GPU); + chai::ArrayManager::getInstance()->setExecutionSpace(chai::GPU); #endif #if defined(__CUDACC__) - cub::DeviceRadixSort::SortPairs((void *)d_temp_storage, temp_storage_bytes, - rawKeyData, rawKeyResult, - rawValueData, rawValueResult, - len); + cub::DeviceRadixSort::SortPairs((void *)d_temp_storage, temp_storage_bytes, + rawKeyData, rawKeyResult, + rawValueData, rawValueResult, + len); #elif defined(__HIPCC__) - hipcub::DeviceRadixSort::SortPairs((void *)d_temp_storage, temp_storage_bytes, - rawKeyData, rawKeyResult, - rawValueData, rawValueResult, - len); + hipcub::DeviceRadixSort::SortPairs((void *)d_temp_storage, temp_storage_bytes, + rawKeyData, rawKeyResult, + rawValueData, rawValueResult, + len); #endif #if defined(CHAI_THIN_GPU_ALLOCATE) - chai::ArrayManager::getInstance()->setExecutionSpace(chai::NONE); + chai::ArrayManager::getInstance()->setExecutionSpace(chai::NONE); #endif - tmpManaged.free(); - } - - // Get the result - if (_noCopy) { - if (len > 0) { - keys.free(); - values.free(); + tmpManaged.free(); } - keys = keyResult; - values = valueResult; - } - else { - CARE_STREAM_LOOP(i, 0, len) { - keys[i+start] = keyResult[i]; - values[i+start] = valueResult[i]; - } CARE_STREAM_LOOP_END + // Get the result + if (_noCopy) { + if (len > 0) { + keys.free(); + values.free(); + } - if (len > 0) { - keyResult.free(); - valueResult.free(); + keys = keyResult; + values = valueResult; + } + else { + CARE_STREAM_LOOP(i, 0, len) { + keys[i+start] = keyResult[i]; + values[i+start] = valueResult[i]; + } CARE_STREAM_LOOP_END + + if (len > 0) { + keyResult.free(); + valueResult.free(); + } } - } #else // defined(CARE_GPUCC) - - host_device_ptr<_kv> keyValues(len); - - CARE_STREAM_LOOP(i, 0, (int) len) { - keyValues[i].key = keys[i+start]; - keyValues[i].value = values[i+start]; - } CARE_STREAM_LOOP_END - - // Now sort - - CHAIDataGetter<_kv, RAJA::seq_exec> getter {}; - _kv * rawData = getter.getRawArrayData(keyValues); - std::stable_sort(rawData, rawData + len, cmpKeys<_kv>); - - CARE_STREAM_LOOP(i, 0, (int) len) { - keys[i+start] = keyValues[i].key; - values[i+start] = keyValues[i].value; - } CARE_STREAM_LOOP_END - - keyValues.free(); - + // fall back to an implementation that uses std::stable_sort on the host + detail::stableSortKeyValuePairs(keys, values, len, start); #endif // defined(CARE_GPUCC) - + } } -#if defined(__HIPCC__) || (defined(__CUDACC__) && defined(CUB_MAJOR_VERSION) && defined(CUB_MINOR_VERSION) && (CUB_MAJOR_VERSION >= 2 || (CUB_MAJOR_VERSION == 1 && CUB_MINOR_VERSION >= 14))) || defined(_OPENMP) || CARE_ENABLE_GPU_SIMULATION_MODE /////////////////////////////////////////////////////////////////////////// /// @author Peter Robinson, Alan Dayton -/// @brief ManagedArray API to cub::DeviceRadixSort::SortPairs +/// @brief ManagedArray API for sorting paired key and value arrays /// @param[in, out] keys - The array to sort /// @param[in, out] values - The array that is sorted simultaneously /// @param[in] start - The index to start sorting at @@ -206,7 +216,7 @@ sortKeyValueArrays(host_device_ptr & keys, /////////////////////////////////////////////////////////////////////////// template CARE_INLINE -std::enable_if_t::raw_type>::value, void> +std::enable_if_t::raw_type>::value, void> sortKeyValueArrays(host_device_ptr & keys, host_device_ptr & values, const size_t start, const size_t len, @@ -221,117 +231,103 @@ sortKeyValueArrays(host_device_ptr & keys, _noCopy = noCopy; } - // TODO openMP parallel implementation -#ifdef CARE_GPUCC + if constexpr (std::is_same_v) { + detail::stableSortKeyValuePairs(keys, values, len, start); + } + else { + // TODO openMP parallel implementation +#if defined(__HIPCC__) || (defined(__CUDACC__) && defined(CUB_MAJOR_VERSION) && defined(CUB_MINOR_VERSION) && (CUB_MAJOR_VERSION >= 2 || (CUB_MAJOR_VERSION == 1 && CUB_MINOR_VERSION >= 14))) - // Allocate space for the result - host_device_ptr keyResult{len}; - host_device_ptr valueResult{len}; + // Allocate space for the result + host_device_ptr keyResult{len}; + host_device_ptr valueResult{len}; - // Get the raw data to pass to cub - CHAIDataGetter keyGetter {}; - CHAIDataGetter valueGetter {}; + // Get the raw data to pass to cub + CHAIDataGetter keyGetter {}; + CHAIDataGetter valueGetter {}; - auto * rawKeyData = keyGetter.getRawArrayData(keys) + start; - auto * rawValueData = valueGetter.getRawArrayData(values) + start; + auto * rawKeyData = keyGetter.getRawArrayData(keys) + start; + auto * rawValueData = valueGetter.getRawArrayData(values) + start; - auto * rawKeyResult = keyGetter.getRawArrayData(keyResult); - auto * rawValueResult = valueGetter.getRawArrayData(valueResult); + auto * rawKeyResult = keyGetter.getRawArrayData(keyResult); + auto * rawValueResult = valueGetter.getRawArrayData(valueResult); - using RawKeyType = std::remove_reference_t; + using RawKeyType = std::remove_reference_t; - auto custom_comparator = [] CARE_HOST_DEVICE (const RawKeyType& lhs, - const RawKeyType& rhs) { - return lhs < rhs; - }; + auto custom_comparator = [] CARE_HOST_DEVICE (const RawKeyType& lhs, + const RawKeyType& rhs) { + return lhs < rhs; + }; - // Get the temp storage length - char * d_temp_storage = nullptr; - size_t temp_storage_bytes = 0; + // Get the temp storage length + char * d_temp_storage = nullptr; + size_t temp_storage_bytes = 0; - // When called with a nullptr for temp storage, this returns how much - // temp storage should be allocated. - if (len > 0) { + // When called with a nullptr for temp storage, this returns how much + // temp storage should be allocated. + if (len > 0) { #if defined(__CUDACC__) - cub::DeviceMergeSort::StableSortPairs((void *)d_temp_storage, temp_storage_bytes, - rawKeyData, - rawValueData, - len, custom_comparator); + cub::DeviceMergeSort::StableSortPairs((void *)d_temp_storage, temp_storage_bytes, + rawKeyData, + rawValueData, + len, custom_comparator); #elif defined(__HIPCC__) - hipcub::DeviceMergeSort::StableSortPairs((void *)d_temp_storage, temp_storage_bytes, - rawKeyData, - rawValueData, - len, custom_comparator); + hipcub::DeviceMergeSort::StableSortPairs((void *)d_temp_storage, temp_storage_bytes, + rawKeyData, + rawValueData, + len, custom_comparator); #endif - } + } - // Allocate the temp storage and get raw data to pass to cub - host_device_ptr tmpManaged {temp_storage_bytes}; + // Allocate the temp storage and get raw data to pass to cub + host_device_ptr tmpManaged {temp_storage_bytes}; - CHAIDataGetter charGetter {}; - d_temp_storage = charGetter.getRawArrayData(tmpManaged); + CHAIDataGetter charGetter {}; + d_temp_storage = charGetter.getRawArrayData(tmpManaged); - // Now sort - if (len > 0) { + // Now sort + if (len > 0) { #if defined(CHAI_THIN_GPU_ALLOCATE) - chai::ArrayManager::getInstance()->setExecutionSpace(chai::GPU); + chai::ArrayManager::getInstance()->setExecutionSpace(chai::GPU); #endif #if defined(__CUDACC__) - cub::DeviceMergeSort::StableSortPairs((void *)d_temp_storage, temp_storage_bytes, - rawKeyData, - rawValueData, - len, - custom_comparator); + cub::DeviceMergeSort::StableSortPairs((void *)d_temp_storage, temp_storage_bytes, + rawKeyData, + rawValueData, + len, + custom_comparator); #elif defined(__HIPCC__) - hipcub::DeviceMergeSort::StableSortPairs((void *)d_temp_storage, temp_storage_bytes, - rawKeyData, - rawValueData, - len, - custom_comparator); + hipcub::DeviceMergeSort::StableSortPairs((void *)d_temp_storage, temp_storage_bytes, + rawKeyData, + rawValueData, + len, + custom_comparator); #endif #if defined(CHAI_THIN_GPU_ALLOCATE) - chai::ArrayManager::getInstance()->setExecutionSpace(chai::NONE); + chai::ArrayManager::getInstance()->setExecutionSpace(chai::NONE); #endif - tmpManaged.free(); - } + tmpManaged.free(); + } - // merge sort did an inplace sort, so the answer is already in keys and Values - if (len > 0) { - keyResult.free(); - valueResult.free(); - } + // merge sort did an inplace sort, so the answer is already in keys and Values + if (len > 0) { + keyResult.free(); + valueResult.free(); + } #else // defined(CARE_GPUCC) - - host_device_ptr<_kv> keyValues(len); - - CARE_STREAM_LOOP(i, 0, (int) len) { - keyValues[i].key = keys[i+start]; - keyValues[i].value = values[i+start]; - } CARE_STREAM_LOOP_END - - // Now sort - - CHAIDataGetter<_kv, RAJA::seq_exec> getter {}; - _kv * rawData = getter.getRawArrayData(keyValues); - std::stable_sort(rawData, rawData + len, cmpKeys<_kv>); - - CARE_STREAM_LOOP(i, 0, (int) len) { - keys[i+start] = keyValues[i].key; - values[i+start] = keyValues[i].value; - } CARE_STREAM_LOOP_END - - keyValues.free(); + // fall back to an implementation that uses std::stable_sort on the host + detail::stableSortKeyValuePairs(keys, values, len, start); #endif // defined(CARE_GPUCC) - + } } -#endif +#if defined(CARE_PARALLEL_DEVICE) || CARE_ENABLE_GPU_SIMULATION_MODE /////////////////////////////////////////////////////////////////////////// /// @author Benjamin Liu after Alan Dayton /// @brief Initializes keys and values by copying elements from the array @@ -465,10 +461,20 @@ CARE_INLINE void IntersectKeyValueSorters(RAJADeviceExec exec, largerMatches = matches1; } - host_device_ptr searches{smaller+1}; - host_device_ptr matched{smaller+1}; + host_device_ptr searches(smaller+1); + host_device_ptr matched(smaller+1); CARE_STREAM_LOOP(i, 0, smaller+1) { - searches[i] = i != smaller ? care::BinarySearch(largerArray, largeStart, larger, smallerArray[i+smallStart]) : -1; + if (i == smaller) { + searches[i] = -1; + } + else { + // to be consistent with CPU algorithm, find the first match + int match = care::BinarySearch(largerArray, largeStart, larger, smallerArray[i+smallStart]); + while (match > largeStart && largerArray[match-1] == largerArray[match]) { + --match; + } + searches[i] = match; + } matched[i] = i != smaller && searches[i] > -1; } CARE_STREAM_LOOP_END @@ -759,4 +765,3 @@ CARE_INLINE void IntersectKeyValueSorters(RAJA::seq_exec /* exec */, } // namespace care #endif // !defined(_CARE_KEY_VALUE_SORTER_IMPL_H_) - diff --git a/src/care/KeyValueSorter_inst.h b/src/care/KeyValueSorter_inst.h index 54705a0a..4f150268 100644 --- a/src/care/KeyValueSorter_inst.h +++ b/src/care/KeyValueSorter_inst.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// @@ -32,28 +32,32 @@ namespace care { - CARE_EXTERN template CARE_DLL_API void setKeyValueArraysFromArray(host_device_ptr<_kv > &, const size_t, const CARE_TEMPLATE_ARRAY_TYPE*); - CARE_EXTERN template CARE_DLL_API void setKeyValueArraysFromManagedArray(host_device_ptr<_kv > &, const size_t, const host_device_ptr&); - CARE_EXTERN template CARE_DLL_API size_t eliminateKeyValueDuplicates(host_device_ptr<_kv > &, const size_t); - CARE_EXTERN template CARE_DLL_API void initializeKeyArray(host_device_ptr&, const host_device_ptr >&, const size_t); - CARE_EXTERN template CARE_DLL_API void initializeValueArray(host_device_ptr&, const host_device_ptr >&, const size_t); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void setKeyValueArraysFromArray(host_device_ptr<_kv > &, const size_t, const CARE_TEMPLATE_ARRAY_TYPE*); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void setKeyValueArraysFromManagedArray(host_device_ptr<_kv > &, const size_t, const host_device_ptr&); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API size_t eliminateKeyValueDuplicates(host_device_ptr<_kv > &, const size_t); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void initializeKeyArray(host_device_ptr&, const host_device_ptr >&, const size_t); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void initializeValueArray(host_device_ptr&, const host_device_ptr >&, const size_t); #if !CARE_ENABLE_GPU_SIMULATION_MODE - CARE_EXTERN template class CARE_DLL_API KeyValueSorter; - - CARE_EXTERN template CARE_DLL_API void IntersectKeyValueSorters(RAJA::seq_exec, KeyValueSorter, int, KeyValueSorter, int, host_device_ptr &, host_device_ptr &, int &); + CARE_EXTERN template class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter; + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void IntersectKeyValueSorters(RAJA::seq_exec, KeyValueSorter, int, KeyValueSorter, int, host_device_ptr &, host_device_ptr &, int &); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void sortKeyValueArrays(host_device_ptr &, host_device_ptr &, const size_t, const size_t, const bool); + #endif // !CARE_ENABLE_GPU_SIMULATION_MODE + #if defined(CARE_PARALLEL_DEVICE) || CARE_ENABLE_GPU_SIMULATION_MODE - CARE_EXTERN template CARE_DLL_API void setKeyValueArraysFromArray(host_device_ptr &, host_device_ptr &, const size_t, const CARE_TEMPLATE_ARRAY_TYPE*); - CARE_EXTERN template CARE_DLL_API void setKeyValueArraysFromManagedArray(host_device_ptr &, host_device_ptr &, const size_t, const host_device_ptr&); - CARE_EXTERN template CARE_DLL_API size_t eliminateKeyValueDuplicates(host_device_ptr&, host_device_ptr&, const host_device_ptr&, const host_device_ptr&, const size_t); - CARE_EXTERN template CARE_DLL_API void sortKeyValueArrays(host_device_ptr &, host_device_ptr &, const size_t, const size_t, const bool); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void sortKeyValueArrays(host_device_ptr &, host_device_ptr &, const size_t, const size_t, const bool); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void setKeyValueArraysFromArray(host_device_ptr &, host_device_ptr &, const size_t, const CARE_TEMPLATE_ARRAY_TYPE*); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void setKeyValueArraysFromManagedArray(host_device_ptr &, host_device_ptr &, const size_t, const host_device_ptr&); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API size_t eliminateKeyValueDuplicates(host_device_ptr&, host_device_ptr&, const host_device_ptr&, const host_device_ptr&, const size_t); - CARE_EXTERN template class CARE_DLL_API KeyValueSorter; + CARE_EXTERN template class CARE_KEY_VALUE_SORTER_DLL_API KeyValueSorter; - CARE_EXTERN template CARE_DLL_API void IntersectKeyValueSorters(RAJADeviceExec, KeyValueSorter, int, KeyValueSorter, int, host_device_ptr &, host_device_ptr &, int &); + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void IntersectKeyValueSorters(RAJADeviceExec, KeyValueSorter, int, KeyValueSorter, int, host_device_ptr &, host_device_ptr &, int &); + + CARE_EXTERN template CARE_KEY_VALUE_SORTER_DLL_API void IntersectKeyValueSorters(RAJADeviceExec, KeyValueSorter, size_t, KeyValueSorter, size_t, host_device_ptr &, host_device_ptr&, size_t&); #endif // defined(CARE_PARALLEL_DEVICE) || CARE_ENABLE_GPU_SIMULATION_MODE @@ -61,4 +65,3 @@ namespace care { #undef CARE_TEMPLATE_ARRAY_TYPE #undef CARE_TEMPLATE_KEY_TYPE - diff --git a/src/care/LoopFuser.cpp b/src/care/LoopFuser.cpp index 5d149a5e..88c39f4e 100644 --- a/src/care/LoopFuser.cpp +++ b/src/care/LoopFuser.cpp @@ -1,13 +1,10 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// -// Loop Fuser uses the CUDA/HIP default stream and wants to enqueue events in the default stream -#define CAMP_USE_PLATFORM_DEFAULT_STREAM 1 - #include "umpire/Allocator.hpp" #include "umpire/TypedAllocator.hpp" @@ -170,7 +167,11 @@ template void LoopFuser::waitIfNeeded() { if (m_wait_needed) { // ensure asynchronous launch from previous flush is done +#if CAMP_VERSION_MAJOR >= 2026 + m_async_resource.wait_for(m_wait_for_event); +#else m_async_resource.wait_for(&m_wait_for_event); +#endif // clear out our worksites now that their work is done m_aw.clear(); m_cw.clear(); diff --git a/src/care/LoopFuser.h b/src/care/LoopFuser.h index e23bd562..504a4f20 100644 --- a/src/care/LoopFuser.h +++ b/src/care/LoopFuser.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/PluginData.cpp b/src/care/PluginData.cpp index 660224b8..b55eba3a 100644 --- a/src/care/PluginData.cpp +++ b/src/care/PluginData.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/PluginData.h b/src/care/PluginData.h index 5fef41fd..db221fcf 100644 --- a/src/care/PluginData.h +++ b/src/care/PluginData.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/PointerTypes.h b/src/care/PointerTypes.h index 783707f2..8d210bba 100644 --- a/src/care/PointerTypes.h +++ b/src/care/PointerTypes.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/ProfilePlugin.cpp b/src/care/ProfilePlugin.cpp index 6669c8a6..37ebedf0 100644 --- a/src/care/ProfilePlugin.cpp +++ b/src/care/ProfilePlugin.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/ProfilePlugin.h b/src/care/ProfilePlugin.h index c6c36a53..785ea615 100644 --- a/src/care/ProfilePlugin.h +++ b/src/care/ProfilePlugin.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/Setup.h b/src/care/Setup.h index 94663dbd..4413917e 100644 --- a/src/care/Setup.h +++ b/src/care/Setup.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/SortFuser.h b/src/care/SortFuser.h index c88a330d..b53ebb45 100644 --- a/src/care/SortFuser.h +++ b/src/care/SortFuser.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/algorithm.h b/src/care/algorithm.h index 6a29a03f..4befa19d 100644 --- a/src/care/algorithm.h +++ b/src/care/algorithm.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/algorithm_decl.h b/src/care/algorithm_decl.h index 3b84815c..a84959e4 100644 --- a/src/care/algorithm_decl.h +++ b/src/care/algorithm_decl.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/algorithm_impl.h b/src/care/algorithm_impl.h index a686d23a..15226388 100644 --- a/src/care/algorithm_impl.h +++ b/src/care/algorithm_impl.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/array.h b/src/care/array.h index 497c71cd..0ee3824b 100644 --- a/src/care/array.h +++ b/src/care/array.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/atomic.h b/src/care/atomic.h index 44e522c5..822e4711 100644 --- a/src/care/atomic.h +++ b/src/care/atomic.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// @@ -24,5 +24,9 @@ using RAJAAtomic = RAJA::auto_atomic; #define ATOMIC_STORE(ref, val) RAJA::atomicStore(&(ref), val) #define ATOMIC_EXCHANGE(ref, val) RAJA::atomicExchange(&(ref), val) #define ATOMIC_CAS(ref, compare, val) RAJA::atomicCAS(&(ref), compare, val) +#if RAJA_VERSION_MAJOR >= 2026 +#define ATOMIC_GENERIC(ref, op) RAJA::atomicGeneric(&(ref), op) +#define ATOMIC_GENERIC_WITH_STOP(ref, op, stop) RAJA::atomicGeneric(&(ref), op, stop) +#endif #endif // CARE_ATOMIC_H diff --git a/src/care/care.cpp b/src/care/care.cpp index c42ecf2e..feb12246 100644 --- a/src/care/care.cpp +++ b/src/care/care.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/care.h b/src/care/care.h index 2b1bb1ca..b51d0397 100644 --- a/src/care/care.h +++ b/src/care/care.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/care_inst.cpp b/src/care/care_inst.cpp index 9280089f..edbdebcd 100644 --- a/src/care/care_inst.cpp +++ b/src/care/care_inst.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/care_inst.h b/src/care/care_inst.h index b1356ce4..0f7511ef 100644 --- a/src/care/care_inst.h +++ b/src/care/care_inst.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// @@ -11,6 +11,8 @@ // CARE config header #include "care/config.h" +#include + #ifdef CARE_ENABLE_EXTERN_INSTANTIATE /////////////////////////////////////////////////////////////////////////////// @@ -18,18 +20,34 @@ #define CARE_TEMPLATE_ARRAY_TYPE int #include "care/KeyValueSorter_inst.h" +#define CARE_TEMPLATE_KEY_TYPE int +#define CARE_TEMPLATE_ARRAY_TYPE size_t +#include "care/KeyValueSorter_inst.h" + #define CARE_TEMPLATE_KEY_TYPE size_t #define CARE_TEMPLATE_ARRAY_TYPE float #include "care/KeyValueSorter_inst.h" +#define CARE_TEMPLATE_KEY_TYPE float +#define CARE_TEMPLATE_ARRAY_TYPE size_t +#include "care/KeyValueSorter_inst.h" + #define CARE_TEMPLATE_KEY_TYPE size_t #define CARE_TEMPLATE_ARRAY_TYPE double #include "care/KeyValueSorter_inst.h" +#define CARE_TEMPLATE_KEY_TYPE double +#define CARE_TEMPLATE_ARRAY_TYPE size_t +#include "care/KeyValueSorter_inst.h" + #if CARE_HAVE_LLNL_GLOBALID #define CARE_TEMPLATE_KEY_TYPE size_t #define CARE_TEMPLATE_ARRAY_TYPE globalID #include "care/KeyValueSorter_inst.h" + +#define CARE_TEMPLATE_KEY_TYPE globalID +#define CARE_TEMPLATE_ARRAY_TYPE size_t +#include "care/KeyValueSorter_inst.h" #endif #define CARE_TEMPLATE_KEY_TYPE int @@ -40,16 +58,32 @@ #define CARE_TEMPLATE_ARRAY_TYPE float #include "care/KeyValueSorter_inst.h" +#define CARE_TEMPLATE_KEY_TYPE float +#define CARE_TEMPLATE_ARRAY_TYPE int +#include "care/KeyValueSorter_inst.h" + #define CARE_TEMPLATE_KEY_TYPE int #define CARE_TEMPLATE_ARRAY_TYPE double #include "care/KeyValueSorter_inst.h" +#define CARE_TEMPLATE_KEY_TYPE double +#define CARE_TEMPLATE_ARRAY_TYPE int +#include "care/KeyValueSorter_inst.h" + +#define CARE_TEMPLATE_KEY_TYPE int64_t +#define CARE_TEMPLATE_ARRAY_TYPE int64_t +#include "care/KeyValueSorter_inst.h" + #if CARE_HAVE_LLNL_GLOBALID #define CARE_TEMPLATE_KEY_TYPE int #define CARE_TEMPLATE_ARRAY_TYPE globalID #include "care/KeyValueSorter_inst.h" +#define CARE_TEMPLATE_KEY_TYPE globalID +#define CARE_TEMPLATE_ARRAY_TYPE int +#include "care/KeyValueSorter_inst.h" + #define CARE_TEMPLATE_KEY_TYPE globalID #define CARE_TEMPLATE_ARRAY_TYPE globalID #include "care/KeyValueSorter_inst.h" @@ -882,7 +916,10 @@ CARE_EXTERN template CARE_DLL_API float ArraySum(care::host_device_ptr, int, float) ; CARE_EXTERN template CARE_DLL_API double ArraySum(care::host_device_ptr, int, double) ; -// TODO GID not implemented +#if CARE_HAVE_LLNL_GLOBALID +CARE_EXTERN template CARE_DLL_API +globalID ArraySum(care::host_device_ptr, int, globalID) ; +#endif #endif // defined(CARE_PARALLEL_DEVICE) @@ -894,6 +931,10 @@ CARE_EXTERN template CARE_DLL_API float ArraySum(care::host_device_ptr, int, float) ; CARE_EXTERN template CARE_DLL_API double ArraySum(care::host_device_ptr, int, double) ; +#if CARE_HAVE_LLNL_GLOBALID +CARE_EXTERN template CARE_DLL_API +globalID ArraySum(care::host_device_ptr, int, globalID) ; +#endif // TODO GID not implemented /////////////////////////////////////////////////////////////////////////////// @@ -908,7 +949,10 @@ CARE_EXTERN template CARE_DLL_API float ArraySumSubset(care::host_device_ptr, care::host_device_ptr, int, float) ; CARE_EXTERN template CARE_DLL_API double ArraySumSubset(care::host_device_ptr, care::host_device_ptr, int, double) ; -// TODO GID not implemented +#if CARE_HAVE_LLNL_GLOBALID +CARE_EXTERN template CARE_DLL_API +globalID ArraySumSubset(care::host_device_ptr, care::host_device_ptr, int, globalID) ; +#endif #endif // defined(CARE_PARALLEL_DEVICE) @@ -920,7 +964,10 @@ CARE_EXTERN template CARE_DLL_API float ArraySumSubset(care::host_device_ptr, care::host_device_ptr, int, float) ; CARE_EXTERN template CARE_DLL_API double ArraySumSubset(care::host_device_ptr, care::host_device_ptr, int, double) ; -// TODO GID not implemented +#if CARE_HAVE_LLNL_GLOBALID +CARE_EXTERN template CARE_DLL_API +globalID ArraySumSubset(care::host_device_ptr, care::host_device_ptr, int, globalID) ; +#endif /////////////////////////////////////////////////////////////////////////////// @@ -934,7 +981,10 @@ CARE_EXTERN template CARE_DLL_API float ArrayMaskedSumSubset(care::host_device_ptr, care::host_device_ptr, care::host_device_ptr, int, float) ; CARE_EXTERN template CARE_DLL_API double ArrayMaskedSumSubset(care::host_device_ptr, care::host_device_ptr, care::host_device_ptr, int, double) ; -// TODO GID not implemented +#if CARE_HAVE_LLNL_GLOBALID +CARE_EXTERN template CARE_DLL_API +globalID ArrayMaskedSumSubset(care::host_device_ptr, care::host_device_ptr, care::host_device_ptr, int, globalID) ; +#endif #endif // defined(CARE_PARALLEL_DEVICE) @@ -946,7 +996,10 @@ CARE_EXTERN template CARE_DLL_API float ArrayMaskedSumSubset(care::host_device_ptr, care::host_device_ptr, care::host_device_ptr, int, float) ; CARE_EXTERN template CARE_DLL_API double ArrayMaskedSumSubset(care::host_device_ptr, care::host_device_ptr, care::host_device_ptr, int, double) ; -// TODO GID not implemented +#if CARE_HAVE_LLNL_GLOBALID +CARE_EXTERN template CARE_DLL_API +globalID ArrayMaskedSumSubset(care::host_device_ptr, care::host_device_ptr, care::host_device_ptr, int, globalID) ; +#endif /////////////////////////////////////////////////////////////////////////////// @@ -960,7 +1013,10 @@ CARE_EXTERN template CARE_DLL_API float ArrayMaskedSum(care::host_device_ptr, care::host_device_ptr, int, float) ; CARE_EXTERN template CARE_DLL_API double ArrayMaskedSum(care::host_device_ptr, care::host_device_ptr, int, double) ; -// TODO GID not implemented +#if CARE_HAVE_LLNL_GLOBALID +CARE_EXTERN template CARE_DLL_API +globalID ArrayMaskedSum(care::host_device_ptr, care::host_device_ptr, int, globalID) ; +#endif #endif // defined(CARE_PARALLEL_DEVICE) @@ -972,7 +1028,10 @@ CARE_EXTERN template CARE_DLL_API float ArrayMaskedSum(care::host_device_ptr, care::host_device_ptr, int, float) ; CARE_EXTERN template CARE_DLL_API double ArrayMaskedSum(care::host_device_ptr, care::host_device_ptr, int, double) ; -// TODO GID not implemented +#if CARE_HAVE_LLNL_GLOBALID +CARE_EXTERN template CARE_DLL_API +globalID ArrayMaskedSum(care::host_device_ptr, care::host_device_ptr, int, globalID) ; +#endif /////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/compress_algorithm_impl.h b/src/care/compress_algorithm_impl.h index 9c9ea8de..a124c68e 100644 --- a/src/care/compress_algorithm_impl.h +++ b/src/care/compress_algorithm_impl.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/config.h.in b/src/care/config.h.in index 9fdbdef8..f64888b7 100644 --- a/src/care/config.h.in +++ b/src/care/config.h.in @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// @@ -47,6 +47,10 @@ #define CARE_DLL_API #endif // defined(_WIN32) && !defined(CARESTATICLIB) +#ifndef CARE_KEY_VALUE_SORTER_DLL_API +#define CARE_KEY_VALUE_SORTER_DLL_API CARE_DLL_API +#endif + #define CARE_STRINGIFY(x) CARE_DO_STRINGIFY(x) #define CARE_DO_STRINGIFY(x) #x #ifdef _WIN32 diff --git a/src/care/detail/test_utils.h b/src/care/detail/test_utils.h index 85c8572e..010be3f6 100644 --- a/src/care/detail/test_utils.h +++ b/src/care/detail/test_utils.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/device_ptr.h b/src/care/device_ptr.h index 58ad43b4..5c5f300c 100644 --- a/src/care/device_ptr.h +++ b/src/care/device_ptr.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/forall.h b/src/care/forall.h index 3c4ce3a3..b53c95f1 100644 --- a/src/care/forall.h +++ b/src/care/forall.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/host_device_map.h b/src/care/host_device_map.h index 6c5e780a..3b5e1220 100644 --- a/src/care/host_device_map.h +++ b/src/care/host_device_map.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// @@ -245,7 +245,8 @@ namespace care { } // move constructor - CARE_HOST_DEVICE host_device_map(host_device_map&& other) noexcept { + CARE_HOST_DEVICE host_device_map(host_device_map&& other) noexcept + { m_max_size = other.m_max_size; m_signal = other.m_signal; m_gpu_map = std::move(other.m_gpu_map); @@ -271,6 +272,7 @@ namespace care { inline CARE_HOST_DEVICE void emplace(key_type key, mapped_type val) const { care::local_ptr size_ptr = m_size_ptr; int index = ATOMIC_ADD(size_ptr[0], 1); + // TODO: should this be removed? // commenting out to avoid having printfs compiled into every kernel that uses emplace //if (size_ptr[0] > m_max_size) { // printf("[CARE] Warning: host_device_map exceeds max size %d > %d\n", size_ptr[0], m_max_size); diff --git a/src/care/host_device_ptr.h b/src/care/host_device_ptr.h index c9aade3a..94ff10f2 100644 --- a/src/care/host_device_ptr.h +++ b/src/care/host_device_ptr.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// @@ -21,6 +21,7 @@ #include "chai/ManagedArray.hpp" // Std library headers +#include #include @@ -93,9 +94,21 @@ namespace care { /// /// @author Peter Robinson /// - /// nullptr constructor + /// Construct from nullptr /// - CARE_HOST_DEVICE host_device_ptr(std::nullptr_t from) noexcept : MA (from) {} + /// @note The constraint prevents overload ambiguity between this + /// constructor and the size_t constructor when constructing + /// with the integer literal 0. Additionally, the constraint + /// is a workaround for a nvcc bug where overload resolution + /// can incorrectly report an ambiguity between this constructor + /// and the size_t constructor. + /// + CARE_HOST_DEVICE host_device_ptr(std::same_as auto from) noexcept : MA (from) {} + + /// + /// Construct from a size + /// + CARE_HOST_DEVICE explicit host_device_ptr(size_t count) noexcept : MA (count) {} /// /// @author Peter Robinson diff --git a/src/care/host_ptr.h b/src/care/host_ptr.h index 5a9521fc..943e4f20 100644 --- a/src/care/host_ptr.h +++ b/src/care/host_ptr.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/local_host_device_ptr.h b/src/care/local_host_device_ptr.h index d6aa2fa8..d6c316e2 100644 --- a/src/care/local_host_device_ptr.h +++ b/src/care/local_host_device_ptr.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/local_ptr.h b/src/care/local_ptr.h index b812a1b9..abe0cbc5 100644 --- a/src/care/local_ptr.h +++ b/src/care/local_ptr.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/managed_ptr.h b/src/care/managed_ptr.h index 35f004d4..a3902d2d 100644 --- a/src/care/managed_ptr.h +++ b/src/care/managed_ptr.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/numeric.h b/src/care/numeric.h index c79e1976..7d91ec9b 100644 --- a/src/care/numeric.h +++ b/src/care/numeric.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/openmp.h b/src/care/openmp.h index 5c6f1b59..6142210f 100644 --- a/src/care/openmp.h +++ b/src/care/openmp.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/policies.h b/src/care/policies.h index c75b069a..45213007 100644 --- a/src/care/policies.h +++ b/src/care/policies.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/scan.cpp b/src/care/scan.cpp index 02d304f4..cec08b3e 100644 --- a/src/care/scan.cpp +++ b/src/care/scan.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/scan.h b/src/care/scan.h index 600c17e9..92e3ba21 100644 --- a/src/care/scan.h +++ b/src/care/scan.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/scan_impl.h b/src/care/scan_impl.h index 391610ba..d7a26ca6 100644 --- a/src/care/scan_impl.h +++ b/src/care/scan_impl.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/single_access_ptr.h b/src/care/single_access_ptr.h index f75a8e4e..92db6c86 100644 --- a/src/care/single_access_ptr.h +++ b/src/care/single_access_ptr.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/src/care/util.h b/src/care/util.h index bd775138..c6a9baba 100644 --- a/src/care/util.h +++ b/src/care/util.h @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/Benchmarks.cpp b/test/Benchmarks.cpp index 5c3ea98a..c4751f31 100644 --- a/test/Benchmarks.cpp +++ b/test/Benchmarks.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index fde473d5..a70a8efe 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## @@ -97,6 +97,19 @@ target_include_directories(TestKeyValueSorter blt_add_test( NAME TestKeyValueSorter COMMAND TestKeyValueSorter ) +blt_add_executable( NAME TestHostDeviceMap + SOURCES TestHostDeviceMap.cpp + DEPENDS_ON ${care_test_dependencies} ) + +target_include_directories(TestHostDeviceMap + PRIVATE ${PROJECT_SOURCE_DIR}/src) + +target_include_directories(TestHostDeviceMap + PRIVATE ${PROJECT_BINARY_DIR}/include) + +blt_add_test( NAME TestHostDeviceMap + COMMAND TestHostDeviceMap ) + if (CARE_ENABLE_MANAGED_PTR) blt_add_executable( NAME TestManagedPtr SOURCES TestManagedPtr.cpp diff --git a/test/TestAlgorithm.cpp b/test/TestAlgorithm.cpp index e5bb8ca6..f178bfb3 100644 --- a/test/TestAlgorithm.cpp +++ b/test/TestAlgorithm.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/TestArray.cpp b/test/TestArray.cpp index 83a6db16..cd308ada 100644 --- a/test/TestArray.cpp +++ b/test/TestArray.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/TestForall.cpp b/test/TestForall.cpp index c79812fa..ba75e961 100644 --- a/test/TestForall.cpp +++ b/test/TestForall.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/TestHostDeviceMap.cpp b/test/TestHostDeviceMap.cpp new file mode 100644 index 00000000..c1e229a3 --- /dev/null +++ b/test/TestHostDeviceMap.cpp @@ -0,0 +1,95 @@ +////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE +// project contributors. See the CARE LICENSE file for details. +// +// SPDX-License-Identifier: BSD-3-Clause +////////////////////////////////////////////////////////////////////////////// + +#include "care/config.h" + +#include "gtest/gtest.h" + +#include "care/DefaultMacros.h" +#include "care/host_device_map.h" +#include "care/host_device_ptr.h" +#include "care/detail/test_utils.h" + +#include + +#if defined(CARE_GPUCC) +GPU_TEST(HostDeviceMap, InsertSortLookup) +{ + init_care_for_testing(); + + constexpr int num_entries = 4; + constexpr int missing_key = 77; + constexpr int miss_signal = -999; + care::host_device_map map(num_entries, miss_signal); + + CARE_STREAM_LOOP(i, 0, num_entries) { + map.emplace((num_entries - 1) - i, 100 + i); + } CARE_STREAM_LOOP_END + + map.sort(); + EXPECT_EQ(map.size(), num_entries); + + care::host_device_ptr values(num_entries + 1, "map_values"); + + CARE_STREAM_LOOP(i, 0, num_entries) { + values[i] = map.at((num_entries - 1) - i); + } CARE_STREAM_LOOP_END + + CARE_STREAM_LOOP(i, num_entries, num_entries + 1) { + values[i] = map.at(missing_key); + } CARE_STREAM_LOOP_END + + EXPECT_EQ(values.pick(0), 100); + EXPECT_EQ(values.pick(1), 101); + EXPECT_EQ(values.pick(2), 102); + EXPECT_EQ(values.pick(3), 103); + EXPECT_EQ(values.pick(4), miss_signal); + + map.free(); +} + +GPU_TEST(HostDeviceMap, VectorDefaultConstruction) +{ + init_care_for_testing(); + + constexpr int num_maps = 2; + constexpr int num_entries = 2; + constexpr int miss_signal = -1; + std::vector> maps(num_maps); + + maps[0] = care::host_device_map(num_entries, miss_signal); + maps[1] = care::host_device_map(num_entries, miss_signal); + + auto map0_insert = maps[0]; + auto map1_insert = maps[1]; + + CARE_STREAM_LOOP(i, 0, num_entries) { + map0_insert.emplace(i, 10 + i); + map1_insert.emplace(10 + i, 20 + i); + } CARE_STREAM_LOOP_END + + maps[0].sort(); + maps[1].sort(); + + const auto map0 = maps[0]; + const auto map1 = maps[1]; + care::host_device_ptr values(2 * num_entries, "vector_map_values"); + + CARE_STREAM_LOOP(i, 0, num_entries) { + values[i] = map0.at(i); + values[num_entries + i] = map1.at(10 + i); + } CARE_STREAM_LOOP_END + + EXPECT_EQ(values.pick(0), 10); + EXPECT_EQ(values.pick(1), 11); + EXPECT_EQ(values.pick(2), 20); + EXPECT_EQ(values.pick(3), 21); + + maps[0].free(); + maps[1].free(); +} +#endif // CARE_GPUCC diff --git a/test/TestKeyValueSorter.cpp b/test/TestKeyValueSorter.cpp index a9703c7a..35c05a63 100644 --- a/test/TestKeyValueSorter.cpp +++ b/test/TestKeyValueSorter.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/TestLoopFuser.cxx b/test/TestLoopFuser.cxx index 7bb08556..306a4b0e 100644 --- a/test/TestLoopFuser.cxx +++ b/test/TestLoopFuser.cxx @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/TestManagedPtr.cpp b/test/TestManagedPtr.cpp index a0a2963c..52164690 100644 --- a/test/TestManagedPtr.cpp +++ b/test/TestManagedPtr.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/TestNestedMA.cpp b/test/TestNestedMA.cpp index 50789b98..9bcaa44e 100644 --- a/test/TestNestedMA.cpp +++ b/test/TestNestedMA.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/TestNumeric.cpp b/test/TestNumeric.cpp index fd372020..2341c5fd 100644 --- a/test/TestNumeric.cpp +++ b/test/TestNumeric.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/TestScan.cpp b/test/TestScan.cpp index e6e312dc..6f7963c2 100644 --- a/test/TestScan.cpp +++ b/test/TestScan.cpp @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/test/TestSortFuser.cxx b/test/TestSortFuser.cxx index 418cbcdc..baf22f8e 100644 --- a/test/TestSortFuser.cxx +++ b/test/TestSortFuser.cxx @@ -1,6 +1,6 @@ ////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -// project contributors. See the CARE LICENSE file for details. +// Copyright (c) Lawrence Livermore National Security, LLC and other CARE +// contributors. See the CARE LICENSE and COPYRIGHT files for details. // // SPDX-License-Identifier: BSD-3-Clause ////////////////////////////////////////////////////////////////////////////// diff --git a/tpl/chai b/tpl/chai index 26d56467..7ed19adb 160000 --- a/tpl/chai +++ b/tpl/chai @@ -1 +1 @@ -Subproject commit 26d5646707e1848b0524379b12a7716e4a830a27 +Subproject commit 7ed19adb246d6df796434750d2994b84cd8558e7 diff --git a/tpl/raja b/tpl/raja index e827035c..80d218eb 160000 --- a/tpl/raja +++ b/tpl/raja @@ -1 +1 @@ -Subproject commit e827035c630e71a9358e2f21c2f3cf6fd5fb6605 +Subproject commit 80d218eba514a6d51bfd99ab6ebd6fbf83a74ca9 diff --git a/tpl/umpire b/tpl/umpire index 0372fbd6..5639f6c1 160000 --- a/tpl/umpire +++ b/tpl/umpire @@ -1 +1 @@ -Subproject commit 0372fbd6e1f17d7e6dd72693f8b857f3ec7559e9 +Subproject commit 5639f6c1fd4ca1fed7f0f1f48dcbbfbd00899484 diff --git a/tpl/versions.txt b/tpl/versions.txt index f890b077..f9613d8b 100644 --- a/tpl/versions.txt +++ b/tpl/versions.txt @@ -1,11 +1,11 @@ ############################################################################## -# Copyright (c) 2020-25, Lawrence Livermore National Security, LLC and CARE -# project contributors. See the CARE LICENSE file for details. +# Copyright (c) Lawrence Livermore National Security, LLC and other CARE +# contributors. See the CARE LICENSE and COPYRIGHT files for details. # # SPDX-License-Identifier: BSD-3-Clause ############################################################################## -BLT: 0.7.1 -CHAI: v2025.12.0 -RAJA: v2025.12.0 -Umpire: v2025.12.0 +BLT: 0.7.2 +CHAI: v2026.07.0 +RAJA: v2026.07.0 +Umpire: v2026.07.1