在不同的GPU设备之间传输数据很耗时,因为这个过程很可能是这样的:GPU1->CPU->GPU2。那么有没有更好的方法在GPU之间传输数据?另外,假设有N个线程,每个线程都要从全局内存中读取M个元素,如果要进行合并访问需要满足什么条件?
问问题
1372 次
3 回答
4
clEnqueueMigrateMemObjects函数是 OpenCL 1.2 的新功能。
此函数可用于在同一上下文中的设备之间传输内存缓冲区。
我自己从未尝试过使用它,所以我不知道它是否真的比进行设备->主机->设备复制更便宜(很可能很多实现都会这样做)。
于 2013-04-08T03:58:23.877 回答
2
使用固定缓冲区的概念为 CPU 中的日期创建缓冲区,然后访问您想要使用的 GPU 数量...
于 2013-04-08T13:27:37.610 回答
0
关于执行合并内存访问的要求,如果没有看到您的代码,很难回答您。
但是这个想法是,如果线程正在加载内存中连续的数据,您将获得性能。执行它的一个通用想法是使用数组而不是结构。
于 2013-04-09T14:51:00.720 回答