2014-01-28 74 views
0

我需要检测GPU(视频卡)并设置适合GPU性能的应用程序设置。 我可以为每个GPU模型设置一个列表,但我不明白如何轻松检测在PC中安装的GPU模型。自动检测GPU

解决此任务的最佳方法是什么?有没有办法做到这一点不依赖于安装的驱动程序/一些软件?

+3

由于新GPU经常发布,我不会建议维护这样的映射。为什么不测量你的菜单屏幕的FPS,并用它来决定推荐什么设置? –

+0

这不是一个电子游戏。我从我的应用程序启动一个使用GPU进行计算的库。 –

+0

所以有一个自动检测程序运行一些内核并测试速度。 –

回答

0

以上评论由本Voigt总结:只是不要做

查看是否支持您最喜欢的计算API(OpenCL或其他)的最低版本,如果存在所需的扩展,请编译一些内核,并查看是否会产生错误。运行内核并对它们进行基准测试。询问API有多少本地/全局内存可用,它支持哪些规格,等等。

如果你真的坚持要检测GPU模型,就要为出现问题做好准备。有两种方法可以做到这一点,一种是解析图形卡广告的人类可读名称,这是马上要求麻烦(因为许多差异很大的卡片将宣传相同的人类可读名称,并且有些型号名称甚至包括关于他们的架构世代!)。
另一种,略微更好的方法是找到供应商/型号ID组合,并寻找那一个。这工作稍微好一些,但同样痛苦和容易出错。

当您拨打EnumDisplayDevices时,您可以从结构中的“密钥”字符串中解析这些供应商和型号ID。如果我没有记错的话,微软称之为“保留”,换句话说,这是一种不受支持的/无证的。

找出厂商仍然是相对容易。供应商ID为0x10DE是nVidia,而0x1002是AMD/ATI。英特尔是0x163C。但是,有时很少,一个便宜的OEM将会公布自己的ID。

然后你有那种毫无意义的型号(它不像是更大的数字更好,或者其他明显的规则!),你需要查找某个地方。 nVidia和AMD正式发布这些文件,但它们并不总是最新的。曾经有一段时间,nVidia的名单缺少近一年的最新款(虽然我刚刚下载的名单似乎已经完整)。我不知道包括英特尔在内的其他制造商是否持续这样做。
在Google上花费一些时间会导致您访问类似this one的网站,这些网站不是“官方”的,但可能允许您以痛苦的方式找出大部分内容。

然后,你知道模型,你几乎没有获得任何东西。你仍然需要把它翻译成“足够满足我想要的”或“不够好”。
您可以简单地通过编译内核并查看没有报告错误并运行它们来找到它。

你在做什么6个月当3个新GPU模型发布你的应用程序后显然不知道这些已经发货?你如何对待这些?