首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法在多GPU环境中以编程方式选择渲染GPU?(Windows)

有没有办法在多GPU环境中以编程方式选择渲染GPU?(Windows)
EN

Stack Overflow用户
提问于 2011-06-10 20:13:21
回答 1查看 4.9K关注 0票数 19

问题

我有一个OpenGL应用程序,可以在不同的多图形处理器配置的机器上运行(可能还有不同的Windows版本,从XP到7)。是否有一个通用的方法来选择特定的图形处理器,将作为OpenGL渲染器独立于图形处理器组合(例如,NVIDIA + NVIDIA,NVIDIA + AMD,NVIDIA +英特尔等)?它必须是一种可以从应用程序代码中应用的解决方案,即直接在C++中或从应用程序中调用的脚本中应用,而无需最终用户干预。

下面是我为寻找解决方案所做的几个测试的详细信息,从非常具体的情况开始,但也许有一种解决方案可以在所有或大多数情况下工作。

有没有什么可靠的方法来强制哪一个图形处理器做OpenGL渲染?

任何提示都将不胜感激。提前感谢!

尝试了可能的解决方案

Windows XP 64,带两个NVIDIA Quadro

使用两个Quadro卡的组合进行测试

  • Quadro FX 1700 + Quadro FX 570
  • Quadro FX 1700 + Quadro FX 540
  • Quadro FX 1700 +四核NVS 285

在64位Windows XP下使用相同的驱动程序(275.36版),我在各种方法上都取得了相当的成功,例如:

  • 让司机自己决定。

只有当两个卡使用相同的驱动程序并且决定使用所需的卡时,此解决方案才是好的。所以它太具体了,在让驱动程序决定之前,可能会在NVAPI代码中使用unpredictable.

  • Changing驱动程序设置。

有了这个解决方案,它在理论上可以让驱动程序如我所愿地决定,但这是困难的,需要两个卡使用相同的驱动程序,并不总是工作(与FX1700+NVS285它不work).

  • Changing主屏幕。

这样做的效果是默认情况下应用程序在选定的主屏幕中打开。此解决方案仅适用于FX 1700 + FX 570组合。对于FX 1700 + FX 540,渲染器依赖于驱动程序设置,独立于主屏幕,并且对于FX 1700 + NVS 285,当窗口在特定屏幕中时,渲染器始终是FX 1700.

  • Creating OpenGL上下文。

可以在独立于主屏幕的所需屏幕中创建窗口,但是其具有与上面的OpenGL上下文相同的问题,所述屏幕仅启用所需图形卡中的屏幕,然后启用其它屏幕。

这是我发现的使用NVS285作为渲染器的唯一方法,但它很丑陋,我不知道它是否可以自动化,或者它是否可以在所有cases.

与FX1700和FX570的组合,扩展报告为兼容的两个GPU,我可以限制渲染只对其中之一。对于FX1700+FX540对,扩展只报告一个兼容的图形处理器,这是驱动程序决定用于OpenGL渲染的图形处理器。对于FX 1700 + NVS 285组合,始终只报告FX 1700 (我认为NVS 285不支持此扩展,因为如果它是唯一使用的卡,扩展仍不会报告它)。

采用英特尔和AMD的Windows 7 64

该系统在64位Windows 7上运行,显卡是一块Intel HD graphics 2000 (集成在CPU (Sandy Bridge)中)和一块AMD Radeon HD 6450。在所有情况下,渲染都可以在两个屏幕上运行,但渲染GPU会因某些变量而有所不同:

  • 如果主屏幕连接到AMD并且窗口在此屏幕中打开,则AMD是渲染器。
  • 如果主屏幕连接到AMD并且窗口在另一个屏幕中打开,则渲染器是"GDI Generic",速度非常慢。
  • 如果主屏幕连接到英特尔,则无论窗口在何处打开,英特尔都是渲染器。

在这个系统上,我也尝试过a solution proposed in the OpenGL forums。选择OpenGL使用的驱动程序是一种老生常谈的方法,因此它可以在使用不同驱动程序的GPU之间进行选择,但不能在使用相同驱动程序的显卡之间进行选择。我得到了以下结果:

  • 如果主屏幕连接到AMD,我可以选择任何图形处理器作为渲染器。
  • 如果主屏幕连接到英特尔,我可以选择英特尔作为渲染器(无用,因为这是自动的),但如果我尝试选择AMD,则会出现错误;我认为这可能是驱动程序中的错误。
EN

回答 1

Stack Overflow用户

发布于 2011-06-10 21:38:50

由于您使用的是nvidia Quadro卡,因此可以使用WGL_NV_gpu_affinity扩展来选择图形处理器。

我不太确定ATI芯片,但我认为它是AMD_gpu_association

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6306190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档