2

I am a student. My question may be very silly but I want to clear it. I have a device with Vivante GPU with openCL 1.1 version. I want to run tensorflow sample code with SYCL support on GPU. But before trying Tensorflow sample code, I want to try SYCL sample code with openCL 1.1 on GPU.

I have seen several SYCL implementations, like computeCPP, triSYCL, sycl-gtx. All the implementations support openCL 1.2 or above.

Does anyone know the reason why SYCL doesn't support openCL 1.1?

And how feasible will it be the attempt to modify the SYCL open-source code to support openCL 1.1?

Akhilesh
  • 1,024
  • 1
  • 9
  • 26

1 Answers1

2

The main reason for SYCL 1.2 to require OpenCL 1.2 is because the Khronos intermediate representation SPIR 1.2 requires it. Without SPIR, or any other intermediate representation, a SYCL implementation cannot compile C++ code into device binaries, and would need to convert C++ to OpenCL C, which is quite problematic.

Ruyk
  • 775
  • 5
  • 11
  • 1
    thank you so much for yours response. I seen a image here http://techenablement.com/wp-content/uploads/2014/08/WideningOpenCLEcoSystem.png which depicts the possibility of no intermediate representation like SPIR between opencl and SYCL. – Akhilesh May 22 '18 at 14:43
  • And what is major difference that makes openCL 1.1 to be not supported by the SPIR representation? – Akhilesh May 22 '18 at 14:45
  • Since I want to run tensorflow code on GPU with openCL 1.1, how should I start against the problems? What should I try to code to get success in this? – Akhilesh May 22 '18 at 14:50
  • You can use the interop mode of SYCL to dispatch OpenCL C kernels instead of C++ kernels, but that will reduce what you can do with SYCL. In particular, you cannot use the TensorFlow approach. – Ruyk May 23 '18 at 15:38