OpenCL子缓冲区,为什么重要?

时间:2012-03-26 02:34:13

标签: communication opencl multi-gpu

我尝试实现multi-gpu OpenCL代码。在我的模型中,GPU必须进行通信 交换数据。

我发现(我不记得在哪里,已经有一段时间了)一个解决方案就是要处理 子缓冲器。任何人都可以尽可能简单地解释为什么子缓冲区很重要 在OpenCL?据我所知,只使用缓冲区就可以完全相同。

非常感谢, Giorgos

补充问题:  在GPU之间交换数据的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我不确定(或者我不知道)在处理多个GPU时,子缓冲区如何为您的问题提供解决方案。 AFAIK子缓冲区提供缓冲区视图,即单个缓冲区可以划分为较小缓冲区(子缓冲区)的块,提供一层软件抽象,子缓冲区在相同的情况下是有利的,在这种情况下,您需要保留第一个元素的偏移量为零。

要解决multiGPU或MultiDevice问题,OpenCL 1.2提供了API,您可以使用clEnqueueMigrateMemObjects OpenCL API调用http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueMigrateMemObjects.html

从中将内存对象直接从一个GPU复制到另一个GPU