DPC++ compilation can be performed in two ways:
- JIT (Just in Time) compilation (Online compilation)
- AOT (Ahead of Time) compilation (Offline compilation)
JIT compilation loads a generic SPIRV image into the executable. The machine code will be generated "on the fly" for the device that is being targeted.
AOT compilation loads a device-specific image into the executable. The machine code will be generated during the compilation phase ("Ahead of time") for the target device.
In short, the JIT-compiled executables should be portable (provided you have installed the same oneAPI version across both machines).
More information here:
Currently, oneAPI doesn't support non-Intel accelerators. You can check the hardware requirements here:
However, the open Github release of DPC++ has limited support for non-Intel accelerators. https://github.com/intel/llvm/blob/sycl/sycl/doc/GetStartedGuide.md