首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步数据处理

异步数据处理
EN

Stack Overflow用户
提问于 2016-02-25 03:48:09
回答 1查看 428关注 0票数 0

我是OpenCl的新手。我想知道你是否能回答我下面的问题。

我有一个数据分组队列,它的作用类似于路由器队列。数据包到达,存储在队列中,然后由路由器处理。最后,它们被插入到外出队列中。我正在尝试使用OpenCl并发处理数据包。我知道我们可以使用缓冲区,例如,在主机和OpenCl设备之间传输数据。我们用输入/输出数据加载缓冲区。然后,我们使用这些输入/输出缓冲区设置内核参数。当内核运行完成后,我们从OpenCl设备读取数据。

我的问题是,如何独立于其他数据包为每个单独的数据包写入/读取缓冲区?换句话说,假设一个数据包到达,路由器需要在计算设备上处理它(例如,GPU上的核心#1 )。然后另一个数据包到达。路由器需要在不同的计算设备(例如,GPU上的核心#2 )上处理第二个分组。这两个数据包的处理实际上是并发但异步进行的。如何在OpenCl中实现这一点?

感谢您的提前回复。你好,阿里雷扎。

EN

回答 1

Stack Overflow用户

发布于 2016-02-25 04:44:07

我建议使用OpenCL缓冲区的环形缓冲区来保存传入的数据,并在填充它们时将内核排入队列以处理它们。只有当内核有并行数据可处理时,你才能获得良好的性能。即使是可以同时在多个内核上工作的GPU,这个数字也很小(比如可能2个)。真正强大的是内核中的并行计算,否则你的硬件将会闲置。

要让内核并行运行,您需要使用单独的命令队列,因为使用单个命令队列意味着串行执行(除非它是一个无序的命令队列,但这些命令队列没有得到广泛的支持)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35611638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档