oneAPI packages in Spack
Spack can install and use the Intel oneAPI products. You may either use spack to install the oneAPI tools or use the Intel installers. After installation, you may use the tools directly, or use Spack to build packages with the tools.
The Spack Python class
IntelOneapiPackage is a base class that is
IntelOneapiTbb and other classes to implement the oneAPI
packages. See the Package List for the full list of available
oneAPI packages or use:
spack list -d oneAPI
For more information on a specific package, do:
spack info --all <package-name>
Intel no longer releases new versions of Parallel Studio, which can be used in Spack via the Intel. All of its components can now be found in oneAPI.
Building a Package With icx
In this example, we build patchelf with
compilers are installed with spack.
Install the oneAPI compilers:
spack install intel-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
Verify that the compilers are available:
spack compiler list
intel-oneapi-compilers package includes 2 families of
ifort. Intel’s classic compilers.
ifx. Intel’s new generation of compilers based on LLVM.
To build the
patchelf Spack package with
spack install patchelf%intel
To build with with
spack install patchelf%oneapi
Using oneAPI MPI to Satisfy a Virtual Dependence
hdf5 package works with any compatible MPI implementation. To
hdf5 with Intel oneAPI MPI do:
spack install hdf5 +mpi ^intel-oneapi-mpi
Using Externally Installed oneAPI Tools
Spack can also use oneAPI tools that are manually installed with Intel Installers. The procedures for configuring Spack to use external compilers and libraries are different.
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
Adapt the paths above if you did not install the tools in the default
location. After adding the compilers, using them is the same
as if you had installed the
Another option is to manually add the configuration to
compilers.yaml as described in Compiler configuration.
If you want Spack to use oneMKL that you have installed without Spack in
the default location, then add the following to
~/.spack/packages.yaml, adjusting the version as appropriate:
intel-oneapi-mkl: externals: - spec: email@example.com prefix: /opt/intel/oneapi/
Using oneAPI Tools Installed by Spack
Spack can be a convenient way to install and configure compilers and libraries, even if you do not intend to build a Spack package. If you want to build a Makefile project using Spack-installed oneAPI compilers, then use spack to configure your environment:
spack load intel-oneapi-compilers
And then you can build with:
You can also use Spack-installed libraries. For example:
spack load intel-oneapi-mkl
Will update your environment CPATH, LIBRARY_PATH, and other environment variables for building an application with oneMKL.
This section describes basic use of oneAPI, especially if it has changed compared to Parallel Studio. See Intel for more information on Selecting libraries to satisfy virtual packages, Unrelated packages, Integrating external libraries, and Tips for configuring client packages to use MKL.