Связать устройство OpenCL с устройством NVAPI
Я пытаюсь связать устройства OpenCL GPU с устройствами NVAPI, которые я использую NvAPI_EnumPhysicalGPUs
в системе Multi-GPU.
Дело в том, что я могу использовать clGetDeviceInfo
с CL_DEVICE_VENDOR_ID
который всегда уникален, и это лучший способ, и я могу получить поставщика из NvAPI_SYS_GetChipSetInfo
, Но это не связано с NvPhysicalGpuHandle
из которого я получаю NvAPI_EnumPhysicalGPUs
, Есть ли способ связать это?
Конечно, я могу просто использовать имя, но это не хорошо.
1 ответ
Есть способ сделать это. В OpenCL по какой-то причине есть плохая документированная функция. Вам нужно позвонить clGetDeviceInfo
с постоянной 0x4008
и он даст вам идентификатор шины для следующего дескриптора устройства.
cl_uint busID;
clGetDeviceInfo(device,0x4008,sizeof(cl_uint), &busID,NULL);
printf("%d",busID);
На стороне NvApi NvAPI_GPU_GetBusId
, Затем вы можете связать ручки, сопоставляя автобусы.