我正在尝试将 OpenCL GPU 设备与我在多 GPU 系统中使用 NvAPI_EnumPhysicalGPUs
获得的 NVAPI 设备相关联。
问题是,我可以将 clGetDeviceInfo
与 CL_DEVICE_VENDOR_ID
一起使用,这始终是唯一的,这是最好的方法,而且我可以从 NvAPI_SYS_GetChipSetInfo 检索供应商
。但它与我从 NvAPI_EnumPhysicalGPUs
获得的 NvPhysicalGpuHandle
无关。有什么方法可以关联它吗?
当然,我可以只用名字,但是这样不好。
有一种方法可以做到。由于某种原因,在 OpenCL 中有一个糟糕的记录功能。您需要使用常量 0x4008
调用 clGetDeviceInfo
,它将为您提供以下设备句柄的总线 ID。
cl_uint busID;
clGetDeviceInfo(device,0x4008,sizeof(cl_uint), &busID,NULL);
printf("%d",busID);
在 NvApi 端使用 NvAPI_GPU_GetBusId
。然后您可以通过比较总线来关联句柄。
我是一名优秀的程序员,十分优秀!