Here is my objective: I want to code a ray tracing engine in C++ that can be run on any GPU. That means that it should work on NVIDIA GPUs, AMDs, or even Intel Graphics chipsets. The choice of C++ was made because the final program will be used by a third party user who will not be able to install anything on his machine, but only run my executable.
At this point in my research, it appeared to me that the best solution was to use SYCL. Theoretically, SYCL is supposed to work on any OpenCL device. In practice, from what I have experienced so far, it is a horror to run and compile.
All of them promise great compatibility with manufacturers, but from what I could try Intel only compiles for Intel chipsets, ComputeCpp only works with some AMD and Intel GPUs, and hipSYCL is only usable with some AMD GPUs. This information should be taken with a pinch of salt, but that's what it seemed to me during my tests.
I would be interested in an alternative solution that can run a single code on any GPU, or a method that explains how to cleanly compile a SYCL code to run it on any hardware. Unfortunately, I don't know if this is possible.