如何查询PC上的GPU总数量?多显卡场景下的技术实现方案问询
多显卡数量统计实现方案
跨厂商跨场景通用方案
- Windows平台无额外依赖方案:调用系统自带
DXGI接口,步骤如下:- 创建
IDXGIFactory实例 - 循环调用
EnumAdapters方法遍历显卡,直到返回DXGI_ERROR_NOT_FOUND - 成功遍历的次数即为总显卡数量
该方案支持所有厂商的独显、核显,完美适配多显卡场景,不需要引入第三方SDK。
- 创建
- 跨全平台通用方案:
- 可使用
libpci库枚举PCI总线设备,过滤显示控制器类设备后统计数量,支持Windows/Linux/macOS - Linux平台可直接读取
/sys/class/drm/路径下card*节点数量统计,无需额外依赖 - macOS平台可调用
IOKit框架的IOServiceGetMatchingServices接口,匹配显卡类设备遍历统计
- 可使用
- 通用计算场景方案:如果你的应用只需要统计支持通用计算的显卡,可调用
OpenCL的clGetDeviceIDs接口,过滤CL_DEVICE_TYPE_GPU类型设备统计数量,支持所有兼容OpenCL标准的显卡。
厂商专属SDK方案
如果仅需要统计特定厂商的显卡,可直接调用对应厂商的官方SDK:
- 英伟达显卡:你提到的
NvAPI本身就支持多显卡枚举,调用NvAPI_EnumPhysicalGPUs接口可直接获取所有N卡的句柄数组,数组长度即为N卡总数 - AMD显卡:使用AMD官方
ADL(AMD Display Library) SDK,调用ADL2_Adapter_NumberOfAdapters_Get接口即可获取AMD显卡总数 - 英特尔显卡:使用英特尔
IGFXSDK对应接口枚举统计即可
注意:如果需要统计所有厂商的显卡,优先选择平台原生通用接口,不要混合调用多个厂商SDK,避免出现重复计数、遗漏核显等问题。
内容的提问来源于stack exchange,提问作者OKprogrammer
相关产品推荐
相关产品推荐

