New Intel GPUs (and to some extent GPUs from other vendors) can be utilised by oneAPI software. Two branches can be taken to offload computation from standard C/C++ and Fortran applications.
The first choice for C++ applications is DPC++ , Intel’s implementation of SYCL. GPU code is also C++(with certain limitations) and will be identified by the new LLVM Clang compiler. OpenMP offloading is an alternative that can also be applied to C and Fortran codes. By use of the target directive, OpenMP codes can be transformed into GPU offloading codes. Existing OpenACC codes may be also ported to the more commonly supported OpenMP standard.
A short overview of the Intel oneAPI Toolkits will be given. Compiler options are crucial for optimal performance and thus a short introduction to optimisation flags will be provided. As coding errors can be hard to find, a correctness checking tool that finds real and potential threading and offloading errors will be introduced. Finally, performance bottlenecks will be discussed and methods to detect them will be introduced.