diff --git a/repos/spack_repo/builtin/packages/blt/package.py b/repos/spack_repo/builtin/packages/blt/package.py index 9f2552720dc..17c7a97c1d9 100644 --- a/repos/spack_repo/builtin/packages/blt/package.py +++ b/repos/spack_repo/builtin/packages/blt/package.py @@ -76,6 +76,13 @@ class Blt(Package): version("0.2.5", sha256="3a000f60194e47b3e5623cc528cbcaf88f7fea4d9620b3c7446ff6658dc582a5") version("0.2.0", sha256="c0cadf1269c2feb189e398a356e3c49170bc832df95e5564e32bdbb1eb0fa1b3") + # https://github.com/google/googletest/pull/4798 + patch( + "https://github.com/LLNL/blt/commit/5ff55b519fc8d5216b07edaf301e2d2bf328021e.patch?full_index=1", + sha256="116702b89d01e022546911fe0b823afa99a6b37a35077055141ad5d480508422", + when="@0.7.1", + ) + depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated diff --git a/repos/spack_repo/builtin/packages/caliper/package.py b/repos/spack_repo/builtin/packages/caliper/package.py index 4d960e8b55f..ad214822424 100644 --- a/repos/spack_repo/builtin/packages/caliper/package.py +++ b/repos/spack_repo/builtin/packages/caliper/package.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import re import socket import sys @@ -10,6 +11,7 @@ CachedCMakePackage, cmake_cache_option, cmake_cache_path, + cmake_cache_string, ) from spack_repo.builtin.build_systems.cuda import CudaPackage from spack_repo.builtin.build_systems.rocm import ROCmPackage @@ -95,7 +97,9 @@ class Caliper(CachedCMakePackage, CudaPackage, ROCmPackage): conflicts("+rocm+cuda") # Legacy nvtx is only supported until cuda@12.8, newer cuda only provides nvtx3. - conflicts("^cuda@12.9:", "@:2.12.1") + conflicts("^cuda@12.9:", "@:2.13.1") + # rocprofiler-sdk is only supported since rocm@6.2.4. + conflicts("^llvm-amdgpu@:6.2.3", "@2.14: +rocm") patch("libunwind.patch", when="@:2.13") patch( @@ -154,11 +158,54 @@ def initconfig_hardware_entries(self): entries.append(cmake_cache_option("WITH_NVTX", True)) entries.append(cmake_cache_path("CUDA_TOOLKIT_ROOT_DIR", spec["cuda"].prefix)) entries.append(cmake_cache_path("CUPTI_PREFIX", spec["cuda"].prefix)) + + # CUDA configuration from cuda_for_radiuss_projects + cuda_flags = [] + if not spec.satisfies("cuda_arch=none"): + cuda_archs = ";".join(spec.variants["cuda_arch"].value) + entries.append(cmake_cache_string("CMAKE_CUDA_ARCHITECTURES", cuda_archs)) + + # gcc-toolchain support + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + if using_toolchain: + cuda_flags.append("-Xcompiler {}".format(using_toolchain[0])) + + if cuda_flags: + entries.append(cmake_cache_string("CMAKE_CUDA_FLAGS", " ".join(cuda_flags))) else: entries.append(cmake_cache_option("WITH_CUPTI", False)) entries.append(cmake_cache_option("WITH_NVTX", False)) if spec.satisfies("+rocm"): + # HIP configuration from hip_for_radiuss_projects + rocm_root = spec["llvm-amdgpu"].prefix + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + hip_link_flags = "" + + if using_toolchain: + gcc_prefix = using_toolchain[0] + entries.append( + cmake_cache_string("HIP_CLANG_FLAGS", "--gcc-toolchain={0}".format(gcc_prefix)) + ) + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", + hip_link_flags + " -Wl,-rpath={0}/lib64".format(gcc_prefix), + ) + ) + else: + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", "-Wl,-rpath={0}/llvm/lib/".format(rocm_root) + ) + ) + if spec.satisfies("@2.14:"): entries.append(cmake_cache_option("WITH_ROCPROFILER", True)) entries.append(cmake_cache_option("WITH_ROCTRACER", False)) diff --git a/repos/spack_repo/builtin/packages/care/package.py b/repos/spack_repo/builtin/packages/care/package.py index 6a2d95dcb03..89e31a2e840 100644 --- a/repos/spack_repo/builtin/packages/care/package.py +++ b/repos/spack_repo/builtin/packages/care/package.py @@ -2,6 +2,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re import socket from spack_repo.builtin.build_systems.cached_cmake import ( @@ -32,6 +33,12 @@ class Care(CachedCMakePackage, CudaPackage, ROCmPackage): version("develop", branch="develop", submodules=False) version("master", branch="master", submodules=False) + version( + "0.15.3", + tag="v0.15.3", + commit="132252376aa460fa900d034f7b018d3a169afce6", + submodules=False, + ) version( "0.15.2", tag="v0.15.2", @@ -149,7 +156,8 @@ class Care(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("umpire") depends_on("umpire+mpi", when="+mpi") - depends_on("umpire@2025.09:", when="@0.15.2:") + depends_on("umpire@2025.12:", when="@0.15.3:") + depends_on("umpire@2025.09", when="@0.15.2") depends_on("umpire@2025.03", when="@0.15.0") depends_on("umpire@2024.07.0", when="@0.13.2") depends_on("umpire@2024.02.1", when="@0.13.0") @@ -157,7 +165,8 @@ class Care(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("umpire@2022.10.0", when="@0.10.0") depends_on("raja") - depends_on("raja@2025.09:", when="@0.15.2:") + depends_on("raja@2025.12:", when="@0.15.3:") + depends_on("raja@2025.09", when="@0.15.2") depends_on("raja@2025.03", when="@0.15.0") depends_on("raja@2024.07.0", when="@0.13.2") depends_on("raja@2024.02.2", when="@0.13.1") @@ -167,7 +176,8 @@ class Care(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("chai+enable_pick", when="@:0.14.99") depends_on("chai+raja") - depends_on("chai@2025.09.1:", when="@0.15.2:") + depends_on("chai@2025.12:", when="@0.15.3:") + depends_on("chai@2025.09.1", when="@0.15.2") depends_on("chai@2025.03", when="@0.15.0") depends_on("chai@2024.07.0", when="@0.13.2") depends_on("chai@2024.02.2", when="@0.13.1") @@ -260,11 +270,54 @@ def initconfig_hardware_entries(self): entries.append(cmake_cache_option("CUDA_SEPARABLE_COMPILATION", True)) entries.append(cmake_cache_string("NVTOOLSEXT_DIR", spec["cuda"].prefix)) entries.append(cmake_cache_string("CUB_DIR", spec["cub"].prefix)) + + # CUDA configuration from cuda_for_radiuss_projects + cuda_flags = [] + if not spec.satisfies("cuda_arch=none"): + cuda_archs = ";".join(spec.variants["cuda_arch"].value) + entries.append(cmake_cache_string("CMAKE_CUDA_ARCHITECTURES", cuda_archs)) + + # gcc-toolchain support + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + if using_toolchain: + cuda_flags.append("-Xcompiler {}".format(using_toolchain[0])) + + if cuda_flags: + entries.append(cmake_cache_string("CMAKE_CUDA_FLAGS", " ".join(cuda_flags))) else: entries.append(cmake_cache_option("ENABLE_CUDA", False)) if spec.satisfies("+rocm"): entries.append(cmake_cache_option("ENABLE_HIP", True)) + + # HIP configuration from hip_for_radiuss_projects + rocm_root = spec["llvm-amdgpu"].prefix + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + hip_link_flags = "" + + if using_toolchain: + gcc_prefix = using_toolchain[0] + entries.append( + cmake_cache_string("HIP_CLANG_FLAGS", "--gcc-toolchain={0}".format(gcc_prefix)) + ) + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", + hip_link_flags + " -Wl,-rpath={0}/lib64".format(gcc_prefix), + ) + ) + else: + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", "-Wl,-rpath={0}/llvm/lib/".format(rocm_root) + ) + ) else: entries.append(cmake_cache_option("ENABLE_HIP", False)) @@ -272,8 +325,8 @@ def initconfig_hardware_entries(self): def initconfig_mpi_entries(self): spec = self.spec - entries = super(Care, self).initconfig_mpi_entries() + entries.append(cmake_cache_option("ENABLE_MPI", spec.satisfies("+mpi"))) return entries diff --git a/repos/spack_repo/builtin/packages/chai/package.py b/repos/spack_repo/builtin/packages/chai/package.py index 06c798f0af2..ecd69a4c75b 100644 --- a/repos/spack_repo/builtin/packages/chai/package.py +++ b/repos/spack_repo/builtin/packages/chai/package.py @@ -2,6 +2,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re import socket from spack_repo.builtin.build_systems.cached_cmake import ( @@ -31,6 +32,12 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("develop", branch="develop", submodules=False) + version( + "2025.12.0", + tag="v2025.12.0", + commit="26d5646707e1848b0524379b12a7716e4a830a27", + submodules=False, + ) version( "2025.09.1", tag="v2025.09.1", @@ -179,7 +186,8 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage): conflicts("^blt@:0.3.6", when="+rocm") depends_on("umpire") - depends_on("umpire@2025.09:", when="@2025.09:") + depends_on("umpire@2025.12:", when="@2025.12:") + depends_on("umpire@2025.09", when="@2025.09") depends_on("umpire@2025.03", when="@2025.03") depends_on("umpire@2024.07.0", when="@2024.07.0") depends_on("umpire@2024.02.1", when="@2024.02.1") @@ -209,7 +217,8 @@ class Chai(CachedCMakePackage, CudaPackage, ROCmPackage): with when("+raja"): depends_on("raja~openmp", when="~openmp") depends_on("raja+openmp", when="+openmp") - depends_on("raja@2025.09:", when="@2025.09.0:") + depends_on("raja@2025.12:", when="@2025.12.0:") + depends_on("raja@2025.09", when="@2025.09.0") depends_on("raja@2025.03.2", when="@2025.03.1") depends_on("raja@2025.03.0", when="@2025.03.0") depends_on("raja@2024.07.0", when="@2024.07.0") @@ -282,11 +291,54 @@ def initconfig_hardware_entries(self): if spec.satisfies("+separable_compilation"): entries.append(cmake_cache_option("CMAKE_CUDA_SEPARABLE_COMPILATION", True)) entries.append(cmake_cache_option("CUDA_SEPARABLE_COMPILATION", True)) + + # CUDA configuration from cuda_for_radiuss_projects + cuda_flags = [] + if not spec.satisfies("cuda_arch=none"): + cuda_archs = ";".join(spec.variants["cuda_arch"].value) + entries.append(cmake_cache_string("CMAKE_CUDA_ARCHITECTURES", cuda_archs)) + + # gcc-toolchain support + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + if using_toolchain: + cuda_flags.append("-Xcompiler {}".format(using_toolchain[0])) + + if cuda_flags: + entries.append(cmake_cache_string("CMAKE_CUDA_FLAGS", " ".join(cuda_flags))) else: entries.append(cmake_cache_option("ENABLE_CUDA", False)) if spec.satisfies("+rocm"): entries.append(cmake_cache_option("ENABLE_HIP", True)) + + # HIP configuration from hip_for_radiuss_projects + rocm_root = spec["llvm-amdgpu"].prefix + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + hip_link_flags = "" + + if using_toolchain: + gcc_prefix = using_toolchain[0] + entries.append( + cmake_cache_string("HIP_CLANG_FLAGS", "--gcc-toolchain={0}".format(gcc_prefix)) + ) + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", + hip_link_flags + " -Wl,-rpath={0}/lib64".format(gcc_prefix), + ) + ) + else: + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", "-Wl,-rpath={0}/llvm/lib/".format(rocm_root) + ) + ) else: entries.append(cmake_cache_option("ENABLE_HIP", False)) @@ -294,8 +346,8 @@ def initconfig_hardware_entries(self): def initconfig_mpi_entries(self): spec = self.spec - entries = super(Chai, self).initconfig_mpi_entries() + entries.append(cmake_cache_option("ENABLE_MPI", spec.satisfies("+mpi"))) return entries diff --git a/repos/spack_repo/builtin/packages/raja/package.py b/repos/spack_repo/builtin/packages/raja/package.py index 358296ec677..5cae66ebdbb 100644 --- a/repos/spack_repo/builtin/packages/raja/package.py +++ b/repos/spack_repo/builtin/packages/raja/package.py @@ -2,6 +2,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re import socket from spack_repo.builtin.build_systems.cached_cmake import ( @@ -39,6 +40,12 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): version("develop", branch="develop", submodules=submodules) version("main", branch="main", submodules=submodules) + version( + "2025.12.0", + tag="v2025.12.0", + commit="e827035c630e71a9358e2f21c2f3cf6fd5fb6605", + submodules=submodules, + ) version( "2025.09.1", tag="v2025.09.1", @@ -221,7 +228,7 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): variant("openmp", default=False, description="Build OpenMP backend") variant("shared", default=False, description="Build shared libs") variant("desul", default=False, description="Build desul atomics backend") - variant("vectorization", default=False, description="Build SIMD/SIMT intrinsics support") + variant("vectorization", default=True, description="Build SIMD/SIMT intrinsics support") variant( "omptask", default=False, description="Build OpenMP task variants of internal algorithms" ) @@ -230,6 +237,7 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): variant("gpu-profiling", default=False, description="Enable GPU profiling") variant("plugins", default=False, description="Enable runtime plugins") + variant("caliper", default=False, description="Enable caliper support") variant("examples", default=True, description="Build examples.") variant("exercises", default=True, description="Build exercises.") # TODO: figure out gtest dependency and then set this default True @@ -281,8 +289,8 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("camp+openmp", when="+openmp") depends_on("camp+omptarget", when="+omptarget") depends_on("camp+sycl", when="+sycl") - depends_on("camp@main", when="@develop") - depends_on("camp@2025.09:", when="@2025.09:") + depends_on("camp@2025.12:", when="@2025.12:") + depends_on("camp@2025.09", when="@2025.09") depends_on("camp@2025.03", when="@2025.03") depends_on("camp@2024.07", when="@2024.07") depends_on("camp@2024.02.1", when="@2024.02.1") @@ -303,6 +311,8 @@ class Raja(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("llvm-openmp", when="+openmp %apple-clang") + depends_on("caliper", when="+caliper") + depends_on("rocprim", when="+rocm") with when("+rocm @0.12.0:"): depends_on("camp+rocm") @@ -382,12 +392,57 @@ def initconfig_hardware_entries(self): entries.append(cmake_cache_option("ENABLE_OPENMP", spec.satisfies("+openmp"))) entries.append(cmake_cache_option("ENABLE_CUDA", spec.satisfies("+cuda"))) + if spec.satisfies("+cuda"): + # CUDA configuration from cuda_for_radiuss_projects + cuda_flags = [] + if not spec.satisfies("cuda_arch=none"): + cuda_archs = ";".join(spec.variants["cuda_arch"].value) + entries.append(cmake_cache_string("CMAKE_CUDA_ARCHITECTURES", cuda_archs)) + + # gcc-toolchain support + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + if using_toolchain: + cuda_flags.append("-Xcompiler {}".format(using_toolchain[0])) + + if cuda_flags: + entries.append(cmake_cache_string("CMAKE_CUDA_FLAGS", " ".join(cuda_flags))) + if spec.satisfies("+rocm"): entries.append(cmake_cache_option("ENABLE_HIP", True)) + + # HIP configuration from hip_for_radiuss_projects + rocm_root = spec["llvm-amdgpu"].prefix + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + hip_link_flags = "" + + if using_toolchain: + gcc_prefix = using_toolchain[0] + entries.append( + cmake_cache_string("HIP_CLANG_FLAGS", "--gcc-toolchain={0}".format(gcc_prefix)) + ) + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", + hip_link_flags + " -Wl,-rpath={0}/lib64".format(gcc_prefix), + ) + ) + else: + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", "-Wl,-rpath={0}/llvm/lib/".format(rocm_root) + ) + ) + hipcc_flags = [] if self.spec.satisfies("^rocprim@7.0"): hipcc_flags.append("-std=c++17") - elif self.spec.satisfies("@2025.09.0:"): + if self.spec.satisfies("@2025.09.0:"): hipcc_flags.append("-std=c++17") elif self.spec.satisfies("@0.14.0:2025.09.0"): hipcc_flags.append("-std=c++14") diff --git a/repos/spack_repo/builtin/packages/raja_perf/package.py b/repos/spack_repo/builtin/packages/raja_perf/package.py index 3a0732d196b..88f8c172bf5 100644 --- a/repos/spack_repo/builtin/packages/raja_perf/package.py +++ b/repos/spack_repo/builtin/packages/raja_perf/package.py @@ -2,6 +2,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re import socket from spack_repo.builtin.build_systems.cached_cmake import ( @@ -120,6 +121,7 @@ class RajaPerf(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("cxx", type="build") # generated depends_on("blt") + depends_on("blt@0.7.0:", type="build", when="@2025.03.0:") depends_on("blt@0.6.2:", type="build", when="@2024.07.0:") depends_on("blt@0.5.3", type="build", when="@2023.06") depends_on("blt@0.5.2:0.5.3", type="build", when="@2022.10") @@ -229,6 +231,21 @@ def initconfig_hardware_entries(self): entries.append(cmake_cache_option("ENABLE_CUDA", True)) # Shared handling of cuda. + # CUDA configuration from cuda_for_radiuss_projects + cuda_flags = [] + if not spec.satisfies("cuda_arch=none"): + cuda_archs = ";".join(spec.variants["cuda_arch"].value) + entries.append(cmake_cache_string("CMAKE_CUDA_ARCHITECTURES", cuda_archs)) + + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + if using_toolchain: + cuda_flags.append("-Xcompiler {}".format(using_toolchain[0])) + + entries.append(cmake_cache_string("CMAKE_CUDA_FLAGS", " ".join(cuda_flags))) + # Custom options. # We place everything in CMAKE_CUDA_FLAGS_(RELEASE|RELWITHDEBINFO|DEBUG) # which are not set by cuda_for_radiuss_projects @@ -268,6 +285,31 @@ def initconfig_hardware_entries(self): if "+rocm" in spec: entries.append(cmake_cache_option("ENABLE_HIP", True)) + + # HIP configuration from hip_for_radiuss_projects + rocm_root = spec["llvm-amdgpu"].prefix + hip_link_flags = "" + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + if using_toolchain: + gcc_prefix = using_toolchain[0] + entries.append( + cmake_cache_string("HIP_CLANG_FLAGS", "--gcc-toolchain={0}".format(gcc_prefix)) + ) + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", + hip_link_flags + " -Wl,-rpath={0}/lib64".format(gcc_prefix), + ) + ) + else: + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", "-Wl,-rpath={0}/llvm/lib/".format(rocm_root) + ) + ) else: entries.append(cmake_cache_option("ENABLE_HIP", False)) diff --git a/repos/spack_repo/builtin/packages/umpire/package.py b/repos/spack_repo/builtin/packages/umpire/package.py index d277963e1d9..715683b6be7 100644 --- a/repos/spack_repo/builtin/packages/umpire/package.py +++ b/repos/spack_repo/builtin/packages/umpire/package.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import os +import re import socket from spack_repo.builtin.build_systems.cached_cmake import ( @@ -31,6 +32,12 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): license("MIT") version("develop", branch="develop", submodules=False) + version( + "2025.12.0", + tag="v2025.12.0", + commit="0372fbd6e1f17d7e6dd72693f8b857f3ec7559e9", + submodules=False, + ) version( "2025.09.0", tag="v2025.09.0", @@ -190,6 +197,13 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): when="@:5.0.1 ^blt@0.4:", ) + # https://github.com/LLNL/Umpire/pull/805 + patch( + "https://github.com/LLNL/Umpire/commit/47ff0aa1f7a01a917c3b7ac618e8a9e44a10fd25.patch?full_index=1", + sha256="802f074a05e1cb1f428e13d99c5fcb1435f86bd8f36a1ea2f7b6756e6625e0a0", + when="@2022.10.0", + ) + # https://github.com/LLNL/Umpire/pull/816 patch( "https://github.com/LLNL/Umpire/commit/2292d1d6078f6d9523b7ad0886ffa053644569d5.patch?full_index=1", @@ -231,7 +245,7 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): variant("backtrace", default=False, description="Enable backtrace tools") variant("dev_benchmarks", default=False, description="Enable developer benchmarks") variant("device_alloc", default=False, description="Enable DeviceAllocator") - variant("werror", default=False, description="Enable warnings as errors") + variant("werror", default=True, description="Enable warnings as errors") variant("asan", default=False, description="Enable ASAN") variant("sanitizer_tests", default=False, description="Enable address sanitizer tests") variant("fmt_header_only", default=True, description="Link to header-only fmt target") @@ -265,7 +279,8 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("camp+openmp", when="+openmp") depends_on("camp~cuda", when="~cuda") depends_on("camp~rocm", when="~rocm") - depends_on("camp@2025.09:", when="@2025.09:") + depends_on("camp@2025.12:", when="@2025.12:") + depends_on("camp@2025.09", when="@2025.09") depends_on("camp@2025.03", when="@2025.03") depends_on("camp@2024.07", when="@2024.07") depends_on("camp@2024.02.1", when="@2024.02.1") @@ -279,9 +294,9 @@ class Umpire(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("sqlite", when="+sqlite_experimental") depends_on("mpi", when="+mpi") - depends_on("fmt@9.1:", when="@2024.02.0:") + depends_on("fmt@9.1:11.0", when="@2024.02.0:") # For some reason, we need c++ 17 explicitly only with intel - depends_on("fmt@9.1: cxxstd=17", when="@2024.02.0: %intel@19.1") + depends_on("fmt@9.1:11.0 cxxstd=17", when="@2024.02.0: %intel@19.1") with when("@5.0.0:"): with when("+cuda"): @@ -385,11 +400,51 @@ def initconfig_hardware_entries(self): entries.append(cmake_cache_option("ENABLE_CUDA", True)) # Umpire used to pick only the first architecture in the list. The shared logic in # CachedCMakePackage keeps the list of architectures. + + # CUDA configuration from cuda_for_radiuss_projects + cuda_flags = [] + if not spec.satisfies("cuda_arch=none"): + cuda_archs = ";".join(spec.variants["cuda_arch"].value) + entries.append(cmake_cache_string("CMAKE_CUDA_ARCHITECTURES", cuda_archs)) + + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + if using_toolchain: + cuda_flags.append("-Xcompiler {}".format(using_toolchain[0])) + + entries.append(cmake_cache_string("CMAKE_CUDA_FLAGS", " ".join(cuda_flags))) else: entries.append(cmake_cache_option("ENABLE_CUDA", False)) if spec.satisfies("+rocm"): entries.append(cmake_cache_option("ENABLE_HIP", True)) + + # HIP configuration from hip_for_radiuss_projects + rocm_root = spec["llvm-amdgpu"].prefix + hip_link_flags = "" + gcc_toolchain_regex = re.compile(".*gcc-toolchain.*") + using_toolchain = list( + filter(gcc_toolchain_regex.match, spec.compiler_flags["cxxflags"]) + ) + if using_toolchain: + gcc_prefix = using_toolchain[0] + entries.append( + cmake_cache_string("HIP_CLANG_FLAGS", "--gcc-toolchain={0}".format(gcc_prefix)) + ) + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", + hip_link_flags + " -Wl,-rpath={0}/lib64".format(gcc_prefix), + ) + ) + else: + entries.append( + cmake_cache_string( + "CMAKE_EXE_LINKER_FLAGS", "-Wl,-rpath={0}/llvm/lib/".format(rocm_root) + ) + ) else: entries.append(cmake_cache_option("ENABLE_HIP", False)) @@ -412,8 +467,8 @@ def initconfig_hardware_entries(self): def initconfig_mpi_entries(self): spec = self.spec - entries = super().initconfig_mpi_entries() + entries.append(cmake_cache_option("ENABLE_MPI", spec.satisfies("+mpi"))) entries.append( cmake_cache_option("UMPIRE_ENABLE_MPI3_SHARED_MEMORY", spec.satisfies("+mpi3_shmem"))