查询 VRAM 数量或 GPU 时钟速度

Query amount of VRAM or GPU clock speed

我正在编写代码来选择一个物理设备,但我想加入一些逻辑来优先选择较新的设备(更多 VRAM 或更高的时钟速度),以防多个设备满足我的最低功能要求。

这可能吗?

Vulkan 没有特定的 API 调用来获取此类 GPU 详细信息,为此您需要使用供应商特定的 APIs,例如 NVAPI。唯一的提示可能是 VkPhysicalDevicePropertiesdeviceType 成员 returns 无论它是集成、离散还是虚拟 GPU。

VRAM 大小可以通过使用 vkGetPhysicalDeviceMemoryProperties 找到设置了 DEVICE_LOCAL 位的内存堆来确定。该函数返回的 VkPhysicalDeviceMemoryProperties 包含 memoryHeaps 成员中的所有可用内存堆。配置不同,尤其是。在离散和集成 GPU 之间,所以这可能并不总是你要找的东西,例如在具有共享内存的集成 GPU 上。

独立 GPU 的堆:http://vulkan.gpuinfo.org/displayreport.php?id=1432#memoryheaps

集成 GPU 的堆:http://vulkan.gpuinfo.org/displayreport.php?id=1200#memoryheaps