Following an inquiry on the XSEDE list about the differences between ICC and ICX I was informed that “Parallel Studio Cluster Edition” has become OneAPI, free-to-use.
So I followed up on that and found a CentOS 7 server to do a local install for testing. We currently run icc/ifort 2016 version and it is time for a new set of compilers. Now there is also lots of discussions about LLVM being incorporated into the newer C compilers. Much of that I do not understand. I do know Nvidia's nvcc
compiler is LLVM based so we're covered on our gpu software compilations. So this page is purely for cpu applications and how ICC and ICX compare once we get to testing.
If you want to offload your cpu LLVM compiled application to the gpu you'll need CentOS 8 and commit to OpenMP. More on that on this page Get Started with OpenMP* Offload Feature to GPU for the Intel® oneAPI DPC++/C++ Compiler 2021.1 and Intel® Fortran Compiler (Beta).
This is going to get messy. I installed from OneAPI first the Base Toolkit (provides icx, mkl, mpi), then added the HPC Toolkit (provides icc, ifort) and then added the AI Toolkit (provides pytorch, tensorflow and python3 with optimized libraries).
This install will take you less than an hour. Final result: the whole family of Intel compilers tumbles out. Amazing, what a surprise. (See bottom of page).
Documentation
First prep a test server, it needs some packages that probably are already installed.
yum update yum install -y cmake pkgconfig yum grouplist yum groupinstall "Development Tools" # check these are present which cmake pkg-config make gcc g++ /usr/bin/cmake /usr/bin/pkg-config /usr/bin/make /usr/bin/gcc /usr/bin/g++ # Base Toolkit cd /usr/local/src/tmp wget https://registrationcenter-download.intel.com/akdlm/irc_nas/17431/l_BaseKit_p_2021.1.0.2659_offline.sh # all defaults but location, not enough room in /opt ln -s /usr/local/home/intel /opt/intel chmod u+x *.sh;./l_BaseKit_p_2021.1.0.2659_offline.sh # configure (see link) # HPC Toolkit wget https://registrationcenter-download.intel.com/akdlm/irc_nas/17427/l_HPCKit_p_2021.1.0.2684_offline.sh chmod u+x *.sh;./l_HPCKit_p_2021.1.0.2684_offline.sh source /opt/intel/oneapi/setvars.sh --force # AI Toolkit wget https://registrationcenter-download.intel.com/akdlm/irc_nas/17421/l_AIKit_p_2021.1.0.935_offline.sh chmod u+x *;./l_AIKit_p_2021.1.0.935_offline.sh source /opt/intel/oneapi/setvars.sh --force # environment hmeij@greentail52 ~]$ source /opt/intel/oneapi/setvars.sh :: initializing oneAPI environment ... BASH version = 4.2.46(2)-release :: dnnl -- latest :: tensorflow -- latest :: debugger -- latest :: dpcpp-ct -- latest :: iLiT -- latest :: itac -- latest :: ippcp -- latest :: clck -- latest :: dal -- latest :: mkl -- latest :: vpl -- latest :: vtune -- latest :: modelzoo -- latest :: dpl -- latest :: intelpython -- latest :: ccl -- latest :: tbb -- latest :: pytorch -- latest :: compiler -- latest :: advisor -- latest :: mpi -- latest :: dev-utilities -- latest :: ipp -- latest :: inspector -- latest :: oneAPI environment initialized :: # the whole family # icc, icx are C compilers (mostly, icx seems to do c++ too) # icpc, icpx are C++ compilers (mostly, icpx invokes icx) # ifort, ifx are Fortran compilers (both beta) which icc icx icpc icpx dpcpp ifort ifx mpirun mpicc python clang clang++ /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/intel64/icc /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/icx /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/intel64/icpc /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/icpx /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/dpcpp /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/intel64/ifort /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/ifx /usr/local/home/intel/oneapi/mpi/2021.1.1/bin/mpirun /usr/local/home/intel/oneapi/mpi/2021.1.1/bin/mpicc /opt/intel/oneapi/intelpython/latest/bin/python /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/clang /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/clang++ # in addition these were installed /usr/local/home/intel/oneapi/mkl/2021.1.1 /usr/local/home/intel/oneapi/pytorch/1.5.0 /usr/local/home/intel/oneapi/tensorflow/2.2.0 # here is the output of ''compiler --version'' # (ICC) C compiler 2021.1 Beta /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/intel64/icc # DPC++ Compiler 2021.1 /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/icx # (ICC) 2021.1 Beta1, parallel c /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/intel64/icpc # DPC++ Compiler 2021.1, invokes icx /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/icpx # DPC++ Compiler 2021.1 /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/dpcpp # (IFORT) 2021.1 Beta /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/intel64/ifort # (IFORT) 2021.1 Beta /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/ifx # Intel(R) MPI Library for Linux* OS, Version 2021.1 /usr/local/home/intel/oneapi/mpi/2021.1.1/bin/mpirun # gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) /usr/local/home/intel/oneapi/mpi/2021.1.1/bin/mpicc # Python 3.7.9 :: Intel Corporation /opt/intel/oneapi/intelpython/latest/bin/python # DPC++ Compiler 2021.1 /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/clang # DPC++ Compiler 2021.1 /usr/local/home/intel/oneapi/compiler/2021.1.1/linux/bin/clang++
# FROM PORTING GUIDE
“ICX and ICC Classic use different compiler drivers. The ICC Classic drivers are icc, icpc, and icl. The ICX driver is icx, which does C and C++. You also have a driver icpx for symmetry with the icpc driver but it simply invokes ICX.
In addition to providing a core C++ Compiler, ICX is the base compiler for the Intel® oneAPI Data Parallel C++ Compiler and its new driver, dpcpp. ”