两个GPU卡,一个Endabled显示器,一个禁用显示器:如何判断运行OpenGL的GPU卡是什么?

时间:2013-05-31 07:58:18

标签: opengl nvidia multi-gpu

所以我有两张NVidia GPU卡

卡A:GeForce GTX 560 Ti - 有线监听A(戴尔P2210)

B卡:GeForce 9800 GTX + - 有线监视器B(ViewSonic VP20)

设置:采用支持SLI的Intel Core i7的华硕主板

在NVidia控制面板中,我禁用了监视器A,因此我只有监视器B用于所有显示目的。

enter image description here

我运行了我的程序,

  • 在OpenGL中模拟10000个粒子并渲染它们(在监视器B中正确显示)

  • 使用cudaSetDevice()在Card A'目标'运行计算密集型CUDA内核。

这个想法很简单 - 使用Card B进行所有OpenGL渲染工作,并使用Card A进行所有CUDA内核计算工作。

我的问题是:

使用GPU-Z监控两张卡后,我可以看到:

  • 卡A的GPU负载立即增加到预期的60%以上。

  • 但是,Card B的GPU负载仅增加到2%。对于在opengl中以3D渲染的10000个粒子,我不确定这是否是我应该预期的。

那么如何判断OpenGL渲染是否确实使用了Card B(其连接的Monitor B是唯一启用的),并且与Card A无关?

并且问题的扩展是:

  • 有没有办法'强制'OpenGL渲染逻辑使用特定的GPU卡?

1 个答案:

答案 0 :(得分:2)

您可以通过glGetString(GL_RENDERER);

判断OpenGL上下文正在使用哪个GPU
  
      
  • 有没有办法'强制'OpenGL渲染逻辑使用特定的GPU卡?
  •   

鉴于目前可用的上下文创建API的功能:否。