MKL: Provide scalapack (#2974)
This commit is contained in:
parent
4c1c284e56
commit
384698157a
@ -55,8 +55,8 @@ class IntelMkl(IntelInstaller):
|
||||
# virtual dependency
|
||||
provides('blas')
|
||||
provides('lapack')
|
||||
provides('scalapack')
|
||||
provides('mkl')
|
||||
# TODO: MKL also provides implementation of Scalapack.
|
||||
|
||||
@property
|
||||
def blas_libs(self):
|
||||
@ -83,6 +83,34 @@ def blas_libs(self):
|
||||
def lapack_libs(self):
|
||||
return self.blas_libs
|
||||
|
||||
@property
|
||||
def scalapack_libs(self):
|
||||
libnames = ['libmkl_scalapack']
|
||||
if self.spec.satisfies('^openmpi'):
|
||||
libnames.append('libmkl_blacs_openmpi')
|
||||
elif self.spec.satisfies('^mpich@1'):
|
||||
libnames.append('libmkl_blacs')
|
||||
elif self.spec.satisfies('^mpich@2:'):
|
||||
libnames.append('libmkl_blacs_intelmpi')
|
||||
elif self.spec.satisfies('^mvapich2'):
|
||||
libnames.append('libmkl_blacs_intelmpi')
|
||||
elif self.spec.satisfies('^mpt'):
|
||||
libnames.append('libmkl_blacs_sgimpt')
|
||||
# TODO: ^intel-parallel-studio can mean intel mpi, a compiler or a lib
|
||||
# elif self.spec.satisfies('^intel-parallel-studio'):
|
||||
# libnames.append('libmkl_blacs_intelmpi')
|
||||
else:
|
||||
raise InstallError("No MPI found for scalapack")
|
||||
|
||||
shared = True if '+shared' in self.spec else False
|
||||
integer = 'ilp64' if '+ilp64' in self.spec else 'lp64'
|
||||
libs = find_libraries(
|
||||
['{0}_{1}'.format(l, integer) for l in libnames],
|
||||
root=join_path(self.prefix.lib, 'intel64'),
|
||||
shared=shared
|
||||
)
|
||||
return libs
|
||||
|
||||
def install(self, spec, prefix):
|
||||
self.intel_prefix = os.path.join(prefix, "pkg")
|
||||
IntelInstaller.install(self, spec, prefix)
|
||||
|
@ -77,7 +77,7 @@ class IntelParallelStudio(IntelInstaller):
|
||||
# virtual dependency
|
||||
provides('blas', when='+mkl')
|
||||
provides('lapack', when='+mkl')
|
||||
# TODO: MKL also provides implementation of Scalapack.
|
||||
provides('scalapack', when='+mkl')
|
||||
|
||||
@property
|
||||
def blas_libs(self):
|
||||
@ -104,6 +104,34 @@ def blas_libs(self):
|
||||
def lapack_libs(self):
|
||||
return self.blas_libs
|
||||
|
||||
@property
|
||||
def scalapack_libs(self):
|
||||
libnames = ['libmkl_scalapack']
|
||||
if self.spec.satisfies('^openmpi'):
|
||||
libnames.append('libmkl_blacs_openmpi')
|
||||
elif self.spec.satisfies('^mpich@1'):
|
||||
libnames.append('libmkl_blacs')
|
||||
elif self.spec.satisfies('^mpich@2:'):
|
||||
libnames.append('libmkl_blacs_intelmpi')
|
||||
elif self.spec.satisfies('^mvapich2'):
|
||||
libnames.append('libmkl_blacs_intelmpi')
|
||||
elif self.spec.satisfies('^mpt'):
|
||||
libnames.append('libmkl_blacs_sgimpt')
|
||||
# TODO: ^intel-parallel-studio can mean intel mpi, a compiler or a lib
|
||||
# elif self.spec.satisfies('^intel-parallel-studio'):
|
||||
# libnames.append('libmkl_blacs_intelmpi')
|
||||
else:
|
||||
raise InstallError("No MPI found for scalapack")
|
||||
|
||||
shared = True if '+shared' in self.spec else False
|
||||
integer = 'ilp64' if '+ilp64' in self.spec else 'lp64'
|
||||
libs = find_libraries(
|
||||
['{0}_{1}'.format(l, integer) for l in libnames],
|
||||
root=join_path(self.prefix, 'mkl', 'lib', 'intel64'),
|
||||
shared=shared
|
||||
)
|
||||
return libs
|
||||
|
||||
def url_for_version(self, version):
|
||||
"""Assume the tarball is in the current directory."""
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user