intel-oneapi 2024.0.0: added new version to packages (#41135)

* oneapi 2024.0.0 release

* oneapi v2 directory support and some cleanups

* sycl abi change requires 2024 compilers for packages that use sycl

---------

Co-authored-by: Robert Cohn <robert.s.cohn@intel.com>
This commit is contained in:
Andrey Perestoronin 2023-11-27 18:13:04 +00:00 committed by GitHub
parent b4bafbbf7e
commit 3d744e7c95
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 313 additions and 72 deletions

View File

@ -53,18 +53,24 @@ Install the oneAPI compilers::
Add the compilers to your ``compilers.yaml`` so spack can use them::
spack compiler add `spack location -i intel-oneapi-compilers`/compiler/latest/linux/bin/intel64
spack compiler add `spack location -i intel-oneapi-compilers`/compiler/latest/linux/bin
spack compiler add `spack location -i intel-oneapi-compilers`/compiler/latest/bin
Verify that the compilers are available::
spack compiler list
Note that 2024 and later releases do not include ``icc``. Before 2024,
the package layout was different::
spack compiler add `spack location -i intel-oneapi-compilers`/compiler/latest/linux/bin/intel64
spack compiler add `spack location -i intel-oneapi-compilers`/compiler/latest/linux/bin
The ``intel-oneapi-compilers`` package includes 2 families of
compilers:
* ``intel``: ``icc``, ``icpc``, ``ifort``. Intel's *classic*
compilers.
compilers. 2024 and later releases contain ``ifort``, but not
``icc`` and ``icpc``.
* ``oneapi``: ``icx``, ``icpx``, ``ifx``. Intel's new generation of
compilers based on LLVM.
@ -89,8 +95,8 @@ Install the oneAPI compilers::
Add the compilers to your ``compilers.yaml`` so Spack can use them::
spack compiler add `spack location -i intel-oneapi-compilers`/compiler/latest/linux/bin/intel64
spack compiler add `spack location -i intel-oneapi-compilers`/compiler/latest/linux/bin
spack compiler add `spack location -i intel-oneapi-compilers`/compiler/latest/bin
spack compiler add `spack location -i intel-oneapi-compilers`/compiler/latest/bin
Verify that the compilers are available::
@ -146,8 +152,7 @@ Compilers
To use the compilers, add some information about the installation to
``compilers.yaml``. For most users, it is sufficient to do::
spack compiler add /opt/intel/oneapi/compiler/latest/linux/bin/intel64
spack compiler add /opt/intel/oneapi/compiler/latest/linux/bin
spack compiler add /opt/intel/oneapi/compiler/latest/bin
Adapt the paths above if you did not install the tools in the default
location. After adding the compilers, using them is the same
@ -156,6 +161,12 @@ Another option is to manually add the configuration to
``compilers.yaml`` as described in :ref:`Compiler configuration
<compiler-config>`.
Before 2024, the directory structure was different::
spack compiler add /opt/intel/oneapi/compiler/latest/linux/bin/intel64
spack compiler add /opt/intel/oneapi/compiler/latest/linux/bin
Libraries
---------

View File

@ -7,9 +7,9 @@
import os
import platform
import shutil
from os.path import basename, dirname, isdir
from os.path import basename, isdir
from llnl.util.filesystem import find_headers, find_libraries, join_path, mkdirp
from llnl.util.filesystem import HeaderList, find_libraries, join_path, mkdirp
from llnl.util.link_tree import LinkTree
from spack.directives import conflicts, variant
@ -55,10 +55,21 @@ def component_dir(self):
"""Subdirectory for this component in the install prefix."""
raise NotImplementedError
@property
def v2_layout_versions(self):
"""Version that implements the v2 directory layout."""
raise NotImplementedError
@property
def v2_layout(self):
"""Returns true if this version implements the v2 directory layout."""
return self.spec.satisfies(self.v2_layout_versions)
@property
def component_prefix(self):
"""Path to component <prefix>/<component>/<version>."""
return self.prefix.join(join_path(self.component_dir, self.spec.version))
v = self.spec.version.up_to(2) if self.v2_layout else self.spec.version
return self.prefix.join(self.component_dir).join(str(v))
@property
def env_script_args(self):
@ -112,8 +123,9 @@ def install_component(self, installer_path):
shutil.rmtree("/var/intel/installercache", ignore_errors=True)
# Some installers have a bug and do not return an error code when failing
if not isdir(join_path(self.prefix, self.component_dir)):
raise RuntimeError("install failed")
install_dir = self.component_prefix
if not isdir(install_dir):
raise RuntimeError("install failed to directory: {0}".format(install_dir))
def setup_run_environment(self, env):
"""Adds environment variables to the generated module file.
@ -128,7 +140,7 @@ def setup_run_environment(self, env):
if "~envmods" not in self.spec:
env.extend(
EnvironmentModifications.from_sourcing_file(
join_path(self.component_prefix, "env", "vars.sh"), *self.env_script_args
self.component_prefix.env.join("vars.sh"), *self.env_script_args
)
)
@ -167,16 +179,21 @@ class IntelOneApiLibraryPackage(IntelOneApiPackage):
"""
def header_directories(self, dirs):
h = HeaderList([])
h.directories = dirs
return h
@property
def headers(self):
include_path = join_path(self.component_prefix, "include")
return find_headers("*", include_path, recursive=True)
return self.header_directories(
[self.component_prefix.include, self.component_prefix.include.join(self.component_dir)]
)
@property
def libs(self):
lib_path = join_path(self.component_prefix, "lib", "intel64")
lib_path = lib_path if isdir(lib_path) else dirname(lib_path)
return find_libraries("*", root=lib_path, shared=True, recursive=True)
# for v2_layout all libraries are in the top level, v1 sometimes put them in intel64
return find_libraries("*", root=self.component_prefix.lib, recursive=not self.v2_layout)
class IntelOneApiLibraryPackageWithSdk(IntelOneApiPackage):
@ -189,23 +206,13 @@ class IntelOneApiLibraryPackageWithSdk(IntelOneApiPackage):
"""
@property
def include(self):
return join_path(self.component_prefix, "sdk", "include")
@property
def headers(self):
return find_headers("*", self.include, recursive=True)
@property
def lib(self):
lib_path = join_path(self.component_prefix, "sdk", "lib64")
lib_path = lib_path if isdir(lib_path) else dirname(lib_path)
return lib_path
return self.header_directories([self.component_prefix.sdk.include])
@property
def libs(self):
return find_libraries("*", root=self.lib, shared=True, recursive=True)
return find_libraries("*", self.component_prefix.sdk.lib64)
class IntelOneApiStaticLibraryList:

View File

@ -6,6 +6,8 @@
import os
from os.path import dirname
from llnl.util import tty
from spack.compiler import Compiler
@ -135,3 +137,13 @@ def setup_custom_environment(self, pkg, env):
# Executable "sycl-post-link" doesn't exist!
if self.cxx:
env.prepend_path("PATH", dirname(self.cxx))
# 2024 release bumped the libsycl version because of an ABI
# change, 2024 compilers are required. You will see this
# error:
#
# /usr/bin/ld: warning: libsycl.so.7, needed by ...., not found
if pkg.spec.satisfies("%oneapi@:2023"):
for c in ["dnn"]:
if pkg.spec.satisfies(f"^intel-oneapi-{c}@2024:"):
tty.warn(f"intel-oneapi-{c}@2024 SYCL APIs requires %oneapi@2024:")

View File

@ -64,6 +64,9 @@ spack:
require: "%gcc"
bison:
require: '%gcc'
# sycl abi change means you need 2024 compiler to use 2024 mkl
intel-oneapi-mkl:
require: "@2023"
specs:
# CPU

View File

@ -24,6 +24,12 @@ class IntelOneapiAdvisor(IntelOneApiLibraryPackageWithSdk):
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/advisor.html"
)
version(
"2024.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/88c5bdaa-7a2d-491f-9871-7170fadc3d52/l_oneapi_advisor_p_2024.0.0.49522_offline.sh",
sha256="0ef3cf39c2fbb39371ac2470dad7d0d8cc0a2709c4f78dcab58d115b446c81c4",
expand=False,
)
version(
"2023.2.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/0b0e8bf2-30e4-4a26-b1ef-e369b0181b35/l_oneapi_advisor_p_2023.2.0.49489_offline.sh",
@ -73,6 +79,10 @@ class IntelOneapiAdvisor(IntelOneApiLibraryPackageWithSdk):
expand=False,
)
@property
def v2_layout_versions(self):
return "@2024:"
@property
def component_dir(self):
return "advisor"

View File

@ -27,6 +27,12 @@ class IntelOneapiCcl(IntelOneApiLibraryPackage):
depends_on("intel-oneapi-mpi")
version(
"2021.11.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/9e63eba5-2b3d-4032-ad22-21f02e35b518/l_oneapi_ccl_p_2021.11.0.49161_offline.sh",
sha256="35fde9862d620c211064addfd3c15c4fc33bcaac6fe050163eb59a006fb9d476",
expand=False,
)
version(
"2021.10.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/3230823d-f799-4d1f-8ef3-a17f086a7719/l_oneapi_ccl_p_2021.10.0.49084_offline.sh",
@ -100,6 +106,10 @@ class IntelOneapiCcl(IntelOneApiLibraryPackage):
expand=False,
)
@property
def v2_layout_versions(self):
return "@2021.11:"
@property
def component_dir(self):
return "ccl"

View File

@ -36,8 +36,10 @@ class IntelOneapiCompilersClassic(Package):
"2021.8.0": "2023.0.0",
"2021.9.0": "2023.1.0",
"2021.10.0": "2023.2.0",
"2021.11.0": "2024.0.0",
}.items():
version(ver)
# prefer 2021.10.0 because it is the last one that has a C compiler
version(ver, preferred=(ver == "2021.10.0"))
depends_on("intel-oneapi-compilers@" + oneapi_ver, when="@" + ver, type="run")
# icc@2021.6.0 does not support gcc@12 headers

View File

@ -7,6 +7,17 @@
from spack.package import *
versions = [
{
"version": "2024.0.0",
"cpp": {
"url": "https://registrationcenter-download.intel.com/akdlm//IRC_NAS/5c8e686a-16a7-4866-b585-9cf09e97ef36/l_dpcpp-cpp-compiler_p_2024.0.0.49524_offline.sh",
"sha256": "d10bad2009c98c631fbb834aae62012548daeefc806265ea567316cd9180a684",
},
"ftn": {
"url": "https://registrationcenter-download.intel.com/akdlm//IRC_NAS/89b0fcf9-5c00-448a-93a1-5ee4078e008e/l_fortran-compiler_p_2024.0.0.49493_offline.sh",
"sha256": "57faf854b8388547ee4ef2db387a9f6f3b4d0cebd67b765cf5e844a0a970d1f9",
},
},
{
"version": "2023.2.1",
"cpp": {
@ -182,13 +193,29 @@ class IntelOneapiCompilers(IntelOneApiPackage):
**v["ftn"],
)
@property
def v2_layout_versions(self):
return "@2024:"
@property
def component_dir(self):
return "compiler"
@property
def _llvm_bin(self):
return self.component_prefix.bin if self.v2_layout else self.component_prefix.linux.bin
@property
def _classic_bin(self):
return (
self.component_prefix.bin
if self.v2_layout
else self.component_prefix.linux.bin.intel64
)
@property
def compiler_search_prefix(self):
return self.prefix.compiler.join(str(self.version)).linux.bin
return self._llvm_bin
def setup_run_environment(self, env):
"""Adds environment variables to the generated module file.
@ -203,14 +230,15 @@ def setup_run_environment(self, env):
"""
super().setup_run_environment(env)
env.set("CC", self.component_prefix.linux.bin.icx)
env.set("CXX", self.component_prefix.linux.bin.icpx)
env.set("F77", self.component_prefix.linux.bin.ifx)
env.set("FC", self.component_prefix.linux.bin.ifx)
env.set("CC", self._llvm_bin.icx)
env.set("CXX", self._llvm_bin.icpx)
env.set("F77", self._llvm_bin.ifx)
env.set("FC", self._llvm_bin.ifx)
def install(self, spec, prefix):
# Copy instead of install to speed up debugging
# install_tree("/opt/intel/oneapi/compiler", self.prefix)
# return
# install cpp
super().install(spec, prefix)
@ -219,13 +247,28 @@ def install(self, spec, prefix):
self.install_component(find("fortran-installer", "*")[0])
# Some installers have a bug and do not return an error code when failing
if not is_exe(self.component_prefix.linux.bin.intel64.ifort):
raise RuntimeError("install failed")
if not is_exe(self._llvm_bin.ifx):
raise RuntimeError("Fortran install failed")
@run_after("install")
def inject_rpaths(self):
# Sets rpath so the compilers can work without setting LD_LIBRARY_PATH.
# The oneapi compilers cannot find their own internal shared
# libraries. If you are using an externally installed oneapi,
# then you need to source setvars.sh, which will set
# LD_LIBRARY_PATH. If you are using spack to install the
# compilers, then we patch the binaries that have this
# problem. Over time, intel has corrected most of the
# issues. I am using the 2024 release as a milestone to stop
# patching everything and just patching the binaries that have
# a problem.
patchelf = which("patchelf")
if self.spec.satisfies("@2024:"):
patchelf.add_default_arg("--set-rpath", self.component_prefix.lib)
patchelf(self.component_prefix.bin.join("sycl-post-link"))
patchelf(self.component_prefix.bin.compiler.join("llvm-spirv"))
return
# Sets rpath so the compilers can work without setting LD_LIBRARY_PATH.
patchelf.add_default_arg("--set-rpath", ":".join(self._ld_library_path()))
for pd in ["bin", "lib", join_path("compiler", "lib", "intel64_lin")]:
for file in find(self.component_prefix.linux.join(pd), "*", recursive=False):
@ -254,7 +297,10 @@ def extend_config_flags(self):
# TODO: it is unclear whether we should really use all elements of
# _ld_library_path because it looks like the only rpath that needs to be
# injected is self.component_prefix.linux.compiler.lib.intel64_lin.
common_flags = ["-Wl,-rpath,{}".format(d) for d in self._ld_library_path()]
if self.v2_layout:
common_flags = ["-Wl,-rpath,{}".format(self.component_prefix.lib)]
else:
common_flags = ["-Wl,-rpath,{}".format(d) for d in self._ld_library_path()]
# Make sure that underlying clang gets the right GCC toolchain by default
llvm_flags = ["--gcc-toolchain={}".format(self.compiler.prefix)]
@ -266,20 +312,17 @@ def extend_config_flags(self):
# The cfg flags are treated as command line flags apparently. Newer versions
# do not trigger these warnings. In some build systems these warnings can
# cause feature detection to fail, so we silence them with -Wno-unused-...
if self.spec.version < Version("2022.1.0"):
if self.spec.satisfies("@:2022.0"):
llvm_flags.append("-Wno-unused-command-line-argument")
self.write_config_file(
common_flags + llvm_flags, self.component_prefix.linux.bin, ["icx", "icpx"]
)
self.write_config_file(
common_flags + classic_flags, self.component_prefix.linux.bin, ["ifx"]
)
self.write_config_file(
common_flags + classic_flags,
self.component_prefix.linux.bin.intel64,
["icc", "icpc", "ifort"],
)
self.write_config_file(common_flags + llvm_flags, self._llvm_bin, ["icx", "icpx"])
self.write_config_file(common_flags + classic_flags, self._llvm_bin, ["ifx"])
self.write_config_file(common_flags + classic_flags, self._classic_bin, ["ifort"])
# 2023 is the last release that includes icc
if self.spec.satisfies("@:2023"):
self.write_config_file(
common_flags + classic_flags, self._classic_bin, ["icc", "icpc"]
)
def _ld_library_path(self):
# Returns an iterable of directories that might contain shared runtime libraries

View File

@ -26,6 +26,12 @@ class IntelOneapiDal(IntelOneApiLibraryPackage):
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onedal.html"
)
version(
"2024.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/37364086-b3cd-4a54-8736-7893732c1a86/l_daal_oneapi_p_2024.0.0.49569_offline.sh",
sha256="45e71c7cbf38b04a34c47e36e2d86a48847f2f0485bafbc3445077a9ba3fa73c",
expand=False,
)
version(
"2023.2.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/fa218373-4b06-451f-8f4c-66b7d14b8e8b/l_daal_oneapi_p_2023.2.0.49574_offline.sh",
@ -104,6 +110,10 @@ class IntelOneapiDal(IntelOneApiLibraryPackage):
provides("daal")
provides("onedal")
@property
def v2_layout_versions(self):
return "@2024:"
@property
def component_dir(self):
return "dal"

View File

@ -26,6 +26,12 @@ class IntelOneapiDnn(IntelOneApiLibraryPackage):
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onednn.html"
)
version(
"2024.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/dc309221-d210-4f3a-9406-d897df8deab8/l_onednn_p_2024.0.0.49548_offline.sh",
sha256="17fbd5cc5d08de33625cf2879c0cceec53c91bbcd0b863e8f29d27885bac88c9",
expand=False,
)
version(
"2023.2.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/2d218b97-0175-4f8c-8dba-b528cec24d55/l_onednn_p_2023.2.0.49517_offline.sh",
@ -101,16 +107,25 @@ class IntelOneapiDnn(IntelOneApiLibraryPackage):
depends_on("tbb")
@property
def v2_layout_versions(self):
return "@2024:"
@property
def component_dir(self):
return "dnnl"
def __target(self):
if self.v2_layout:
return self.component_prefix
else:
return self.component_prefix.cpu_dpcpp_gpu_dpcpp
@property
def headers(self):
include_path = join_path(self.component_prefix, "cpu_dpcpp_gpu_dpcpp", "include")
return find_headers("dnnl", include_path)
return find_headers("dnnl", self.__target().include)
@property
def libs(self):
lib_path = join_path(self.component_prefix, "cpu_dpcpp_gpu_dpcpp", "lib")
return find_libraries(["libdnnl", "libmkldnn"], root=lib_path, shared=True)
# libmkldnn was removed before 2024, but not sure when
return find_libraries(["libdnnl", "libmkldnn"], self.__target().lib)

View File

@ -19,6 +19,12 @@ class IntelOneapiDpct(IntelOneApiPackage):
homepage = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compatibility-tool.html#gs.2p8km6"
version(
"2024.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/6633bc4b-5356-471a-9aae-d5e63e7acd95/l_dpcpp-ct_p_2024.0.0.49394_offline.sh",
sha256="5fdba92edf24084187d98f083f9a6e17ee6b33ad8a736d6c9cdd3dbd4e0eab8a",
expand=False,
)
version(
"2023.2.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/764119eb-2959-4b51-bb3c-3cf581c16186/l_dpcpp-ct_p_2023.2.0.49333_offline.sh",
@ -56,6 +62,10 @@ class IntelOneapiDpct(IntelOneApiPackage):
expand=False,
)
@property
def v2_layout_versions(self):
return "@2024:"
@property
def component_dir(self):
return "dpcpp-ct"

View File

@ -22,6 +22,12 @@ class IntelOneapiDpl(IntelOneApiLibraryPackage):
homepage = "https://github.com/oneapi-src/oneDPL"
version(
"2022.3.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/be027095-148a-4433-aff4-c6e8582da3ca/l_oneDPL_p_2022.3.0.49386_offline.sh",
sha256="1e40c6562bc41fa5a46c80c09222bf12d36d8e82f749476d0a7e97503d4659df",
expand=False,
)
version(
"2022.2.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/44f88a97-7526-48f0-8515-9bf1356eb7bb/l_oneDPL_p_2022.2.0.49287_offline.sh",
@ -77,16 +83,16 @@ class IntelOneapiDpl(IntelOneApiLibraryPackage):
expand=False,
)
@property
def v2_layout_versions(self):
return "@2022.3:"
@property
def component_dir(self):
return "dpl"
@property
def headers(self):
include_path = join_path(self.component_prefix, "linux", "include")
headers = find_headers("*", include_path, recursive=True)
# Force this directory to be added to include path, even
# though no files are here because all includes are relative
# to this path
headers.directories = [include_path]
return headers
return self.header_directories(
[self.component_prefix.include, self.component_prefix.linux.include]
)

View File

@ -24,6 +24,12 @@ class IntelOneapiInspector(IntelOneApiLibraryPackageWithSdk):
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/inspector.html"
version(
"2024.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/44ae6846-719c-49bd-b196-b16ce5835a1e/l_inspector_oneapi_p_2024.0.0.49433_offline.sh",
sha256="2b281c3a704a242aa3372284960ea8ed5ed1ba293cc2f70c2f873db3300c80a3",
expand=False,
)
version(
"2023.2.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/2a99eafd-5109-41a1-9762-aee0c7ecbeb7/l_inspector_oneapi_p_2023.2.0.49304_offline.sh",
@ -79,6 +85,10 @@ class IntelOneapiInspector(IntelOneApiLibraryPackageWithSdk):
expand=False,
)
@property
def v2_layout_versions(self):
return "@2024:"
@property
def component_dir(self):
return "inspector"

View File

@ -27,6 +27,12 @@ class IntelOneapiIpp(IntelOneApiLibraryPackage):
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html"
)
version(
"2021.10.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/2d48c7d9-e716-4c73-8fe5-77a9599a405f/l_ipp_oneapi_p_2021.10.0.670_offline.sh",
sha256="c4ad98f96760b0a821dbcd59963c5148fd9dc4eb790af0e6e765a5f36525d202",
expand=False,
)
version(
"2021.9.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/616a3fba-4ab6-4317-a17b-2be4b737fc37/l_ipp_oneapi_p_2021.9.0.49454_offline.sh",
@ -104,6 +110,10 @@ class IntelOneapiIpp(IntelOneApiLibraryPackage):
provides("ipp")
@property
def v2_layout_versions(self):
return "@2021.10:"
@property
def component_dir(self):
return "ipp"

View File

@ -28,6 +28,12 @@ class IntelOneapiIppcp(IntelOneApiLibraryPackage):
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html"
)
version(
"2021.9.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/6792a758-2d69-4ff3-ad24-233fb3bf56e4/l_ippcp_oneapi_p_2021.9.0.533_offline.sh",
sha256="5eca6fd18d9117f8cb7c599cee418b9cc3d7d5d5404f1350d47289095b6a1254",
expand=False,
)
version(
"2021.8.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/f488397a-bd8f-449f-9127-04de8426aa35/l_ippcp_oneapi_p_2021.8.0.49493_offline.sh",
@ -101,6 +107,10 @@ class IntelOneapiIppcp(IntelOneApiLibraryPackage):
expand=False,
)
@property
def v2_layout_versions(self):
return "@2021.9:"
@property
def component_dir(self):
return "ippcp"

View File

@ -27,6 +27,12 @@ class IntelOneapiItac(IntelOneApiPackage):
maintainers("rscohn2")
version(
"2022.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/e83526f5-7e0f-4708-9e0d-47f1e65f29aa/l_itac_oneapi_p_2022.0.0.49690_offline.sh",
sha256="6ab2888afcfc981273aed3df316463fbaf511faf83ee091ca79016459b03b79e",
expand=False,
)
version(
"2021.10.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/226adf12-b7f6-407e-95a9-8e9ab76d7631/l_itac_oneapi_p_2021.10.0.14_offline.sh",
@ -58,6 +64,10 @@ class IntelOneapiItac(IntelOneApiPackage):
expand=False,
)
@property
def v2_layout_versions(self):
return "@2022:"
@property
def component_dir(self):
return "itac"

View File

@ -25,6 +25,12 @@ class IntelOneapiMkl(IntelOneApiLibraryPackage):
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html"
)
version(
"2024.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/86d6a4c1-c998-4c6b-9fff-ca004e9f7455/l_onemkl_p_2024.0.0.49673_offline.sh",
sha256="2a3be7d01d75ba8cc3059f9a32ae72e5bfc93e68e72e94e79d7fa6ea2f7814de",
expand=False,
)
version(
"2023.2.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/adb8a02c-4ee7-4882-97d6-a524150da358/l_onemkl_p_2023.2.0.49497_offline.sh",
@ -129,12 +135,12 @@ class IntelOneapiMkl(IntelOneApiLibraryPackage):
provides("lapack", "blas")
@property
def component_dir(self):
return "mkl"
def v2_layout_versions(self):
return "@2024:"
@property
def headers(self):
return find_headers("*", self.component_prefix.include)
def component_dir(self):
return "mkl"
@property
def libs(self):
@ -198,7 +204,9 @@ def _find_mkl_libs(self, shared):
)
)
lib_path = self.component_prefix.lib.intel64
lib_path = (
self.component_prefix.lib if self.v2_layout else self.component_prefix.lib.intel64
)
lib_path = lib_path if isdir(lib_path) else dirname(lib_path)
resolved_libs = find_libraries(libs, lib_path, shared=shared)
@ -219,5 +227,11 @@ def _xlp64_lib(self, lib):
@run_after("install")
def fixup_prefix(self):
# The motivation was to provide a more standard layout so mkl
# would be more likely to work as a virtual dependence. I am
# not sure if this mechanism is useful and it became a problem
# for mpi so disabling for v2_layout.
if self.v2_layout:
return
self.symlink_dir(self.component_prefix.include, self.prefix.include)
self.symlink_dir(self.component_prefix.lib, self.prefix.lib)

View File

@ -21,6 +21,12 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage):
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/mpi-library.html"
version(
"2021.11.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/2c45ede0-623c-4c8e-9e09-bed27d70fa33/l_mpi_oneapi_p_2021.11.0.49513_offline.sh",
sha256="9a96caeb7abcf5aa08426216db38a2c7936462008b9825036266bc79cb0e30d8",
expand=False,
)
version(
"2021.10.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4f5871da-0533-4f62-b563-905edfb2e9b7/l_mpi_oneapi_p_2021.10.0.49374_offline.sh",
@ -107,6 +113,10 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage):
provides("mpi@:3.1")
@property
def v2_layout_versions(self):
return "@2021.11:"
@property
def component_dir(self):
return "mpi"
@ -155,10 +165,9 @@ def setup_dependent_build_environment(self, env, dependent_spec):
@property
def headers(self):
headers = find_headers("*", self.component_prefix.include)
if "+ilp64" in self.spec:
headers += find_headers("*", self.component_prefix.include.ilp64)
return headers
return self.header_directories(
[self.component_prefix.include, self.component_prefix.include.ilp64]
)
@property
def libs(self):
@ -192,6 +201,13 @@ def fix_wrappers(self):
@run_after("install")
def fixup_prefix(self):
# The motivation was to provide a more standard layout so impi
# would be more likely to work as a virtual dependence. It
# does not work for v2_layout because of a library conflict. I
# am not sure if this mechanism is useful so disabling for
# v2_layout rather than try to make it work.
if self.v2_layout:
return
self.symlink_dir(self.component_prefix.include, self.prefix.include)
self.symlink_dir(self.component_prefix.lib, self.prefix.lib)
self.symlink_dir(self.component_prefix.lib.release, self.prefix.lib)

View File

@ -22,6 +22,12 @@ class IntelOneapiTbb(IntelOneApiLibraryPackage):
"https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onetbb.html"
)
version(
"2021.11.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/af3ad519-4c87-4534-87cb-5c7bda12754e/l_tbb_oneapi_p_2021.11.0.49527_offline.sh",
sha256="dd878ee979d7b6da4eb973adfebf814d9d7eed86b875d31e3662d100b2fa0956",
expand=False,
)
version(
"2021.10.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/c95cd995-586b-4688-b7e8-2d4485a1b5bf/l_tbb_oneapi_p_2021.10.0.49543_offline.sh",
@ -101,7 +107,17 @@ class IntelOneapiTbb(IntelOneApiLibraryPackage):
def component_dir(self):
return "tbb"
@property
def v2_layout_versions(self):
return "@2021.11:"
@run_after("install")
def fixup_prefix(self):
# The motivation was to provide a more standard layout so tbb
# would be more likely to work as a virtual dependence. I am
# not sure if this mechanism is useful and it became a problem
# for mpi so disabling for v2_layout.
if self.v2_layout:
return
self.symlink_dir(self.component_prefix.include, self.prefix.include)
self.symlink_dir(self.component_prefix.lib, self.prefix.lib)

View File

@ -74,6 +74,12 @@ class IntelOneapiVpl(IntelOneApiLibraryPackage):
expand=False,
)
# VPL no longer releases as part of oneapi, so there will never be
# a 2024 release
@property
def v2_layout_versions(self):
return "@2024:"
@property
def component_dir(self):
return "vpl"

View File

@ -25,6 +25,12 @@ class IntelOneapiVtune(IntelOneApiLibraryPackageWithSdk):
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/vtune-profiler.html"
version(
"2024.0.0",
url="https://registrationcenter-download.intel.com/akdlm//IRC_NAS/1722cc83-ceb2-4304-b4dc-2813780222a3/l_oneapi_vtune_p_2024.0.0.49503_offline.sh",
sha256="09537329bdf6e105b0e164f75dc8ae122adc99a64441f6a52225509bcff3b848",
expand=False,
)
version(
"2023.2.0",
url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/dfae6f23-6c90-4b9f-80e2-fa2a5037fe36/l_oneapi_vtune_p_2023.2.0.49485_offline.sh",
@ -80,6 +86,10 @@ class IntelOneapiVtune(IntelOneApiLibraryPackageWithSdk):
expand=False,
)
@property
def v2_layout_versions(self):
return "@2024:"
@property
def component_dir(self):
return "vtune"