【问题标题】:Method to get GPU information for OS or OpenGL API获取 OS 或 OpenGL API 的 GPU 信息的方法
【发布时间】:2013-12-16 23:21:38
【问题描述】:

我编写了一个对显卡进行评分的基准应用程序 (http://www.headline-benchmark.com),但我的问题是我使用 GL_STRING 从 OpenGL API 获取显卡名称。对于 NVidia 卡,这很好用,但对于 AMD 卡,我得到了无用的命名,例如“R9 200 系列”,它(当前)映射到四个完全不同的显卡。

我尝试使用 OpenCL API 来获取更多卡信息(例如计算单元的总数),因为我可以使用它来消除 AMD 卡的歧义,但 OpenCL 在旧系统上容易崩溃,所以我宁愿避免它。我可以使用 OpenGL API 的任何功能来提供有关卡片的更多详细信息吗?或者 AMD 确实提供了我可以利用的任何类型的诊断命令行实用程序?

【问题讨论】:

    标签: opengl gpu amd-processor ati


    【解决方案1】:

    你在寻找什么样的细节?

    由于您使用的是基准测试实用程序,我建议您使用 AMD 的 ADL API。这与 NV 的 NVML API 大致相同,它们都可以让您获得内存和 GPU 时钟以及 GPU 负载百分比。请注意,如果您想使用此信息,则应在基准测试全面展开时对其进行查询,因为现代 GPU 在空闲负载期间会缩减其时钟频率。

    AMD 最近还发布了一个名为AGS 的新 API,它比 ADL 复杂得多,并且可能会为您提供所需的信息。不幸的是,我还没有机会使用它。 ADL 主要用于电源状态管理,但仍然有用(特别是因为它与 AGS 不同,它是跨平台的)。

    【讨论】:

    • 信息量很大...但是,我使用的是 Java,这确实会使我的构建变得复杂,因为我需要为我支持的每个平台构建本机代码二进制文件。另外,我试图避免使用专有 API。顺便说一句,我需要的唯一信息是 GPU 的名称(我可以从 OpenGL 获得“Radeon R9 200 系列”,但我需要获得“Radeon R9 290X”)。 Catalyst Control Center 是否有命令行 - 似乎有,但我找不到任何文档。
    • @Ags1:我回顾了我的代码库并记得还有扩展名:GLX_AMD_gpu_associationWGL_AMD_gpu_association,它们最初旨在让您在多 GPU 中选择特定的 GPU系统进行渲染,但为了支持这一点,他们必须创建一个更复杂的系统来识别 GPU。所以他们创建了glXGetGPUInfowglGetGPUInfo
    • 谢谢,这看起来像是我需要的 AMD 特定 API。但是,为什么 AMD 不在常规 GL_STRING 中预先提供正确的信息呢?
    • 如果您查看设备管理器,实际设备本身通常被标记为非常模糊的东西,例如“Radeon HD 7900 系列”。这既可以是福也可以是祸,它不是特别具有描述性,但同时模型中的微小变化不必进行不同的解析。最终,如果您需要更多低级硬件配置详细信息,则不应依赖设备名称,而应查询实际属性。
    猜你喜欢
    • 2013-03-26
    • 2012-09-14
    • 2021-10-07
    • 2013-03-06
    • 2011-01-29
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    相关资源
    最近更新 更多