我有数千个SYCL内核要执行。这些内核中的每一个完成后,我需要在由所述内核写入的cl::sycl::buffer
上执行一个函数。
我知道实现此目的的方法是:
cl::sycl::buffer
cl::sycl::accessor
(使用cl::sycl::access::target::host_buffer
)这两种方法都是同步的和阻塞的。将内核提交到cl::sycl::queue
并在内核完成后立即执行时,是否可以附加异步回调/继续?甚至更好的是,可以用C ++ 2a协程实现相同的功能吗?如果不是,那么SYCL是否计划使用此功能?
答案 0 :(得分:2)
从SYCL队列附加回调或在主机上执行的功能未使SYCL 1.2.1切入。
目前正在讨论一些建议,以将该功能引入标准的下一版本,但是一切仍在SYCL小组内部。
同时,如果您使用ComputeCpp,则可以使用host_handler扩展名,该扩展名允许您根据设备上的依赖关系在主机上执行lambda。 开源编译器还没有我所见过的功能。