SYCL 2020 Provisional Specification released - Feedback thread

The Khronos® Group announces the ratification and public release of the SYCL™ 2020 Provisional Specification. SYCL is a standard C++ based heterogeneous parallel programming framework for accelerating High Performance Computing (HPC), machine learning, embedded computing, and compute-intensive desktop applications on a wide range of processor architectures, including CPUs, GPUs, FPGAs, and AI processors.The SYCL 2020 Provisional Specification is publicly available today to enable feedback from developers and implementers before the eventual specification finalization and release of the SYCL 2020 Adopters Program, which will enable implementers to be officially conformant—tentatively expected by the end of the year.

Khronos invites you to give feedback on this thread.


A small thing I just noticed; in section 4.14.4 “Rules for parameter passing to kernels” it says that

It is illegal to pass a pointer or reference argument to a kernel.

…which I’m pretty sure is at odds with USM.

Thank you. I have opened an internal issue in our gitlab issue 436 for this.


Table 4.31 gives constructors for a buffer object.

With c++17 there is proper support std::shared_ptr<T[]>. It looks like that cl::sycl::buffer could use new constructors with type buffer(const std::shared_ptr<T[]>& hostData, […]). It could probably even replace the ones with a std::shared_ptr<T> parameter but this would be backward incompatible.

What do you think?

In section, the code samples are as follows:

buffer<int, 1> b { ptr, range<2>{10, 10} };

It should be buffer<int, 2> or range<1>

Hi Isix, thank you. I have opened internal issue 445 for this.