summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorPieter Ghysels <pghysels@lbl.gov>2020-11-12 06:57:44 -0800
committerGitHub <noreply@github.com>2020-11-12 08:57:44 -0600
commitd1493fb3d86653d8b11aeacd3e24af94f50ec03c (patch)
tree7953054c2eff777e1943e028688c97e09114278c /var
parent821b195ba4f6893002b569036f5bdb29369bd727 (diff)
downloadspack-d1493fb3d86653d8b11aeacd3e24af94f50ec03c.tar.gz
spack-d1493fb3d86653d8b11aeacd3e24af94f50ec03c.tar.bz2
spack-d1493fb3d86653d8b11aeacd3e24af94f50ec03c.tar.xz
spack-d1493fb3d86653d8b11aeacd3e24af94f50ec03c.zip
SuperLU-Dist: Add CUDA variant (#19847)
* Add CUDA support to superlu-dist * Use spec['cuda'].libs.directories[0] iso spec['cuda'].prefix.lib so it works for both lib and lib64 The suggested: args.append('-DTPL_CUDA_LIBRARIES=' + spec['cuda'].libs.ld_flags) did not work because it does not link with cuBLAS.
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/superlu-dist/package.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py
index 476890944b..0450347301 100644
--- a/var/spack/repos/builtin/packages/superlu-dist/package.py
+++ b/var/spack/repos/builtin/packages/superlu-dist/package.py
@@ -6,7 +6,7 @@
from spack import *
-class SuperluDist(CMakePackage):
+class SuperluDist(CMakePackage, CudaPackage):
"""A general purpose library for the direct solution of large, sparse,
nonsymmetric systems of linear equations on high performance machines."""
@@ -14,7 +14,7 @@ class SuperluDist(CMakePackage):
url = "https://github.com/xiaoyeli/superlu_dist/archive/v6.0.0.tar.gz"
git = "https://github.com/xiaoyeli/superlu_dist.git"
- maintainers = ['xiaoye', 'gchavez2', 'balay']
+ maintainers = ['xiaoye', 'gchavez2', 'balay', 'pghysels']
version('develop', branch='master')
version('xsdk-0.2.0', tag='xsdk-0.2.0')
@@ -44,6 +44,8 @@ class SuperluDist(CMakePackage):
depends_on('parmetis')
depends_on('metis@5:')
+ conflicts('+cuda', when='@:6.3.999')
+
patch('xl-611.patch', when='@:6.1.1 %xl')
patch('xl-611.patch', when='@:6.1.1 %xl_r')
@@ -78,6 +80,15 @@ class SuperluDist(CMakePackage):
args.append('-Denable_openmp=OFF')
args.append('-DCMAKE_DISABLE_FIND_PACKAGE_OpenMP=ON')
+ if '+cuda' in spec:
+ args.append('-DTPL_ENABLE_CUDALIB=TRUE')
+ args.append('-DTPL_CUDA_LIBRARIES=-L%s -lcublas -lcudart'
+ % spec['cuda'].libs.directories[0])
+ cuda_arch = spec.variants['cuda_arch'].value
+ if cuda_arch[0] != 'none':
+ args.append(
+ '-DCMAKE_CUDA_FLAGS=-arch=sm_{0}'.format(cuda_arch[0]))
+
if '+shared' in spec:
args.append('-DBUILD_SHARED_LIBS:BOOL=ON')
else: