From 1bf87447ada7a61f9f4af973570ecd4d4e9e7811 Mon Sep 17 00:00:00 2001 From: G-Ragghianti <33492707+G-Ragghianti@users.noreply.github.com> Date: Thu, 15 Oct 2020 08:58:31 -0400 Subject: Blaspp: added v2020.10.0, v2020.09.0, reworked recipe (#19311) --- var/spack/repos/builtin/packages/blaspp/package.py | 101 ++++++--------------- 1 file changed, 30 insertions(+), 71 deletions(-) diff --git a/var/spack/repos/builtin/packages/blaspp/package.py b/var/spack/repos/builtin/packages/blaspp/package.py index ddacfa22aa..71a287c7e2 100644 --- a/var/spack/repos/builtin/packages/blaspp/package.py +++ b/var/spack/repos/builtin/packages/blaspp/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * +import os class Blaspp(CMakePackage, CudaPackage): @@ -11,83 +12,41 @@ class Blaspp(CMakePackage, CudaPackage): Innovative Computing Laboratory at the University of Tennessee, Knoxville.""" - homepage = "https://bitbucket.org/icl/blaspp" - git = "https://bitbucket.org/icl/blaspp" + homepage = 'https://bitbucket.org/icl/blaspp' + git = homepage + url = 'https://bitbucket.org/icl/blaspp/downloads/blaspp-2020.09.00.tar.gz' maintainers = ['teonnik', 'Sely85', 'G-Ragghianti', 'mgates3'] - version('develop', commit='6293d96') + version('master', branch='master') + version('2020.10.00', sha256='ce148cfe397428d507c72d7d9eba5e9d3f55ad4cd842e6e873c670183dcb7795') + version('2020.09.00', sha256='ee5d29171bbed515734007dd121ce2e733e2f83920c4d5ede046e657f4a513ef') - variant('gfort', - default=False, - description=('Use GNU Fortran interface. ' - 'Default is Intel interface. (MKL)')) - variant('ilp64', - default=False, - description=('Use 64bit integer interface. ' - 'Default is 32bit. (MKL & ESSL)')) - variant('openmp', - default=False, - description=('Use OpenMP threaded backend. ' - 'Default is sequential. (MKL & ESSL)')) + variant('openmp', default=True, description='Use OpenMP internally.') + variant('cuda', default=True, description='Build with CUDA') + variant('shared', default=True, description='Build shared libraries') + depends_on('cmake@3.15.0:', type='build') depends_on('blas') - # 1) The CMake options exposed by `blaspp` allow for a value called `auto`. - # The value is not needed here as the choice of dependency in the spec - # determines the appropriate flags. - # - # 2) BLASFinder.cmake handles most options. For `auto`, it searches all - # blas libraries listed in `def_lib_list`. - # - # 3) ?? Custom blas library can be supplied via `BLAS_LIBRARIES`. - # + # This will attempt to use a supported version of OpenBLAS + depends_on('openblas@:0.3.5', when='^openblas') + # In some cases, the spack concretizer will fail to use a supported + # version of OpenBLAS. In this case, present an error message. + conflicts('^openblas@0.3.6:', msg='Testing errors in OpenBLAS >=0.3.6') + def cmake_args(self): spec = self.spec - args = ['-DBLASPP_BUILD_TESTS:BOOL={0}'.format( - 'ON' if self.run_tests else 'OFF')] - - if '+gfort' in spec: - args.append('-DBLAS_LIBRARY_MKL="GNU gfortran conventions"') + return [ + '-Dbuild_tests=%s' % self.run_tests, + '-Duse_openmp=%s' % ('+openmp' in spec), + '-DBUILD_SHARED_LIBS=%s' % ('+shared' in spec), + '-Duse_cuda=%s' % ('+cuda' in spec), + '-DBLAS_LIBRARIES=%s' % spec['blas'].libs.joined(';') + ] + + def check(self): + # If the tester fails to build, ensure that the check() fails. + if os.path.isfile(join_path(self.build_directory, 'test', 'tester')): + make('check') else: - args.append('-DBLAS_LIBRARY_MKL="Intel ifort conventions"') - - if '+ilp64' in spec: - args.append('-DBLAS_LIBRARY_INTEGER="int64_t (ILP64)"') - else: - args.append('-DBLAS_LIBRARY_INTEGER="int (LP64)"') - - if '+openmp' in spec: - args.append(['-DUSE_OPENMP=ON', - '-DBLAS_LIBRARY_THREADING="threaded"']) - else: - args.append('-DBLAS_LIBRARY_THREADING="sequential"') - - # `blaspp` has an implicit CUDA detection mechanism. This disables it - # in cases where it may backfire. One such case is when `cuda` is - # external and marked with `buildable=false`. `blaspp`'s CMake CUDA - # detection mechanism finds CUDA but doesn't set certain paths properly - # which leads to a build issues [1]. - # - # [1]: https://bitbucket.org/icl/blaspp/issues/6/compile-error-due-to-implicit-cuda - if '~cuda' in spec: - args.append('-DCMAKE_CUDA_COMPILER=') - - # Missing: - # - # - acml : BLAS_LIBRARY="AMD ACML" - # BLAS_LIBRARY_THREADING= threaded/sequential - # - # - apple : BLAS_LIBRARY="Apple Accelerate" (veclibfort ???) - # - if '^mkl' in spec: - args.append('-DBLAS_LIBRARY="Intel MKL"') - elif '^essl' in spec: - args.append('-DBLAS_LIBRARY="IBM ESSL"') - elif '^openblas' in spec: - args.append('-DBLAS_LIBRARY="OpenBLAS"') - elif '^cray-libsci' in spec: - args.append('-DBLAS_LIBRARY="Cray LibSci"') - else: # e.g. netlib-lapack - args.append('-DBLAS_LIBRARY="generic"') - - return args + raise Exception('The tester was not built!') -- cgit v1.2.3-60-g2f50