是否可以将异步 callback/continuation 附加到 SYCL 内核?

Is it possible to attach an asynchronous callback/continuation to a SYCL kernel?

我收集了数千个要执行的 SYCL 内核。一旦这些内核中的每一个都完成,我需要在由所述内核写入的 cl::sycl::buffer 上执行一个函数。

我知道的实现此目的的方法是:

这两种方法都是同步和阻塞的。是否可以在将内核提交到内核完成后立即执行的 cl::sycl::queue 时附加异步 callback/continuation?或者更好的是,是否可以使用 C++2a 协程实现相同的功能?如果没有,是否为 SYCL 计划了这样的功能?

附加回调或从 SYCL 队列在主机上执行的功能并未在 SYCL 1.2.1 中实现。

目前正在讨论将该功能纳入下一版本标准的一些提议,但一切仍属于 SYCL 小组内部。

同时,如果您使用 ComputeCpp,则可以使用 host_handler 扩展,它允许您根据设备的依赖项在主机上执行 lambda。 开源编译器还没有我见过的那个功能。