2013-03-08 5 views
3

Я создал простую программу на базе OpenCL (на C++) и протестировал ее в системе Windows 8 с картой AMD FirePro V4900. Я использовал AMD APP SDK.Запуск программы OpenCL на аппаратном обеспечении NVIDIA

Когда я копирую свои двоичные файлы на другую машину (Windows 8 с картой NVIDIA Quadro 4000), я получаю «Точка входа процедуры clReleaseDevice не может быть расположена в динамической связанной библиотеке (exe моей программы)». На этом втором компьютере установлены новейшие драйверы NVIDIA и CUDA 5.

Любые идеи о том, что мне нужно, чтобы заставить его работать с оборудованием NVIDIA?

+0

Я не верю, что это имеет какое-то отношение к cuda, поэтому я удаляю этот тег. –

+0

Как минимум, я бы: 1) проверить сайт разработчика NVidia OpenCL, 2) скачать NVidia SDK и 3) убедиться, что все необходимые NVidia .dll установлены из SDK на ваш целевой компьютер: https: //developer.nvidia .com/OpenCL. Кажется, что AMD в последнее время становится неаккуратно об их поддержке оборудования NVidia :) – paulsm4

+0

Зачем AMD поддерживать оборудование NVidia? Это ответственность NVIDIA по правильному внедрению спецификации OpenCL для собственного оборудования, и насколько я знаю, реализация NVidia OpenCL - это тонкая оболочка, которая преобразуется в код CUDA под капотом, поэтому она должна работать в основном. Я предполагаю, что вы используете реализацию OpenCL 1.1 (clReleaseDevice существует только под OpenCL 1.2), поэтому, если NVidia не поддерживает OpenCL 1.2, вы мертвы в воде. – Thomas

ответ

2

Его проблема с OpenCL 1.1 vs 1.2. Nvidia STILL для OpenCL версии 1.1. Вы использовали OpenCL 1.2 от AMD. Чтобы получить и приложение OpenCL, работающее в обеих системах, необходимо удалить вызов clReleaseDevice API и другие вызовы 1.2 и перекомпилировать их с помощью SDK AMD с опцией версии 1.1.

Смежные вопросы