[SYCL] Add a CUDA compatibilty mode
This patch enables CUDA mode at the same time as the SYCL mode. This allows the compiler to define CUDA macros and add implicit defines.
To enable the mode the user adds -fsycl-cuda-compat to the command line. By default this mode is set to off. The flag is only used for the NVPTX backend.
The intent is to help to transition from CUDA to SYCL. Using this mode enable a SYCL application to reuse CUDA functionnalities, especially fast paths that are guarded by CUDA_ARCH.
Users may call CUDA kernels in a SYCL program. Is that right ? Thanks
Part of the idea is to allow user to call CUDA device functions from a SYCL kernel. The underlying motivation is actually to have a mode that would support the definition of __CUDA_ARCH__.
Okay. Would the compiler allow a SYCL program to mix CUDA and SYCL APIs ? Some CUDA APIs have no SYCL equivalents.