默认情况下,如何设置应用程序在高性能GPU上运行?


12

如今,许多笔记本电脑都配备2个GPU-高性能的GPU和省电的GPU(功能不那么强大)。我在笔记本电脑上使用的大多数应用程序都与集成的(省电)GPU一起运行,但其中一些应用程序仍将通过高性能卡打开。我试图将要构建的应用程序默认配置为在高性能GPU上运行,但是我在任何地方都找不到有关该主题的任何信息。我希望有人能对此有所启发。我将使用NSIS安装程序分发应用程序,我想我必须将应用程序的路径添加到NVidia / ATI卡的应用程序列表中。该应用程序使用C#编程。另外,有人知道台式机的状况如何吗?如果一台PC有2个GPU,而我必须选择功能更强大的GPU,会发生什么?

米尔乔

Answers:


7

NVIDIA在这里有一份文件,概述了一些可能对您有用的策略:http : //developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf-不幸的是,我否则建议使用-NvOptimusEnablement导出-仅针对C ++进行记录;也许也可以使用C#来做到这一点,但实际上知道的人将不得不了解这些信息。

我不知道与AMD类似的东西。

因此,不幸的是,似乎没有与供应商无关的方法(即使枚举显示设备也会让用户摆布,他们不得不通过其驱动程序控制面板来进行设置,而用户倾向于这样做是为了最大程度地发挥作用。没有完全可配置的图形设置的游戏)。在这种情况下,您可能不得不依靠自述文件,并希望人们真正阅读它!


+1:我不知道这个擎天柱的NvOptimusEnablement把戏,但我应该知道。听起来好像是最近的事情(驱动程序302.x +)谢谢。
肖恩·米德迪奇

1
stackoverflow.com/questions/17458803/… 对于其他对AMD等效产品感到好奇的人,我问了这个(因为不是特定于游戏的,所以在SO上)。
肖恩·米德迪奇

1
不得已,您可以使用p / invoke从C#调用C ++函数。
BlueRaja-Danny Pflughoeft13年

@ BlueRaja-DannyPflughoeft-它不是C ++函数;这是一个导出的全局变量。
Maximus Minimus

5

一般来说,您不能。

双GPU驱动程序将两个GPU隐藏在单个接口后面,因此像Nathan Reed这样的解决方案通常不适用于大多数常见的高速/低功耗双GPU设置。

GPU选择必须由驱动程序以某种方式处理。使用NVIDIA Optimus,通常可以通过右键单击EXE并单击“属性”来更新Optimus配置文件,以将应用程序添加到使用独立GPU的应用程序列表中。您还可以使用一些特定于Optimus的调用。按照MH01的答案。使用AMD设置,这是完全不同的。

在其他系统上,有硬件开关或OS标志来确定哪个GPU处于活动状态。同样,该应用程序无法控制使用哪个GPU。

这是我真正希望在以后的DirectX更新中“修复”的东西。理想情况下,将像Nathan所建议的那样对两个GPU进行枚举,然后会有提示来指示它们是用于高速还是低功耗的,因此应用程序可以根据任何情况智能地选择正确的一个,甚至切换使用的设备因素(例如,让Web浏览器根据WebGL负载进行选择)。


啊,有趣。我没有使用过这些双GPU系统之一,所以我不知道驱动程序假装它们是相同的。您可能会认为驱动程序可以监视给定应用程序的GPU使用水平,并在必要时将其切换为高性能应用程序。
内森·里德

1
不可以 硬件具有不同的功能。想象一下,如果您从最大纹理大小为2048的GPU切换为最大纹理大小为1024或其他特性的GPU,则整个应用程序将崩溃。如果要始终使用性能更高的GPU,则缓冲区将需要迁移(这会花费时间并导致不必要的帧故障),并且着色器将需要重新编译。该应用需要负责此过程,并选择加入或退出任何开关。不幸的是,它的API尚未真正充实。
肖恩·米德迪奇

1
用户经常想覆盖笔记本电脑上的GPU切换,也许是为了节省电池,这使情况变得复杂。这是我更愿意将GPU切换委托给OS的原因之一,因为它也知道笔记本电脑的电源状态。
假名称

4

您应该能够枚举系统上的GPU,并选择在应用程序启动时要使用的GPU。您没有提到要使用哪个API,但是例如在D3D11中,您将使用IDXGIFactory :: EnumAdapters来获取GPU列表,并将您想要的一个GPU传递给D3D11CreateDevice

DXGI可以为您提供有关GPU的一些有限信息,例如描述字符串,供应商ID和设备ID。我想您可以使用此信息来判断哪个GPU是高性能的,但是您必须构建某种类型的GPU数据库,或者尝试使用一些启发式方法进行猜测。或者,您可以让用户选择在启动时使用哪个GPU。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.