This is not an issue with Codeplay plugins themselves but rather with IntelLLVM installation in oneAPI. However, it is a related issue since IntelLLVM is required for Codeplay plugins.
When using oneAPI 2023.0.0 or 2023.1.0 and initializing the environment with source /opt/intel/oneapi/setvars.sh --include-intel-llvm, the clang and clang++ do not know about the correct include paths for OpenMP:
Other than that, the OpenMP installation is quite functional, and providing the path to headers manually helps:
$ clang++ -fopenmp test.cpp -isystem/opt/intel/oneapi/compiler/latest/linux/compiler/include/ && echo ok
ok
Since it’s not unlikely that people might want to use oneAPI for NVIDIA/AMD together with OpenMP, having a smoother experience (i.e., autodetection of include path for the bundled headers when -fopenmp flag is used) would be nic.
Thanks for the report. This doesn’t look like a specific Nvidia/AMD backend issue with the DPC++ compiler, in particular it’s unclear from the command line arguments what you are trying to compile in relation to this.
Can you give us some background on what you are trying to do, and we can see what is possible?
I notice a mention of openMP in there for example, I’m not sure if you are trying to use that.
Thanks for the report. This doesn’t look like a specific Nvidia/AMD backend issue with the DPC++ compiler, in particular it’s unclear from the command line arguments what you are trying to compile in relation to this.
It is not AMD/NVIDIA specific, it is related to the oneAPI-bundled IntelLLVM compiler.
As far as I can tell, this compiler is the one recommended for use with AMD/NVIDIA plugins, and not really for anything else (for Intel GPUs or for pure CPU code, it makes more sense to use icx/icpx).
So, while the issues is not GPU-related, it is related to the compiler that’s used for it and probably for little else.
But if you think there’s a better place to report the issue (Intel forums?), I can do it there.
Can you give us some background on what you are trying to do, and we can see what is possible?
Build mixed SYCL+OpenMP code for NVIDIA or AMD GPUs.
It is well tested with the custom-built intel/llvm compiler which does not require any special flags (besides -fopenmp).
It also works with oneAPI’s bundled Intel LLVM when one manually provides a path to headers: -isystem/opt/intel/oneapi/compiler/latest/linux/compiler/include.
The problem is, one would expect the compiler to automatically detect the headers bundled with that very same compiler itself.