I'm gathering information about heterogeneous computing. I've come across SYCL and OpenACC. I gather that OpenACC has many pragma directives (similar to OpenMP) to abstract GPU calculations (either OpenCL or CUDA or both??). However, it seems to me that SYCL also tries to abstract GPU portions of the code.
So, are SYCL and OpenACC competing frameworks or can they compliment each other? If they are complimentary, could I use them together?
I'm having trouble understanding the differences between these frameworks and they seem to me as being competitors.