Эксклюзивный вычислительный режим с OpenCL + NVidia

У меня вопрос к эксклюзивному режиму вычислений с NVidia + OpenCL.

Я могу настроить эксклюзивный режим вычислений (стр. 74 из руководства по программированию cuda 3.0) с помощью nvidia-smi на nvidia-gpu. это означает, что только одна программа может вычислить на GPU.

CUDA графики выполнения, чем приложение автоматически.

но у меня есть проблема с opencl-программами в этом случае: если одно приложение запускается на графическом процессоре с установленным эксклюзивным режимом вычислений, а вторая вызывает вызовы clGetDeviceInfo(..., CL_DEVICE_AVAILABLE,...) -программ clGetDeviceInfo(..., CL_DEVICE_AVAILABLE,...) с одним и тем же графическим процессором - это result == CL_TRUE. После этого, если opencl-app пытается создать контекст на этом устройстве, то происходит сбой запущенного приложения (оба).

Как я могу узнать доступный графический процессор с OpenCL?

Благодарю.

Ответ 1

clGetDeviceIds возвращает количество устройств и идентификаторы их устройств. Затем вы можете проверить, доступно ли каждое из устройств или нет. Я не уверен, разрешит ли он ошибку.

Ответ 2

У меня была аналогичная проблема, когда я хотел найти лучшее устройство OpenCL в списке. Я не мог найти решение, поэтому сам написал. Он попытается создать контекст на устройстве. Если он не может, он попробует следующий.

Он также поддерживает несколько платформ OpenCL. Вы можете выбирать между nvidia (только gpu), amd (gpu и cpu), intel (cpu) и apple (gpu и cpu).

Вы можете найти его на github: https://github.com/nbigaouette/oclutils/

Я все еще ищу лучший механизм блокировки.