From d1493fb3d86653d8b11aeacd3e24af94f50ec03c Mon Sep 17 00:00:00 2001 From: Pieter Ghysels Date: Thu, 12 Nov 2020 06:57:44 -0800 Subject: 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. --- var/spack/repos/builtin/packages/superlu-dist/package.py | 15 +++++++++++++-- 1 file 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: -- cgit v1.2.3-70-g09d2