summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py')
-rw-r--r--var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py154
1 files changed, 84 insertions, 70 deletions
diff --git a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py
index bbd0e2b350..4d52e7347a 100644
--- a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py
+++ b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py
@@ -12,79 +12,95 @@ from spack.package import *
@IntelOneApiPackage.update_description
class IntelOneapiMkl(IntelOneApiLibraryPackage):
"""Intel oneAPI Math Kernel Library (Intel oneMKL; formerly Intel Math
- Kernel Library or Intel MKL), is a library of optimized math
- routines for science, engineering, and financial
- applications. Core math functions include BLAS, LAPACK,
- ScaLAPACK, sparse solvers, fast Fourier transforms, and vector
- math.
+ Kernel Library or Intel MKL), is a library of optimized math
+ routines for science, engineering, and financial
+ applications. Core math functions include BLAS, LAPACK,
+ ScaLAPACK, sparse solvers, fast Fourier transforms, and vector
+ math.
"""
- maintainers = ['rscohn2']
-
- homepage = 'https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html'
-
- if platform.system() == 'Linux':
- version('2022.1.0',
- url='https://registrationcenter-download.intel.com/akdlm/irc_nas/18721/l_onemkl_p_2022.1.0.223_offline.sh',
- sha256='4b325a3c4c56e52f4ce6c8fbb55d7684adc16425000afc860464c0f29ea4563e',
- expand=False)
- version('2022.0.2',
- url='https://registrationcenter-download.intel.com/akdlm/irc_nas/18483/l_onemkl_p_2022.0.2.136_offline.sh',
- sha256='134b748825a474acc862bb4a7fada99741a15b7627cfaa6ba0fb05ec0b902b5e',
- expand=False)
- version('2022.0.1',
- url='https://registrationcenter-download.intel.com/akdlm/irc_nas/18444/l_onemkl_p_2022.0.1.117_offline.sh',
- sha256='22afafbe2f3762eca052ac21ec40b845ff2f3646077295c88c2f37f80a0cc160',
- expand=False)
- version('2021.4.0',
- url='https://registrationcenter-download.intel.com/akdlm/irc_nas/18222/l_onemkl_p_2021.4.0.640_offline.sh',
- sha256='9ad546f05a421b4f439e8557fd0f2d83d5e299b0d9bd84bdd86be6feba0c3915',
- expand=False)
- version('2021.3.0',
- url='https://registrationcenter-download.intel.com/akdlm/irc_nas/17901/l_onemkl_p_2021.3.0.520_offline.sh',
- sha256='a06e1cdbfd8becc63440b473b153659885f25a6e3c4dcb2907ad9cd0c3ad59ce',
- expand=False)
- version('2021.2.0',
- url='https://registrationcenter-download.intel.com/akdlm/irc_nas/17757/l_onemkl_p_2021.2.0.296_offline.sh',
- sha256='816e9df26ff331d6c0751b86ed5f7d243f9f172e76f14e83b32bf4d1d619dbae',
- expand=False)
- version('2021.1.1',
- url='https://registrationcenter-download.intel.com/akdlm/irc_nas/17402/l_onemkl_p_2021.1.1.52_offline.sh',
- sha256='818b6bd9a6c116f4578cda3151da0612ec9c3ce8b2c8a64730d625ce5b13cc0c',
- expand=False)
-
- variant('shared', default=True, description='Builds shared library')
- variant('ilp64', default=False,
- description='Build with ILP64 support')
- variant('cluster', default=False,
- description='Build with cluster support: scalapack, blacs, etc')
-
- depends_on('intel-oneapi-tbb')
+ maintainers = ["rscohn2"]
+
+ homepage = (
+ "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html"
+ )
+
+ if platform.system() == "Linux":
+ version(
+ "2022.1.0",
+ url="https://registrationcenter-download.intel.com/akdlm/irc_nas/18721/l_onemkl_p_2022.1.0.223_offline.sh",
+ sha256="4b325a3c4c56e52f4ce6c8fbb55d7684adc16425000afc860464c0f29ea4563e",
+ expand=False,
+ )
+ version(
+ "2022.0.2",
+ url="https://registrationcenter-download.intel.com/akdlm/irc_nas/18483/l_onemkl_p_2022.0.2.136_offline.sh",
+ sha256="134b748825a474acc862bb4a7fada99741a15b7627cfaa6ba0fb05ec0b902b5e",
+ expand=False,
+ )
+ version(
+ "2022.0.1",
+ url="https://registrationcenter-download.intel.com/akdlm/irc_nas/18444/l_onemkl_p_2022.0.1.117_offline.sh",
+ sha256="22afafbe2f3762eca052ac21ec40b845ff2f3646077295c88c2f37f80a0cc160",
+ expand=False,
+ )
+ version(
+ "2021.4.0",
+ url="https://registrationcenter-download.intel.com/akdlm/irc_nas/18222/l_onemkl_p_2021.4.0.640_offline.sh",
+ sha256="9ad546f05a421b4f439e8557fd0f2d83d5e299b0d9bd84bdd86be6feba0c3915",
+ expand=False,
+ )
+ version(
+ "2021.3.0",
+ url="https://registrationcenter-download.intel.com/akdlm/irc_nas/17901/l_onemkl_p_2021.3.0.520_offline.sh",
+ sha256="a06e1cdbfd8becc63440b473b153659885f25a6e3c4dcb2907ad9cd0c3ad59ce",
+ expand=False,
+ )
+ version(
+ "2021.2.0",
+ url="https://registrationcenter-download.intel.com/akdlm/irc_nas/17757/l_onemkl_p_2021.2.0.296_offline.sh",
+ sha256="816e9df26ff331d6c0751b86ed5f7d243f9f172e76f14e83b32bf4d1d619dbae",
+ expand=False,
+ )
+ version(
+ "2021.1.1",
+ url="https://registrationcenter-download.intel.com/akdlm/irc_nas/17402/l_onemkl_p_2021.1.1.52_offline.sh",
+ sha256="818b6bd9a6c116f4578cda3151da0612ec9c3ce8b2c8a64730d625ce5b13cc0c",
+ expand=False,
+ )
+
+ variant("shared", default=True, description="Builds shared library")
+ variant("ilp64", default=False, description="Build with ILP64 support")
+ variant(
+ "cluster", default=False, description="Build with cluster support: scalapack, blacs, etc"
+ )
+
+ depends_on("intel-oneapi-tbb")
# cluster libraries need mpi
- depends_on('mpi', when='+cluster')
+ depends_on("mpi", when="+cluster")
- provides('fftw-api@3')
- provides('scalapack', when='+cluster')
- provides('mkl')
- provides('lapack')
- provides('blas')
+ provides("fftw-api@3")
+ provides("scalapack", when="+cluster")
+ provides("mkl")
+ provides("lapack")
+ provides("blas")
@property
def component_dir(self):
- return 'mkl'
+ return "mkl"
@property
def headers(self):
- return find_headers('*', self.component_prefix.include)
+ return find_headers("*", self.component_prefix.include)
@property
def libs(self):
- shared = '+shared' in self.spec
+ shared = "+shared" in self.spec
libs = self._find_mkl_libs(shared)
- system_libs = find_system_libraries(['libpthread', 'libm', 'libdl'])
+ system_libs = find_system_libraries(["libpthread", "libm", "libdl"])
if shared:
return libs + system_libs
else:
@@ -100,28 +116,26 @@ class IntelOneapiMkl(IntelOneApiLibraryPackage):
# flags too. We prefer the __INTEL_POST_CFLAGS/__INTEL_POST_FFLAGS flags over
# the PRE ones so that any other RPATHs provided by the users on the command
# line come before and take precedence over the ones we inject here.
- for d in self._find_mkl_libs('+shared' in self.spec).directories:
- flag = '-Wl,-rpath,{0}'.format(d)
- env.append_path('__INTEL_POST_CFLAGS', flag, separator=' ')
- env.append_path('__INTEL_POST_FFLAGS', flag, separator=' ')
+ for d in self._find_mkl_libs("+shared" in self.spec).directories:
+ flag = "-Wl,-rpath,{0}".format(d)
+ env.append_path("__INTEL_POST_CFLAGS", flag, separator=" ")
+ env.append_path("__INTEL_POST_FFLAGS", flag, separator=" ")
def setup_dependent_build_environment(self, env, dependent_spec):
- env.set('MKLROOT', self.component_prefix)
+ env.set("MKLROOT", self.component_prefix)
def _find_mkl_libs(self, shared):
libs = []
- if '+cluster' in self.spec:
- libs.extend([self._xlp64_lib('libmkl_scalapack'), 'libmkl_cdft_core'])
+ if "+cluster" in self.spec:
+ libs.extend([self._xlp64_lib("libmkl_scalapack"), "libmkl_cdft_core"])
- libs.extend([self._xlp64_lib('libmkl_intel'),
- 'libmkl_sequential', 'libmkl_core'])
+ libs.extend([self._xlp64_lib("libmkl_intel"), "libmkl_sequential", "libmkl_core"])
- if '+cluster' in self.spec:
- libs.append(self._xlp64_lib('libmkl_blacs_intelmpi'))
+ if "+cluster" in self.spec:
+ libs.append(self._xlp64_lib("libmkl_blacs_intelmpi"))
- return find_libraries(
- libs, self.component_prefix.lib.intel64, shared=shared)
+ return find_libraries(libs, self.component_prefix.lib.intel64, shared=shared)
def _xlp64_lib(self, lib):
- return lib + ('_ilp64' if '+ilp64' in self.spec else '_lp64')
+ return lib + ("_ilp64" if "+ilp64" in self.spec else "_lp64")