鉴于OpenCL旨在成为异构编程的API,几乎定义它具有与其相关的巨大延迟惩罚。因此必须有一个异步API。异步API
但是我发现很难在OpenCL.net中找到异步API。我找到了OpenCl.Net.Event
结构,在大多数API调用中这似乎是一个out
参数。不过,我无法找到关联该事件的回调,因为opencl.net
似乎缺少clSetEventCallback
。
有没有人知道如何在opencl.net
的await
异步操作?
编辑:我讨厌人们downvote没有至少发表评论。对于这个记录,我已经围绕这个主题搜索了很多内容,目前我正在读一本关于OpenCL的书,甚至将源代码下载到OpenCL.net项目中也无济于事。 OpenCL.net上有很少的文档。
你是什么意思等待时间?是否在等待结果时函数调用阻塞的时间? – Eric 2014-11-04 07:19:40
例如在OpenCL中,您需要将数据加载到目标'设备'的内存中。这是通过排队加载内存操作完成的。示例代码展示了如何同步执行此操作(通过设置async false并忽略out事件对象)。从实现的角度来看,将数据加载到GPU上的速度“很慢”,因为延迟很高(即使我们只考虑了GDDR5延迟)。当我们通过PCI-E总线进行数百次往返GPU时,我们失去了所有的性能提升。因此,我希望能够排队操作并通知完成。 – Aron 2014-11-04 07:26:11
我对openCl不是很熟悉,但不是我们正在谈论的openCl的批处理?你想要的是花尽可能多的时间排队数据,尽可能少的时间等待结果(或其他)是正确的? – Eric 2014-11-04 07:50:09