summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2021-10-19 03:06:14 +0200
committerGitHub <noreply@github.com>2021-10-18 18:06:14 -0700
commit2b54132b9ac5462e867dd964a016f26c88499239 (patch)
treeee6930951a2cf4c9a3cb85c5f1688d14ea4b87da
parentc5ca0db27fce5d772dc8a4fcffec3b62bb0bf1f3 (diff)
downloadspack-2b54132b9ac5462e867dd964a016f26c88499239.tar.gz
spack-2b54132b9ac5462e867dd964a016f26c88499239.tar.bz2
spack-2b54132b9ac5462e867dd964a016f26c88499239.tar.xz
spack-2b54132b9ac5462e867dd964a016f26c88499239.zip
cosma: add new versions and improve package (#24136)
* cosma: add new versions and improve package * Move method below depends_on's
-rw-r--r--var/spack/repos/builtin/packages/cosma/package.py91
1 files changed, 61 insertions, 30 deletions
diff --git a/var/spack/repos/builtin/packages/cosma/package.py b/var/spack/repos/builtin/packages/cosma/package.py
index ea65b41c26..4aa7b479b8 100644
--- a/var/spack/repos/builtin/packages/cosma/package.py
+++ b/var/spack/repos/builtin/packages/cosma/package.py
@@ -7,61 +7,92 @@
from spack import *
-class Cosma(CMakePackage, CudaPackage):
+class Cosma(CMakePackage):
"""
Distributed Communication-Optimal Matrix-Matrix Multiplication Library
"""
maintainers = ['haampie', 'kabicm', 'teonnik']
homepage = 'https://github.com/eth-cscs/COSMA'
- url = 'https://github.com/eth-cscs/COSMA/releases/download/v2.2.0/cosma.tar.gz'
+ url = 'https://github.com/eth-cscs/COSMA/releases/download/v2.5.1/COSMA-v2.5.1.tar.gz'
git = 'https://github.com/eth-cscs/COSMA.git'
# note: The default archives produced with github do not have the archives
# of the submodules.
version('master', branch='master', submodules=True)
+ version('2.5.1', sha256='085b7787597374244bbb1eb89bc69bf58c35f6c85be805e881e1c0b25166c3ce')
+ version('2.5.0', sha256='7f68bb0ee5c80f9b8df858afcbd017ad4ed87ac09439d13d7d890844dbdd3d54')
+ version('2.4.0', sha256='5714315ce06d48037f86cfee2d7f19340643fee95e9d7f1e92dc1b623b67e395')
version('2.3.0', sha256='0c01c2deb5a0cd177952178350188a62c42ce55e604d7948ac472f55bf0d4815')
version('2.2.0', sha256='1eb92a98110df595070a12193b9221eecf9d103ced8836c960f6c79a2bd553ca')
version('2.0.7', sha256='8d70bfcbda6239b6a8fbeaca138790bbe58c0c3aa576879480d2632d4936cf7e')
version('2.0.2', sha256='4f3354828bc718f3eef2f0098c3bdca3499297497a220da32db1acd57920c68d')
- variant('scalapack', default=False,
- description='Build with ScaLAPACK API.')
+ # We just need the libraries of cuda and rocm, so no need to extend
+ # CudaPackage or ROCmPackage.
+ variant('cuda', default=False, description='Build with cuBLAS support')
+ variant('rocm', default=False, description='Build with rocBLAS support')
+ variant('scalapack', default=False, description='Build with ScaLAPACK API')
depends_on('cmake@3.12:', type='build')
depends_on('mpi@3:')
- depends_on('blas', when='~cuda')
+ depends_on('blas', when='~cuda ~rocm')
depends_on('scalapack', when='+scalapack')
+ depends_on('cuda', when='+cuda')
+ depends_on('rocblas', when='+rocm')
+
+ def url_for_version(self, version):
+ if version <= Version('2.3.0'):
+ return 'https://github.com/eth-cscs/COSMA/releases/download/v{0}/cosma.tar.gz'.format(version)
+
+ return 'https://github.com/eth-cscs/COSMA/releases/download/v{0}/COSMA-v{1}.tar.gz'.format(version, version)
def setup_build_environment(self, env):
if '+cuda' in self.spec:
env.set('CUDA_PATH', self.spec['cuda'].prefix)
- def cmake_args(self):
+ def cosma_blas_cmake_arg(self):
+ query_to_cmake_arg = [
+ ('^intel-mkl', 'MKL'),
+ ('^intel-oneapi-mkl', 'MKL'),
+ ('^cray-libsci', 'CRAY_LIBSCI'),
+ ('^netlib-lapack', 'CUSTOM'),
+ ('^openblas', 'OPENBLAS'),
+ ('+cuda', 'CUDA'),
+ ('+rocm', 'ROCM')
+ ]
+
+ if self.version >= Version('2.4.0'):
+ query_to_cmake_arg.extend([
+ ('^blis', 'BLIS'),
+ ('^amdblis', 'BLIS'),
+ ('^atlas', 'ATLAS')
+ ])
+
+ for (query, cmake_arg) in query_to_cmake_arg:
+ if query in self.spec:
+ return cmake_arg
+
+ return 'CUSTOM'
+
+ def cosma_scalapack_cmake_arg(self):
spec = self.spec
- args = ['-DCOSMA_WITH_TESTS=OFF',
- '-DCOSMA_WITH_APPS=OFF',
- '-DCOSMA_WITH_PROFILING=OFF',
- '-DCOSMA_WITH_BENCHMARKS=OFF']
- if '^mkl' in spec:
- args += ['-DCOSMA_BLAS=MKL']
+ if '~scalapack' in spec:
+ return 'OFF'
+ elif '^intel-mkl' in spec or '^intel-oneapi-mkl' in spec:
+ return 'MKL'
elif '^cray-libsci' in spec:
- args += ['-DCOSMA_BLAS=CRAY_LIBSCI']
- elif '^netlib-lapack' in spec:
- args += ['-DCOSMA_BLAS=CUSTOM']
- elif '^openblas' in spec:
- args += ['-DCOSMA_BLAS=OPENBLAS']
- elif '+cuda' in spec:
- args += ['-DCOSMA_BLAS=CUDA']
- else: # TODO '^rocm' in spec:
- args += ['-DCOSMA_BLAS=ROCM']
-
- if '+scalapack' and '^mkl' in spec:
- args += ['-DCOSMA_SCALAPACK=MKL']
- elif '+scalapack' and '^cray-libsci' in spec:
- args += ['-DCOSMA_SCALAPACK=CRAY_LIBSCI']
- elif '+scalapack' and '^netlib-scalapack' in spec:
- args += ['-DCOSMA_SCALAPACK=CUSTOM']
-
- return args
+ return 'CRAY_LIBSCI'
+
+ return 'CUSTOM'
+
+ def cmake_args(self):
+ return [
+ self.define('COSMA_WITH_TESTS', 'OFF'),
+ self.define('COSMA_WITH_APPS', 'OFF'),
+ self.define('COSMA_WITH_PROFILING', 'OFF'),
+ self.define('COSMA_WITH_BENCHMARKS', 'OFF'),
+ self.define('COSMA_BLAS', self.cosma_blas_cmake_arg()),
+ self.define('COSMA_SCALAPACK', self.cosma_scalapack_cmake_arg())
+ ]