diff options
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.py | 154 |
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") |