2015-05-08 75 views
1

我已经实现了一个应用程序,我使用OpenCL内核在两个不同的GPU上生成两个几何图形。我想在两个不同的GPU上同时渲染这些几何图形,然后合并最终的图像。我如何确定我想要使用OpenGL API在第一个GPU上渲染第一个几何图形并在第二个GPU上渲染第二个几何图形?使用两个GPU同时绘制OPENGL

回答

1

那么,由于用于创建OpenGL上下文的系统级API缺少设备枚举和选择,唯一或多或少可靠的方法是在连接到所需GPU的屏幕边界内创建一个窗口,并使用OpenGL上下文创建该窗口的HDC(尽管它在可见的屏幕的边界内,以便真正强制驱动程序); 1×1无边界窗口就足够了。

如果您的显示器仅连接到一个GPU,那么您运气不好。抱歉。

+0

但是,这对我来说似乎很愚蠢,以至于不可能同时使用两种不同的设备,因为我们可以很容易地使用opencl/cuda内核来做到这一点,但这只是太多工作,而且我希望找到更快,更简单办法。 – mmostajab

+1

@mmostajab:是的,这完全是愚蠢的,但不是OpenGL的错。这是设计系统图形API(WGL,GLX等)的操作系统开发人员的错。至少在使用开源驱动程序的Linux中,可以绕过这一点,但这需要很多工作,而且难以正确工作并且工作可靠。 – datenwolf

+0

因此,如果我有两个显示器并将它们连接到每个GPU,则我在Display 0中的窗口中渲染的东西将在GPU 0上渲染,并且显示器1中显示的窗口将渲染到GPU 1上? 如果我们将一个窗口从Display 0移动到Display 1,我们将计算从GPU 0移动到GPU 1? – mmostajab