我已经编写了一个基准应用程序(http://www.headline-benchmark.com)对图形卡进行评级,但我的问题是,我使用GL_STRING从OpenGL API获取图形卡名称。对于NVidia卡,这很好,但对于AMD卡,我得到了无用的命名,比如"R9 200系列",它(目前)映射到四个完全不同的显卡。
我已经尝试使用OpenCL API来获取更多的卡信息(例如计算单元的总数),因为我可以使用它来消除AMD卡的歧义,但OpenCL很容易在旧系统上崩溃,所以我宁愿避免它。我可以使用OpenGL API的任何功能来提供更多关于卡的详细信息吗?或者AMD确实提供了任何我可以利用的诊断命令行实用程序吗?
您正在寻找什么样的详细信息?
由于您使用的是基准实用程序,我建议您使用AMD的ADL API。这与NV的NVML API大致相同,它们都可以让您获得内存和GPU时钟以及GPU负载%。请注意,如果您想使用这些信息,您应该在基准测试全面运行时查询它,因为现代GPU在空闲负载期间会将其时钟速率向后缩放。
AMD最近还发布了一个新的API,称为AGS,它比ADL复杂得多,可能会给你提供你想要的信息。不幸的是,我还没有机会与它合作;ADL主要用于电源状态管理,但仍然有用(特别是因为它与AGS不同,是跨平台的)。