Используйте Intel OpenCL.dll вместе с установкой NVIDA CUDA

0

У меня есть компьютер с процессором Intel и графическим процессором NVIDIA, работающим под управлением Windows 7. У меня есть программный модуль, написанный на NVIDIA CUDA и еще один модуль, написанный в OpenCL. Я хотел бы запустить модуль OpenCL на CPU, используя реализацию Intel OpenCL, и в то же время использовать модуль CUDA.

В моей системе я установил сначала CUDA SDK, а затем SDK от Intel.

Я скомпилировал программу в Visual Studio 2012, поручив компоновщику использовать библиотеку Intel (и я скомпилирован против заголовков OpenCL, предоставленных Intel).

Однако, когда я запускаю простую программу для запроса оборудования, я могу видеть только карту NVIDIA.

Я пробовал модифицировать реестр Windows и переменную PATH, не смотря. Когда я запрашиваю зависимости с помощью "Dependecy Walker", я вижу, что программа зависит от DLL, расположенной в c:\windows\system32, которая не является папкой, где находится dll Intel. Я попытался удалить эту DLL, но я все еще вижу эту зависимость, и я могу получить доступ к GPU.

Любая идея о том, что может произойти?

Теги:
dll
cuda
opencl

2 ответа

2

В Windows "OpenCL.dll" - это ICD, предоставляемый Khronos и перераспределенный AMD, NVIDIA и Intel.

Реальные драйверы ссылаются на реестр, а ICD перечисляет их всех.

Когда вы запрашиваете платформы OpenCL, вы увидите один для каждого установленного драйвера (AMD, NVIDIA, Intel).

На каждой платформе есть устройства (или устройства), например, на платформе NVIDIA вы найдете свой графический процессор NVIDIA, а на платформе Intel вы найдете свой процессор.

Не заменяйте OpenCL.dll

Запустите клинфо или GPU-Z, чтобы увидеть, какие платформы и устройства OpenCL он видит.

Переустановите драйвер Intel CPU (новый был только что отправлен 2 дня назад), чтобы убедиться, что их драйвер установлен.

Примечание. Вашему процессору необходимо иметь SSE 4.2 для работы процессора Intel.

1

Вы можете попробовать загрузчик Installable Client Driver (ICD). Однако у меня нет опыта, если он работает в Windows.

Или:

Поскольку вы не хотите использовать GPU с OpenCL, вы можете просто скопировать Intel OpenCL.dll в свой рабочий каталог. Рабочий каталог сначала загружается, когда загружается .dll. Таким образом, даже если Nvidia OpenCL.dll установлен в ваш каталог windows/system32 библиотека Intel сначала находится и, следовательно, загружается. Возможно, лучшие решения могут загружать dll по требованию, как описано здесь. Динамически загружать функцию из DLL, но в качестве быстрого решения она должна работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню