OpenCL中GPU之间的数据传输

时间:2013-04-08 01:05:29

标签: opencl gpu

在不同的GPU设备之间传输数据非常耗时,因为这个过程很可能是这样的:GPU1-> CPU-> GPU2.So有没有更好的方法在GPU之间传输数据?另外,假设有N个线程,每个线程必须从全局内存中读取M个元素,如果我想执行合并访问,应该满足哪些条件?

3 个答案:

答案 0 :(得分:4)

clEnqueueMigrateMemObjects函数,从OpenCL 1.2开始是新的。

此函数可用于在同一上下文中的设备之间传输内存缓冲区。

我自己从未尝试过这样做,所以我不知道它实际上是否真的比做一个设备 - > host->设备副本便宜(很可能很多实现都会这样做)。

答案 1 :(得分:2)

使用固定缓冲区的概念为CPU中的日期创建缓冲区,然后访问您想要使用的GPU数量...

答案 2 :(得分:0)

关于执行合并内存访问的要求,如果没有看到您的代码,很难回答您。

但是这个想法是,如果线程正在加载内存中连续的数据,那么你将获得性能。执行它的一个通用想法是使用数组而不是结构。