将OpenCL用于多个设备(多个GPU)
各位用户好 我有一个问题:我有一个非常大的形象,我想工作。我的第一个想法是将大图像分成两个子图像,然后将这些子图像发送到不同的GPU。我不使用图像对象,因为我不使用RGB值,但我只使用亮度值来操纵图像 我的问题是:将OpenCL用于多个设备(多个GPU),opencl,jocl,multiple-gpu,Opencl,Jocl,Multiple Gpu,各位用户好 我有一个问题:我有一个非常大的形象,我想工作。我的第一个想法是将大图像分成两个子图像,然后将这些子图像发送到不同的GPU。我不使用图像对象,因为我不使用RGB值,但我只使用亮度值来操纵图像 我的问题是: 我可以为每个设备使用一个上下文和多个命令队列吗?或者我应该为每个设备使用一个context和一个commandqueue 有人能给我举个例子或想法吗?我如何动态更改inputMem数据(子映像数据),以设置要发送到每个设备的内核参数?(我只知道如何发送相同的输入数据) 例如,如果子映
上下文
和多个命令队列
吗?或者我应该为每个设备使用一个context
和一个commandqueue
我可以提供更详细的代码示例,但作为一般草图,这应该是接下来的方法。AMD APP SDK在多gpu处理方面的示例很少。你应该看看这两个样品
谢谢你,我一定会调查的。哈罗,黑零。谢谢你的帮助,我会马上测试。嗨@DarkZeros,3号。事件系统是什么样子的?我应该把检查我的图像是否已经在进行的事件放在哪里?我无法将事件放在enqueueNDRangeKernel上,因为我已经在那里设置了用于组合结果的事件(使用clWaitForEvent函数)。你能给我举个例子吗?也许我误解了你的观点。谢谢你迟来的答复。您可以在每次将内核排队到设备时设置一个事件。然后,下次您必须对另一个内核排队时,只需检查事件状态(搜索已完成的事件)。这将给你一个已经没有工作的设备,并将内核排队到该设备。我忘了说,你可能有很多事件。您不必只有1个。我通常会为我打的每个电话安排一个活动,然后我只使用我真正需要的金额。(当然,我使用C++包装,否则,将是一个地狱,照顾他们)