假设我有一组要异步运行的内核,并且它们之间有一些依赖关系。
一个同步选项是clEnqueueMarkerWithWaitList。 规范指出,此
排队一个标记命令,该命令等待事件列表 complete [...]此命令返回一个可以等待的事件,即可以等待此事件以确保event_wait_list或所有先前排队的命令中的所有事件在此命令到达command_queue之前已排队。
另一方面,我也可以直接使用clEnqueueNDRangeKernel将内核加入队列。 它具有以下参数:
event_wait_list和num_events_in_wait_list
指定在执行此特定命令之前需要完成的事件。 [...] event_wait_list中指定的事件充当 同步点。
据我所知,所有cl函数都具有这些参数。
那么clEnqueueMarkerWithWaitList
首先是什么呢?
根据网站上的描述,我唯一能想到的是,我可以等待marker命令的结果事件,而不是列表中的所有事件,但这似乎仅在编程过程中提供了一些小便利(即使),没有任何真正的区别。
我所缺少的两者之间是否存在细微差别?
请注意,this question仅与clWaitForEvents
比较。