diff --git a/lib/spack/spack/build_systems/cuda.py b/lib/spack/spack/build_systems/cuda.py index 1c8bc5b244f..b6e7e81868f 100644 --- a/lib/spack/spack/build_systems/cuda.py +++ b/lib/spack/spack/build_systems/cuda.py @@ -15,7 +15,7 @@ class CudaPackage(PackageBase): """Auxiliary class which contains CUDA variant, dependencies and conflicts and is meant to unify and facilitate its usage. - Maintainers: ax3l, Rombur, davidbeckingsale + Maintainers: ax3l, Rombur, davidbeckingsale, pauleonix """ # https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list @@ -47,6 +47,12 @@ class CudaPackage(PackageBase): "89", "90", "90a", + "100", + "100a", + "101", + "101a", + "120", + "120a", ) # FIXME: keep cuda and cuda_arch separate to make usage easier until @@ -99,39 +105,56 @@ def compute_capabilities(arch_list: Iterable[str]) -> List[str]: # CUDA version vs Architecture # https://en.wikipedia.org/wiki/CUDA#GPUs_supported # https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#deprecated-features + # Tesla support: depends_on("cuda@:6.0", when="cuda_arch=10") depends_on("cuda@:6.5", when="cuda_arch=11") depends_on("cuda@2.1:6.5", when="cuda_arch=12") depends_on("cuda@2.1:6.5", when="cuda_arch=13") + # Fermi support: depends_on("cuda@3.0:8.0", when="cuda_arch=20") depends_on("cuda@3.2:8.0", when="cuda_arch=21") + # Kepler support: depends_on("cuda@5.0:10.2", when="cuda_arch=30") depends_on("cuda@5.0:10.2", when="cuda_arch=32") depends_on("cuda@5.0:11.8", when="cuda_arch=35") depends_on("cuda@6.5:11.8", when="cuda_arch=37") + # Maxwell support: depends_on("cuda@6.0:", when="cuda_arch=50") depends_on("cuda@6.5:", when="cuda_arch=52") depends_on("cuda@6.5:", when="cuda_arch=53") + # Pascal support: depends_on("cuda@8.0:", when="cuda_arch=60") depends_on("cuda@8.0:", when="cuda_arch=61") depends_on("cuda@8.0:", when="cuda_arch=62") + # Volta support: depends_on("cuda@9.0:", when="cuda_arch=70") + # Turing support: depends_on("cuda@9.0:", when="cuda_arch=72") depends_on("cuda@10.0:", when="cuda_arch=75") + # Ampere support: depends_on("cuda@11.0:", when="cuda_arch=80") depends_on("cuda@11.1:", when="cuda_arch=86") depends_on("cuda@11.4:", when="cuda_arch=87") + # Ada support: depends_on("cuda@11.8:", when="cuda_arch=89") + # Hopper support: depends_on("cuda@12.0:", when="cuda_arch=90") depends_on("cuda@12.0:", when="cuda_arch=90a") + # Blackwell support: + depends_on("cuda@12.8:", when="cuda_arch=100") + depends_on("cuda@12.8:", when="cuda_arch=100a") + depends_on("cuda@12.8:", when="cuda_arch=101") + depends_on("cuda@12.8:", when="cuda_arch=101a") + depends_on("cuda@12.8:", when="cuda_arch=120") + depends_on("cuda@12.8:", when="cuda_arch=120a") # From the NVIDIA install guide we know of conflicts for particular # platforms (linux, darwin), architectures (x86, powerpc) and compilers # (gcc, clang). We don't restrict %gcc and %clang conflicts to @@ -163,6 +186,7 @@ def compute_capabilities(arch_list: Iterable[str]) -> List[str]: conflicts("%gcc@12:", when="+cuda ^cuda@:11.8") conflicts("%gcc@13:", when="+cuda ^cuda@:12.3") conflicts("%gcc@14:", when="+cuda ^cuda@:12.6") + conflicts("%gcc@15:", when="+cuda ^cuda@:12.8") conflicts("%clang@12:", when="+cuda ^cuda@:11.4.0") conflicts("%clang@13:", when="+cuda ^cuda@:11.5") conflicts("%clang@14:", when="+cuda ^cuda@:11.7") @@ -171,6 +195,7 @@ def compute_capabilities(arch_list: Iterable[str]) -> List[str]: conflicts("%clang@17:", when="+cuda ^cuda@:12.3") conflicts("%clang@18:", when="+cuda ^cuda@:12.5") conflicts("%clang@19:", when="+cuda ^cuda@:12.6") + conflicts("%clang@20:", when="+cuda ^cuda@:12.8") # https://gist.github.com/ax3l/9489132#gistcomment-3860114 conflicts("%gcc@10", when="+cuda ^cuda@:11.4.0") diff --git a/var/spack/repos/builtin/packages/cuda/package.py b/var/spack/repos/builtin/packages/cuda/package.py index e521a7ffc90..72dd1cc5604 100644 --- a/var/spack/repos/builtin/packages/cuda/package.py +++ b/var/spack/repos/builtin/packages/cuda/package.py @@ -21,6 +21,16 @@ # format returned by platform.system() and 'arch' by platform.machine() _versions = { + "12.8.0": { + "Linux-aarch64": ( + "5bc211f00c4f544da6e3fc3a549b3eb0a7e038439f5f3de71caa688f2f6b132c", + "https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_570.86.10_linux_sbsa.run", + ), + "Linux-x86_64": ( + "610867dcd6d94c4e36c4924f1d01b9db28ec08164e8af6c764f21b84200695f8", + "https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_570.86.10_linux.run", + ), + }, "12.6.3": { "Linux-aarch64": ( "213ea63a6357020978a8b0a79a8c9d12a2a5941afa1cdc69d5a3f933fa8bed04", diff --git a/var/spack/repos/builtin/packages/cusz/package.py b/var/spack/repos/builtin/packages/cusz/package.py index 99f11136555..66108386399 100644 --- a/var/spack/repos/builtin/packages/cusz/package.py +++ b/var/spack/repos/builtin/packages/cusz/package.py @@ -19,7 +19,10 @@ class Cusz(CMakePackage, CudaPackage): conflicts("cuda_arch=none", when="+cuda") version("develop", branch="develop") - version("0.6.0", commit="cafed521dc338fe2159ebb5b09a36fc318524bf7") + version("0.14.0", commit="e57fd7cd9df923164af9dd307b0b3d37dd9df137") + version("0.9.0rc3", commit="c3c3a74d006c6de3c145255241fb181682bd1492") + # 0.9.0rc1 was listed as 0.6.0 for a while in spack + version("0.9.0rc1", commit="cafed521dc338fe2159ebb5b09a36fc318524bf7") version("0.3.1", commit="02be3cbd07db467decaf45ec9eb593ba6173c809") version("0.3", sha256="0feb4f7fd64879fe147624dd5ad164adf3983f79b2e0383d35724f8d185dcb11") @@ -31,6 +34,10 @@ class Cusz(CMakePackage, CudaPackage): depends_on("cub", when="^cuda@:10.2.89") + patch("thrust-includes.patch", when="@0.10:0.14 ^cuda@12.8:") + patch("thrust-includes-0.9.patch", when="@0.9 ^cuda@12.8:") + conflicts("^cuda@12.8:", when="@:0.8") + def cmake_args(self): cuda_arch = self.spec.variants["cuda_arch"].value args = ["-DBUILD_TESTING=OFF", ("-DCMAKE_CUDA_ARCHITECTURES=%s" % cuda_arch)] diff --git a/var/spack/repos/builtin/packages/cusz/thrust-includes-0.9.patch b/var/spack/repos/builtin/packages/cusz/thrust-includes-0.9.patch new file mode 100644 index 00000000000..c8038e41aa2 --- /dev/null +++ b/var/spack/repos/builtin/packages/cusz/thrust-includes-0.9.patch @@ -0,0 +1,27 @@ +diff --git a/src/stat/detail/compare.thrust.inl b/src/stat/detail/compare.thrust.inl +index ce49408..ec8d650 100644 +--- a/src/stat/detail/compare.thrust.inl ++++ b/src/stat/detail/compare.thrust.inl +@@ -18,6 +18,9 @@ + // #include + #include + #include ++#include ++#include ++#include + #include + + #include "cusz/type.h" +diff --git a/src/stat/detail/maxerr.thrust.inl b/src/stat/detail/maxerr.thrust.inl +index 2415655..9b31e88 100644 +--- a/src/stat/detail/maxerr.thrust.inl ++++ b/src/stat/detail/maxerr.thrust.inl +@@ -18,6 +18,8 @@ + // #include + #include + #include ++#include ++#include + + #include "cusz/type.h" + diff --git a/var/spack/repos/builtin/packages/cusz/thrust-includes.patch b/var/spack/repos/builtin/packages/cusz/thrust-includes.patch new file mode 100644 index 00000000000..107e6b1248f --- /dev/null +++ b/var/spack/repos/builtin/packages/cusz/thrust-includes.patch @@ -0,0 +1,27 @@ +diff --git a/psz/src/stat/detail/compare.thrust.inl b/psz/src/stat/detail/compare.thrust.inl +index f35c7df..719d68f 100644 +--- a/psz/src/stat/detail/compare.thrust.inl ++++ b/psz/src/stat/detail/compare.thrust.inl +@@ -11,6 +11,9 @@ + + #include + #include ++#include ++#include ++#include + #include + + #include "cusz/type.h" +diff --git a/psz/src/stat/detail/maxerr.thrust.inl b/psz/src/stat/detail/maxerr.thrust.inl +index f7a4db5..ce7925a 100644 +--- a/psz/src/stat/detail/maxerr.thrust.inl ++++ b/psz/src/stat/detail/maxerr.thrust.inl +@@ -11,6 +11,8 @@ + + #include + #include ++#include ++#include + + #include "cusz/type.h" + #include "port.hh" diff --git a/var/spack/repos/builtin/packages/libpressio/package.py b/var/spack/repos/builtin/packages/libpressio/package.py index c15311fb036..d3337c80a1a 100644 --- a/var/spack/repos/builtin/packages/libpressio/package.py +++ b/var/spack/repos/builtin/packages/libpressio/package.py @@ -309,7 +309,7 @@ class Libpressio(CMakePackage, CudaPackage): depends_on("sz3@3.1.8:", when="@0.98.1: +sz3") depends_on("bzip2", when="+bzip2") depends_on("qoz", when="+qoz") - depends_on("cusz@0.6.0:", when="+cusz") + depends_on("cusz@0.9", when="+cusz") extends("python", when="+python") diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index a1535f92d43..5ca7af8681f 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -590,6 +590,9 @@ def configure_options(self): else: options.append("--with-sycl=0") + if spec.satisfies("^cuda@12.8.0"): + options.append("CUDAPPFLAGS=-Wno-deprecated-gpu-targets") + if "trilinos" in spec: if spec.satisfies("^trilinos+boost"): options.append("--with-boost=1") diff --git a/var/spack/repos/builtin/packages/py-jaxlib/package.py b/var/spack/repos/builtin/packages/py-jaxlib/package.py index 337576cb3cd..cd679311a25 100644 --- a/var/spack/repos/builtin/packages/py-jaxlib/package.py +++ b/var/spack/repos/builtin/packages/py-jaxlib/package.py @@ -164,6 +164,9 @@ class PyJaxlib(PythonPackage, CudaPackage, ROCmPackage): # https://github.com/google/jax/issues/19992 conflicts("@0.4.4:", when="target=ppc64le:") + # Fails to build with freshly released CUDA (#48708). + conflicts("^cuda@12.8:", when="@:0.4.31") + def url_for_version(self, version): url = "https://github.com/jax-ml/jax/archive/refs/tags/{}-v{}.tar.gz" if version >= Version("0.4.33"):