Featured image of post Record: Install Intel® OneAPI-2024.0

Record: Install Intel® OneAPI-2024.0

OneAPI is an open and standards-based specification that supports multiple architecture types, including but not limited to GPU, CPU, and FPGA. The specification has direct programming and API-based programming paradigms. Intel® OneAPI is a software suite that includes various tools and libraries to support the OneAPI specification. This article documents the process of installing Intel® OneAPI-2024.0 on CentOS 7.6.

# Record: Install Intel® OneAPI-2024.0

Intel oneAPI consists of two parts, the former being the Base Toolkit, and the latter must rely on the former, Intel oneAPI HPC Toolkit, which means they need to be installed sequentially.

# Base Toolkit

Base Toolkit is Intel’s basic API toolkit that includes the following libraries and others.

Intel® oneAPI DPC++/C++ Compiler
Intel® DPC++ Compatibility Tool
Intel® oneAPI DPC++ Library
Intel® oneAPI Math Kernel Library
Intel® oneAPI Threading Building Blocks
Intel® oneAPI Collective Communications Library
Intel® oneAPI Data Analytics Library
Intel® oneAPI Deep Neural Networks Library
Intel® Integrated Performance Primitives
Intel® VTune™ Profiler
Intel® Advisor
Intel® Distribution for GDB*
Intel® Distribution for Python* (separate download required)
Intel® FPGA Add-on for oneAPI Base Toolkit (separate download required)

# Base Toolkit Installation

  1. Download the installation package
$ wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/163da6e4-56eb-4948-aba3-debcec61c064/l_BaseKit_p_2024.0.1.46_offline.sh
  1. Installation
$ chmod +x l_BaseKit_p_2024.0.1.46_offline.sh
$ sudo ./l_BaseKit_p_2024.0.1.46_offline.sh
  • If custom installed in the user directory, root privileges are not required.
./l_BaseKit_p_2024.0.1.46_offline.sh

Then a graphical installation interface will start, continue with the following steps:

(1) Select Accept & customize

OneAPI-Accepet-2024-03-09

(2) Select components to install

OneAPI-Select-2-2024-03-09

(3) Select installation path

OneAPI-Select-3-2024-03-09

(4) Select Next

OneAPI-Select-4-2024-03-09

(5) Select 2 then start installation

OneAPI-Select-5-2024-03-09

Next, wait for the installation to complete.

# HPC Toolkit

Run based on Base Toolkit, this must be installed afterwards

Intel® Fortran Compiler
Intel® Fortran Compiler Classic
Intel® Inspector
Intel® MPI Library
Intel® Trace Analyzer and Collector

# HPC Toolkit Installation

  1. Download and install package
$ wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/67c08c98-f311-4068-8b85-15d79c4f277a/l_HPCKit_p_2024.0.1.38_offline.sh
  1. Installation
$ chmod +x l_HPCKit_p_2024.0.1.38_offline.sh
$ sudo ./l_HPCKit_p_2024.0.1.38_offline.sh
  • If custom installation is in the user directory, root privileges are not required.
./l_HPCKit_p_2024.0.1.38_offline.sh

Required library files: Intel® MPI Library Intel® Fortran Compiler (Beta) & Intel® Fortran Compiler Classic Intel® oneAPI DPC++/C++ Compiler & Intel® C++ Compiler Classic

The installation process is similar to the Base Toolkit and will not be elaborated.

# Environment Configuration

After installation, you need to configure environment variables to use Intel® oneAPI tools in the terminal.

In an HPC environment, use modulefile to manage environment variables, and you can use the module command to load environment variables.

Below is a reference modulefile file, which you can modify according to your installation path.

#%Module1.0#####################################################################
##
## modules modulefile
##
proc ModulesHelp { } {
        global version prefix

        puts stderr "\tmodules - loads the modules software & application environment"
        puts stderr "\n\tThis adds $prefix/* to several of the"
        puts stderr "\tenvironment variables."
        puts stderr "\n\tVersion $version\n"
}

module-whatis	"loads intel/oneapi2024.0"

# for Tcl script use only
set	version		oneapi2024.0
set	prefix		/opt/software/intel/oneapi2024.0

conflict	intel

prepend-path	TBBROOT			${prefix}/tbb/2021.11/env/..
prepend-path	DAALROOT		${prefix}/cdal/2024.0
prepend-path	DPCT_BUNDLE_ROOT	${prefix}/dpcpp-ct/2024.0
prepend-path	INSPECTOR_2023_DIR	${prefix}/inspector/2024.0
prepend-path	ONEAPI_ROOT		${prefix}
prepend-path	PKG_CONFIG_PATH		${prefix}/vtune/2024.0/include/pkgconfig/lib64:${prefix}/tbb/2021.11/env/../lib/pkgconfig:${prefix}/mpi/2021.11/lib/pkgconfig:${prefix}/mkl/2024.0/lib/pkgconfig:${prefix}/ippcp/2021.9/lib/pkgconfig:${prefix}/inspector/2024.0/include/pkgconfig/lib64:${prefix}/dpl/2022.3/lib/pkgconfig:${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp/../lib/pkgconfig:${prefix}/cdal/2024.0/lib/pkgconfig:${prefix}/compiler/2024.0/lib/pkgconfig:${prefix}/ccl/2021.11/lib/pkgconfig:${prefix}/advisor/2024.0/include/pkgconfig/lib64:
#prepend-path	PKG_CONFIG_PATH		${prefix}/vtune/2024.0/include/pkgconfig/lib64:${prefix}/tbb/2021.11/env/../lib/pkgconfig:${prefix}/mkl/2024.0/lib/pkgconfig:${prefix}/ippcp/2021.9/lib/pkgconfig:${prefix}/inspector/2024.0/include/pkgconfig/lib64:${prefix}/dpl/2022.3/lib/pkgconfig:${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp/../lib/pkgconfig:${prefix}/cdal/2024.0/lib/pkgconfig:${prefix}/compiler/2024.0/lib/pkgconfig:${prefix}/ccl/2021.11/lib/pkgconfig:${prefix}/advisor/2024.0/include/pkgconfig/lib64:
prepend-path	VT_MPI			impi4
prepend-path	ACL_BOARD_VENDOR_PATH	/opt/Intel/OpenCLFPGA/oneAPI/Boards
prepend-path	FPGA_VARS_DIR		${prefix}/compiler/2024.0/lib/oclfpga
prepend-path	CCL_ROOT		${prefix}/ccl/2021.11
prepend-path	VT_ADD_LIBS		"-ldwarf -lelf -lvtunwind -lm -lpthread"
prepend-path	I_MPI_ROOT		${prefix}/mpi/2021.11
prepend-path	FI_PROVIDER_PATH	${prefix}/mpi/2021.11//libfabric/lib/prov:/usr/lib/x86_64-linux-gnu/libfabric
prepend-path	DNNLROOT		${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp
prepend-path	DIAGUTIL_PATH		${prefix}/vtune/2024.0/sys_check/vtune_sys_check.py:${prefix}/dpcpp-ct/2024.0/sys_check/sys_check.sh:${prefix}/debugger/2024.0/sys_check/debugger_sys_check.py:${prefix}/compiler/2024.0/sys_check/sys_check.sh:${prefix}/advisor/2024.0/sys_check/advisor_sys_check.py:
prepend-path	CCL_CONFIGURATION	cpu_gpu_dpcpp
prepend-path	DPL_ROOT		${prefix}/dpl/2022.3
prepend-path	MANPATH			${prefix}/mpi/2021.11/man:${prefix}/itac/2022.0/man:${prefix}/debugger/2024.0/documentation/man:${prefix}/compiler/2024.0/documentation/en/man/common:::
#prepend-path	MANPATH			${prefix}/itac/2022.0/man:${prefix}/debugger/2024.0/documentation/man:${prefix}/compiler/2024.0/documentation/en/man/common:::
prepend-path	GDB_INFO		${prefix}/debugger/2024.0/documentation/info/
prepend-path	SETVARS_COMPLETED	1
prepend-path	APM			${prefix}/advisor/2024.0/perfmodels
prepend-path	CMAKE_PREFIX_PATH	${prefix}/tbb/2021.11/env/..:${prefix}/ipp/2021.10/lib/cmake/ipp:${prefix}/ipp/2021.10/lib/cmake/ipp:${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp/../lib/cmake:${prefix}/cdal/2024.0:${prefix}/compiler/2024.0/IntelDPCPP:${prefix}/ccl/2021.11/lib/cmake/oneCCL
prepend-path	VTUNE_PROFILER_2023_DIR	${prefix}/vtune/2024.0
prepend-path	CMPLR_ROOT		${prefix}/compiler/2024.0
prepend-path	ADVISOR_2023_DIR	${prefix}/advisor/2024.0
prepend-path	FPGA_VARS_ARGS		""
prepend-path	INFOPATH		${prefix}/debugger/2024.0/gdb/intel64/lib
prepend-path	IPPROOT			${prefix}/ipp/2021.10
prepend-path	IPP_TARGET_ARCH		intel64
prepend-path	PYTHONPATH		${prefix}/advisor/2024.0/pythonapi
prepend-path	VT_ROOT			${prefix}/itac/2022.0
prepend-path	DALROOT			${prefix}/cdal/2024.0
prepend-path	LIBRARY_PATH		${prefix}/tbb/2021.11/env/../lib/intel64/gcc4.8:${prefix}/mpi/2021.11//libfabric/lib:${prefix}/mpi/2021.11//lib/release:${prefix}/mpi/2021.11//lib:${prefix}/mkl/2024.0/lib/intel64:${prefix}/ipp/2021.10/lib/intel64:${prefix}/ippcp/2021.9/lib/intel64:${prefix}/ipp/2021.10/lib/intel64:${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp/lib:${prefix}/cdal/2024.0/lib/intel64:${prefix}/compiler/2024.0/compiler/lib/intel64_lin:${prefix}/compiler/2024.0/lib:${prefix}/ccl/2021.11/lib/cpu_gpu_dpcpp
#prepend-path	LIBRARY_PATH		${prefix}/tbb/2021.11/env/../lib/intel64/gcc4.8:${prefix}/mkl/2024.0/lib/intel64:${prefix}/ipp/2021.10/lib/intel64:${prefix}/ippcp/2021.9/lib/intel64:${prefix}/ipp/2021.10/lib/intel64:${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp/lib:${prefix}/cdal/2024.0/lib/intel64:${prefix}/compiler/2024.0/compiler/lib/intel64_lin:${prefix}/compiler/2024.0/lib:${prefix}/ccl/2021.11/lib/cpu_gpu_dpcpp
prepend-path	DAL_MAJOR_BINARY	1
prepend-path	IPPCRYPTOROOT		${prefix}/ippcp/2021.9
prepend-path	IPPCP_TARGET_ARCH	intel64
prepend-path	OCL_ICD_FILENAMES	libintelocl_emu.so:libalteracl.so:${prefix}/compiler/2024.0/lib/x64/libintelocl.so
prepend-path	CLASSPATH		${prefix}/mpi/2021.11//lib/mpi.jar:${prefix}/cdal/2024.0/lib/onedal.jar
#prepend-path	CLASSPATH		${prefix}/cdal/2024.0/lib/onedal.jar
prepend-path	INTELFPGAOCLSDKROOT	${prefix}/compiler/2024.0/lib/oclfpga
prepend-path	LD_LIBRARY_PATH		${prefix}/tbb/2021.11/env/../lib/intel64/gcc4.8:${prefix}/mpi/2021.11//libfabric/lib:${prefix}/mpi/2021.11//lib/release:${prefix}/mpi/2021.11//lib:${prefix}/mkl/2024.0/lib/intel64:${prefix}/itac/2022.0/slib:${prefix}/ipp/2021.10/lib/intel64:${prefix}/ippcp/2021.9/lib/intel64:${prefix}/ipp/2021.10/lib/intel64:${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp/lib:${prefix}/debugger/2024.0/gdb/intel64/lib:${prefix}/debugger/2024.0/libipt/intel64/lib:${prefix}/debugger/2024.0/dep/lib:${prefix}/cdal/2024.0/lib/intel64:${prefix}/compiler/2024.0/lib:${prefix}/compiler/2024.0/lib/x64:${prefix}/compiler/2024.0/lib/oclfpga/host/linux64/lib:${prefix}/compiler/2024.0/compiler/lib/intel64_lin:${prefix}/ccl/2021.11/lib/cpu_gpu_dpcpp:${prefix}/compiler/2024.0/compiler/lib/intel64_lin:${prefix}/ccl/2021.11/lib/cpu_gpu_dpcpp
#prepend-path	LD_LIBRARY_PATH		${prefix}/tbb/2021.11/env/../lib/intel64/gcc4.8:${prefix}/mkl/2024.0/lib/intel64:${prefix}/itac/2022.0/slib:${prefix}/ipp/2021.10/lib/intel64:${prefix}/ippcp/2021.9/lib/intel64:${prefix}/ipp/2021.10/lib/intel64:${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp/lib:${prefix}/debugger/2024.0/gdb/intel64/lib:${prefix}/debugger/2024.0/libipt/intel64/lib:${prefix}/debugger/2024.0/dep/lib:${prefix}/cdal/2024.0/lib/intel64:${prefix}/compiler/2024.0/lib:${prefix}/compiler/2024.0/lib/x64:${prefix}/compiler/2024.0/lib/oclfpga/host/linux64/lib:${prefix}/compiler/2024.0/compiler/lib/intel64_lin:${prefix}/ccl/2021.11/lib/cpu_gpu_dpcpp:${prefix}/compiler/2024.0/compiler/lib/intel64_lin:${prefix}/ccl/2021.11/lib/cpu_gpu_dpcpp
prepend-path	VT_LIB_DIR		${prefix}/itac/2022.0/lib
prepend-path	VTUNE_PROFILER_DIR	${prefix}/vtune/2024.0
prepend-path	VT_SLIB_DIR		${prefix}/itac/2022.0/slib
prepend-path	MKLROOT			${prefix}/mkl/2024.0
prepend-path	DAL_MINOR_BINARY	1
prepend-path	NLSPATH			${prefix}/mkl/2024.0/lib/intel64/locale/%l_%t/%N:${prefix}/compiler/2024.0/compiler/lib/intel64_lin/locale/%l_%t/%N
prepend-path	PATH			${prefix}/vtune/2024.0/bin64:${prefix}/mpi/2021.11//libfabric/bin:${prefix}/mpi/2021.11//bin:${prefix}/mkl/2024.0/bin/intel64:${prefix}/itac/2022.0/bin:${prefix}/inspector/2024.0/bin64:${prefix}/dpcpp-ct/2024.0/bin:${prefix}/dev-utilities/2024.0/bin:${prefix}/debugger/2024.0/gdb/intel64/bin:${prefix}/compiler/2024.0/lib/oclfpga/bin:${prefix}/compiler/2024.0/bin/intel64:${prefix}/compiler/2024.0/bin:${prefix}/advisor/2024.0/bin64
#prepend-path	PATH			${prefix}/vtune/2024.0/bin64:${prefix}/mkl/2024.0/bin/intel64:${prefix}/itac/2022.0/bin:${prefix}/inspector/2024.0/bin64:${prefix}/dpcpp-ct/2024.0/bin:${prefix}/dev-utilities/2024.0/bin:${prefix}/debugger/2024.0/gdb/intel64/bin:${prefix}/compiler/2024.0/lib/oclfpga/bin:${prefix}/compiler/2024.0/bin/intel64:${prefix}/compiler/2024.0/bin:${prefix}/advisor/2024.0/bin64
prepend-path	INTEL_PYTHONHOME	${prefix}/debugger/2024.0/dep
prepend-path	INTEL_LICENSE_FILE	/opt/intel/licenses:/root/intel/licenses
prepend-path	CPATH			${prefix}/tbb/2021.11/env/../include:${prefix}/mpi/2021.11//include:${prefix}/mkl/2024.0/include:${prefix}/ipp/2021.10/include:${prefix}/ippcp/2021.9/include:${prefix}/ipp/2021.10/include:${prefix}/dpl/2022.3/linux/include:${prefix}/dpcpp-ct/2024.0/include:${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp/include:${prefix}/dev-utilities/2024.0/include:${prefix}/cdal/2024.0/include:${prefix}/compiler/2024.0/lib/oclfpga/include:${prefix}/ccl/2021.11/include/cpu_gpu_dpcpp
#prepend-path	CPATH			${prefix}/tbb/2021.11/env/../include:${prefix}/mkl/2024.0/include:${prefix}/ipp/2021.10/include:${prefix}/ippcp/2021.9/include:${prefix}/ipp/2021.10/include:${prefix}/dpl/2022.3/linux/include:${prefix}/dpcpp-ct/2024.0/include:${prefix}/dnnl/2024.0/cpu_dpcpp_gpu_dpcpp/include:${prefix}/dev-utilities/2024.0/include:${prefix}/cdal/2024.0/include:${prefix}/compiler/2024.0/lib/oclfpga/include:${prefix}/ccl/2021.11/include/cpu_gpu_dpcpp

# Run test

Load environment variables using the module load command

$ module load intel/oneapi2024.0

Test whether the installation was successful

$ icx -v

If the version information is output, the installation is successful.

Intel(R) oneAPI DPC++/C++ Compiler 2024.0.2 (2024.0.2.20231213)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/software/intel/oneapi2024.0/compiler/2024.0/bin/compiler
Configuration file: /opt/software/intel/oneapi2024.0/compiler/2024.0/bin/compiler/../icx.cfg
Found candidate GCC installation: /opt/rh/devtoolset-11/root/usr/lib/gcc/x86_64-redhat-linux/11
Selected GCC installation: /opt/rh/devtoolset-11/root/usr/lib/gcc/x86_64-redhat-linux/11
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64

Continue testing MPI

$ mpirun --version

If the version information is output, then the installation is successful.

Intel(R) MPI Library for Linux* OS, Version 2021.11 Build 20231005 (id: 74c4a23)
Copyright 2003-2023, Intel Corporation.

# icx instructions

Intel® oneAPI DPC++/C++ Compiler (icx) is Intel’s next-gen compiler based on Clang/LLVM technology plus Intel proprietary optimizations and code generation.

Intel®, Intel® C/C++ Compilers Complete Adoption of LLVM

icx is Intel’s next-generation compiler based on Clang/LLVM technology, with Intel’s proprietary optimizations and code generation.

LLVM helped achieve the goal of providing a better C/C++ compiler for Intel architecture. The latest Intel C/C++ compiler uses the LLVM architecture, offering faster compile times, better optimization, enhanced standards support, and support for GPU and FPGA offloading.

# Benefits of adopting LLVM

The LLVM open source project is a collection of modular and reusable compiler and toolchain technologies that supports multiple processor architectures and programming languages. The Clang open source project provides a C/C++ frontend, supporting the latest language standards for the LLVM project. Including Clang, LLVM is maintained by a large and very active development community.

v2-7ac93f64b283ba0b5c5371b7cd524210_1440w-2024-03-09

There are many benefits to using LLVM, the first being faster build times. It is well known that Clang is very fast! When we used the Intel C/C++ Compiler from the Intel oneAPI 2021.3 toolkit, we measured a 14% reduction in build time. In addition to reducing build time, adopting Clang allows us to benefit from the community’s support for the latest C++ language standards and contribute results to give back to the community.

Intel has a long history of contributing to and supporting open-source projects, including ten years of contributions to LLVM. Our proactive collaboration today includes optimization report supplements, expanded floating-point model support, and vector enhancements. Intel directly contributes to the LLVM project and has a staging area (Intel LLVM Technology Project) for SYCL support.

On Intel architecture, the Intel C/C++ compiler is expected to provide higher performance than the base Clang+LLVM compiler. The upcoming Intel C/C++ compilers will be versions (icx) that have adopted the LLVM open-source infrastructure. We will continue our long-term efforts to contribute to the Clang and LLVM projects, including providing optimizations for them. Not all optimization techniques will be accepted upstream, sometimes because they are too new, and sometimes because they are too specific to Intel architecture. This is to be expected and is the same situation as with other compilers that have adopted LLVM.

v2-1a1672571e4a8a60c335e5abe38ee86b_1440w-2024-03-09

Intel C/C++ compilers have consistently provided the best performance. The classic version of the Intel C/C++ compiler achieved an 18% advantage over GCC, while the Intel C/C++ compiler based on LLVM achieved a 41% advantage.

Licensed under CC BY-NC-SA 4.0
本博客已稳定运行
总访客数: Loading
总访问量: Loading
发表了 25 篇文章 · 总计 60.67k

Built with Hugo
Theme Stack designed by Jimmy
基于 v3.27.0 分支版本修改