Требования OpenCL на стороне клиента - PullRequest
0 голосов
/ 22 марта 2012

Я реализовал проект на своем компьютере с использованием AMD SDK v2.5 и драйверов ATI Catalyst, поскольку у меня есть видеокарта ATI HD5570.

Я бы хотел, чтобы мой исполняемый файл работал на другой платформе. Я хотел бы иметь возможность проверить, можно ли найти доступную платформу OpenCL в конфигурации, в которой запускается мой исполняемый файл. И, конечно, в конфигурации может быть установлена ​​видеокарта Nvidia.

Я искал по интернету, но не смог найти окончательный ответ на свой вопрос. Я полностью потерян через мой поиск. Есть ли известный способ развертывания install-client-drivers? Существует ли надежный и хорошо организованный метод для удовлетворения всех этих потребностей? Разве OpenCL не слишком грязный?

Спасибо и всего наилучшего,

изменить: Короче,

Я хочу предоставить клиентскому компьютеру 1) мой исполняемый файл 2) любые необходимые файлы и библиотеки DLL, и я хочу, чтобы эти файлы поддержки были минимальными. Итак, есть ли способ для клиентского компьютера запустить мой код без установки SDK? (клиентский компьютер может иметь устройство с графическим процессором другого производителя)

изменить 2:

Зависит ли требования / установки на стороне клиента от SDK, используемого на стороне разработчика? Если нет, то почему мой клиент получает ошибку getplatformID, даже если он установил последние версии драйверов для своего nvidia gpu?

изменить 3:

Что должен делать мой клиент, если он хочет запустить OpenCL .exe, разработанный на другом компьютере (и, вероятно, с использованием разных поставщиков)?

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

Ну, ИМХО, вам нужно знать аппаратные детали клиентского компьютера, который вы планируете запустить, нет универсального OpenCL.dll или atiocl.dll / atiocl64.dll nvcuda.dll, который вы можете упаковать вместе с приложением, и надеяться что все работает.

Даже если вы работаете только с процессором, а не с графическим процессором, вам нужно, чтобы поставщик предоставил OpenCL.dll (время выполнения openCL), чтобы он присутствовал на клиентском компьютере, прежде чем вы попытаетесь сделать clGetPlatformIDs ... или такие схожие реплики.

НТН

0 голосов
/ 22 марта 2012

Если в системе установлено несколько версий OpenCL, вы увидите несколько платформы.

Вызовите clGetPlatformID, чтобы узнать количество платформ. Количество будет больше 1.

Вызовите clGetPlatformID еще раз, чтобы получить список идентификаторов.

вызовите clGetPlatformInfo, чтобы получить информацию о каждой платформе.

Затем решите, какую платформу использовать, а затем получите информацию об устройстве и свойства. Затем установите контекст и очереди OpenCL и запустите ядра на выбранной комбинации платформы и устройства.

Как и почему это работает? Подробнее о расширении ICD см. На сайте Khronos

http://www.khronos.org/registry/cl/extensions/khr/cl_khr_icd.txt

...