I have a question in which cases I should use oneAPI vs. C++ 2010 compiler. I understand that the classical Intel C++ 2021 compiler does not support GPU/FPCA targets, but is it save to say that I oneAPI DPC++ compiler offers everything that the classical C++ 2021 offers and more? So it is save always to use the oneAPI DPC compiler? Or are there any other points to consider which compiler to choose?
Intel C++ compilers:
ICC (Linux), ICL (Windows) are classic Intel C/C++ Compilers. Whereas, ICX is an Intel nextgen compiler based on Clang /LLVM technology along with Intel proprietary optimizations and code generation.
Intel DPC++ compiler:
DPC++ compiler driver supports single-source cross-architecture compilation that can target CPUs, GPUs, FPGAs, and other accelerators. It is based on Clang/LLVM technology.
In short, if you are looking for performance on CPU targets, ICC/ICPC compiler would be an ideal choice. For OpenMP GPU offload support, you may rely on ICX/ICPX compiler. For single-source heterogenous cross-compilation (that can target CPUs, GPUs, FPGAs, etc), DPC++ is the best choice.
sorry for my late reply,
this is what I want to get. I develop an application that uses a nVidia GPU for the 'heavy' work. My plan is now to use the GPU that is build into some of the Intel CPUs for some lighter calculation that cannot put onto the CUDA device.
I use VS2019 on Windows 10 as my IDE and see these compiler from Intel:
Intel C++ 19.1
Intel C++ 19.2
Intel C++ 2021
Intel oneAPI DPC++
So I understand that the 19.x compilers are the old ICC/ICL, the 2021 is the ICX that supports Intel GPU (what I want) and DPC++ for 'heavy' GPU, FPGA etc.
Is that correct - I go with Intel 2021 to get the work done either with the Intel CPU or the GPU build into the Intel CPU? Would that fallback to CPU code if my application runs on a AMD?
>>So I understand that the 19.x compilers are the old ICC/ICL, the 2021 is the ICX that supports Intel GPU (what I want) and DPC++ for 'heavy' GPU, FPGA etc.
That's right, 19.x version compilers are the Intel classic compilers (icc/icl). ICX compiler versions begin with 2021.x.
ICX and ICC Classic use different compiler drivers. The ICC Classic drivers are icc (C compiler), icpc (C++ compiler), and icl(Windows). The ICX drivers are icx (C compiler) and icpx (C++ compiler).
ICX is the base compiler for the Intel oneAPI Data-Parallel C++ Compiler and its new driver, dpcpp.
>>Is that correct - I go with Intel 2021 to get the work done either with the Intel CPU or the GPU build into the Intel CPU?
For this case, you may either use the ICX compiler (with additional flags) or the DPC++ compiler driver because the underlying compiler for DPC++ is essentially ICX. DPC++ compiler driver doesn't require any additional compilation flags for Data-parallel C++ applications.
>>My plan is now to use the GPU that is build into some of the Intel CPUs for some lighter calculation that cannot put onto the CUDA device.
Please note that oneAPI toolkits do not support Nvidia devices. However, the GitHub version does.
DPC++ hardware requirements: