summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/blaspp/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/blaspp/package.py')
-rw-r--r--var/spack/repos/builtin/packages/blaspp/package.py21
1 files changed, 20 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/blaspp/package.py b/var/spack/repos/builtin/packages/blaspp/package.py
index 6be99028b1..f6f52d2756 100644
--- a/var/spack/repos/builtin/packages/blaspp/package.py
+++ b/var/spack/repos/builtin/packages/blaspp/package.py
@@ -46,11 +46,14 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage):
variant("openmp", default=True, description="Use OpenMP internally.")
variant("shared", default=True, description="Build shared libraries")
+ variant("sycl", default=False, description="Build support for the SYCL backend")
depends_on("cmake@3.15.0:", type="build")
depends_on("blas")
depends_on("llvm-openmp", when="%apple-clang +openmp")
depends_on("rocblas", when="+rocm")
+ depends_on("intel-oneapi-mkl", when="+sycl")
+ depends_on("intel-oneapi-mkl threads=openmp", when="+sycl")
# only supported with clingo solver: virtual dependency preferences
# depends_on('openblas threads=openmp', when='+openmp ^openblas')
@@ -63,7 +66,21 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage):
conflicts(
"+rocm", when="@:2020.10.02", msg="ROCm support requires BLAS++ 2021.04.00 or greater"
)
- conflicts("+rocm", when="+cuda", msg="BLAS++ can only support one GPU backend at a time")
+ backend_msg = "BLAS++ supports only one GPU backend at a time"
+ conflicts("+rocm", when="+cuda", msg=backend_msg)
+ conflicts("+rocm", when="+sycl", msg=backend_msg)
+ conflicts("+cuda", when="+sycl", msg=backend_msg)
+ conflicts("+sycl", when="@:2023.06.00", msg="SYCL support requires BLAS++ version 2023.08.25")
+
+ # TODO: +sycl requires use of the intel-oneapi compiler, but we cannot express that directly.
+ # For now, add conflicts for other compilers instead.
+ for __compiler in spack.compilers.supported_compilers():
+ if __compiler != "oneapi":
+ conflicts(
+ "%{0}".format(__compiler),
+ when="+sycl",
+ msg="blaspp+sycl must be compiled with %oneapi",
+ )
def cmake_args(self):
spec = self.spec
@@ -74,6 +91,8 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage):
backend = "cuda"
if "+rocm" in spec:
backend = "hip"
+ if "+sycl" in spec:
+ backend = "sycl"
backend_config = "-Dgpu_backend=%s" % backend
args = [