cuda: add v12.8 (#48708)

This commit is contained in:
pauleonix 2025-02-03 13:49:30 +01:00 committed by GitHub
parent 1c3e2b5425
commit 8579efcadf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 105 additions and 3 deletions

View File

@ -15,7 +15,7 @@ class CudaPackage(PackageBase):
"""Auxiliary class which contains CUDA variant, dependencies and conflicts """Auxiliary class which contains CUDA variant, dependencies and conflicts
and is meant to unify and facilitate its usage. 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 # https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#gpu-feature-list
@ -47,6 +47,12 @@ class CudaPackage(PackageBase):
"89", "89",
"90", "90",
"90a", "90a",
"100",
"100a",
"101",
"101a",
"120",
"120a",
) )
# FIXME: keep cuda and cuda_arch separate to make usage easier until # 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 # CUDA version vs Architecture
# https://en.wikipedia.org/wiki/CUDA#GPUs_supported # https://en.wikipedia.org/wiki/CUDA#GPUs_supported
# https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#deprecated-features # 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.0", when="cuda_arch=10")
depends_on("cuda@:6.5", when="cuda_arch=11") 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=12")
depends_on("cuda@2.1:6.5", when="cuda_arch=13") 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.0:8.0", when="cuda_arch=20")
depends_on("cuda@3.2:8.0", when="cuda_arch=21") 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=30")
depends_on("cuda@5.0:10.2", when="cuda_arch=32") 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@5.0:11.8", when="cuda_arch=35")
depends_on("cuda@6.5:11.8", when="cuda_arch=37") 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.0:", when="cuda_arch=50")
depends_on("cuda@6.5:", when="cuda_arch=52") depends_on("cuda@6.5:", when="cuda_arch=52")
depends_on("cuda@6.5:", when="cuda_arch=53") 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=60")
depends_on("cuda@8.0:", when="cuda_arch=61") depends_on("cuda@8.0:", when="cuda_arch=61")
depends_on("cuda@8.0:", when="cuda_arch=62") depends_on("cuda@8.0:", when="cuda_arch=62")
# Volta support:
depends_on("cuda@9.0:", when="cuda_arch=70") depends_on("cuda@9.0:", when="cuda_arch=70")
# Turing support:
depends_on("cuda@9.0:", when="cuda_arch=72") depends_on("cuda@9.0:", when="cuda_arch=72")
depends_on("cuda@10.0:", when="cuda_arch=75") depends_on("cuda@10.0:", when="cuda_arch=75")
# Ampere support:
depends_on("cuda@11.0:", when="cuda_arch=80") depends_on("cuda@11.0:", when="cuda_arch=80")
depends_on("cuda@11.1:", when="cuda_arch=86") depends_on("cuda@11.1:", when="cuda_arch=86")
depends_on("cuda@11.4:", when="cuda_arch=87") depends_on("cuda@11.4:", when="cuda_arch=87")
# Ada support:
depends_on("cuda@11.8:", when="cuda_arch=89") 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=90")
depends_on("cuda@12.0:", when="cuda_arch=90a") 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 # From the NVIDIA install guide we know of conflicts for particular
# platforms (linux, darwin), architectures (x86, powerpc) and compilers # platforms (linux, darwin), architectures (x86, powerpc) and compilers
# (gcc, clang). We don't restrict %gcc and %clang conflicts to # (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@12:", when="+cuda ^cuda@:11.8")
conflicts("%gcc@13:", when="+cuda ^cuda@:12.3") conflicts("%gcc@13:", when="+cuda ^cuda@:12.3")
conflicts("%gcc@14:", when="+cuda ^cuda@:12.6") 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@12:", when="+cuda ^cuda@:11.4.0")
conflicts("%clang@13:", when="+cuda ^cuda@:11.5") conflicts("%clang@13:", when="+cuda ^cuda@:11.5")
conflicts("%clang@14:", when="+cuda ^cuda@:11.7") 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@17:", when="+cuda ^cuda@:12.3")
conflicts("%clang@18:", when="+cuda ^cuda@:12.5") conflicts("%clang@18:", when="+cuda ^cuda@:12.5")
conflicts("%clang@19:", when="+cuda ^cuda@:12.6") conflicts("%clang@19:", when="+cuda ^cuda@:12.6")
conflicts("%clang@20:", when="+cuda ^cuda@:12.8")
# https://gist.github.com/ax3l/9489132#gistcomment-3860114 # https://gist.github.com/ax3l/9489132#gistcomment-3860114
conflicts("%gcc@10", when="+cuda ^cuda@:11.4.0") conflicts("%gcc@10", when="+cuda ^cuda@:11.4.0")

View File

@ -21,6 +21,16 @@
# format returned by platform.system() and 'arch' by platform.machine() # format returned by platform.system() and 'arch' by platform.machine()
_versions = { _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": { "12.6.3": {
"Linux-aarch64": ( "Linux-aarch64": (
"213ea63a6357020978a8b0a79a8c9d12a2a5941afa1cdc69d5a3f933fa8bed04", "213ea63a6357020978a8b0a79a8c9d12a2a5941afa1cdc69d5a3f933fa8bed04",

View File

@ -19,7 +19,10 @@ class Cusz(CMakePackage, CudaPackage):
conflicts("cuda_arch=none", when="+cuda") conflicts("cuda_arch=none", when="+cuda")
version("develop", branch="develop") 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.1", commit="02be3cbd07db467decaf45ec9eb593ba6173c809")
version("0.3", sha256="0feb4f7fd64879fe147624dd5ad164adf3983f79b2e0383d35724f8d185dcb11") version("0.3", sha256="0feb4f7fd64879fe147624dd5ad164adf3983f79b2e0383d35724f8d185dcb11")
@ -31,6 +34,10 @@ class Cusz(CMakePackage, CudaPackage):
depends_on("cub", when="^cuda@:10.2.89") 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): def cmake_args(self):
cuda_arch = self.spec.variants["cuda_arch"].value cuda_arch = self.spec.variants["cuda_arch"].value
args = ["-DBUILD_TESTING=OFF", ("-DCMAKE_CUDA_ARCHITECTURES=%s" % cuda_arch)] args = ["-DBUILD_TESTING=OFF", ("-DCMAKE_CUDA_ARCHITECTURES=%s" % cuda_arch)]

View File

@ -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 <thrust/iterator/constant_iterator.h>
#include <thrust/device_ptr.h>
#include <thrust/execution_policy.h>
+#include <thrust/functional.h>
+#include <thrust/iterator/zip_iterator.h>
+#include <thrust/transform_reduce.h>
#include <thrust/tuple.h>
#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 <thrust/iterator/constant_iterator.h>
#include <thrust/device_ptr.h>
#include <thrust/execution_policy.h>
+#include <thrust/extrema.h>
+#include <thrust/transform.h>
#include "cusz/type.h"

View File

@ -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 <thrust/device_ptr.h>
#include <thrust/execution_policy.h>
+#include <thrust/functional.h>
+#include <thrust/iterator/zip_iterator.h>
+#include <thrust/transform_reduce.h>
#include <thrust/tuple.h>
#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 <thrust/device_ptr.h>
#include <thrust/execution_policy.h>
+#include <thrust/extrema.h>
+#include <thrust/transform.h>
#include "cusz/type.h"
#include "port.hh"

View File

@ -309,7 +309,7 @@ class Libpressio(CMakePackage, CudaPackage):
depends_on("sz3@3.1.8:", when="@0.98.1: +sz3") depends_on("sz3@3.1.8:", when="@0.98.1: +sz3")
depends_on("bzip2", when="+bzip2") depends_on("bzip2", when="+bzip2")
depends_on("qoz", when="+qoz") depends_on("qoz", when="+qoz")
depends_on("cusz@0.6.0:", when="+cusz") depends_on("cusz@0.9", when="+cusz")
extends("python", when="+python") extends("python", when="+python")

View File

@ -590,6 +590,9 @@ def configure_options(self):
else: else:
options.append("--with-sycl=0") options.append("--with-sycl=0")
if spec.satisfies("^cuda@12.8.0"):
options.append("CUDAPPFLAGS=-Wno-deprecated-gpu-targets")
if "trilinos" in spec: if "trilinos" in spec:
if spec.satisfies("^trilinos+boost"): if spec.satisfies("^trilinos+boost"):
options.append("--with-boost=1") options.append("--with-boost=1")

View File

@ -164,6 +164,9 @@ class PyJaxlib(PythonPackage, CudaPackage, ROCmPackage):
# https://github.com/google/jax/issues/19992 # https://github.com/google/jax/issues/19992
conflicts("@0.4.4:", when="target=ppc64le:") 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): def url_for_version(self, version):
url = "https://github.com/jax-ml/jax/archive/refs/tags/{}-v{}.tar.gz" url = "https://github.com/jax-ml/jax/archive/refs/tags/{}-v{}.tar.gz"
if version >= Version("0.4.33"): if version >= Version("0.4.33"):