Связать устройство 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, Затем вы можете связать ручки, сопоставляя автобусы.

Другие вопросы по тегам