Решил тут как-то на досуге разобраться наконец-то с программированием под GPU.
На CUDA решил не заморачиваться, карточки от ATI ведь тоже хочется попробовать.
Нашел OpenCL — казалось бы, вот оно счастье! И переносимо, и вообще.
Скачал ATI OpenCL SDK, поставил. Открыл OpenCL AMD Tutorial, скопипастил код, собрал. Не запускается — нету, говорит, какой-то функции в OpenCL.dll.
Подсунул ему под бок эту длл-ку из SDK, запустилось, дошло до определенного момента и упало с ошибкой доступа к памяти.
Успевает выдать, что в системе имеется 1 платформа (NVIDIA — и это правильно), платформа поддерживает OpenCL 1.1 (а SDK, что характерно, под версию 1.2 — потому и не находило каких-то функций в системной длл-ке).
По идее, если девайсов системе нет, то должен вернуться пустой список.
Эксепшены выключены.
Байндинги — плюсовые, напрямую С-шные функции OpenCL не вызываются. Байндинги принудительно используют версию OpenCL 1.2 (как это отключить без правки хедеров — не нашел).
В чем может быть дело?
Пока вижу такие варианты:
— OpenCL SDK от ATI не совместим с драйверами NVidia.
— Байндинги версии 1.2 не совместимы с дровами, поддерживающими только версию 1.1.
— Байндинги с С++ вообще кривоватые, пользуйся сишными функциями напрямую. Заодно и проблем с версиями можно будет избежать.
— ... занимаешься бредом, сиди и слушай свои "валенки" — очень не хотелось бы.
Re: OpenCL и С++ - кривые байндинги или кривые руки?
Здравствуйте, Razzak, Вы писали:
R>- Байндинги с С++ вообще кривоватые, пользуйся сишными функциями напрямую. Заодно и проблем с версиями можно будет избежать.
В 2010 я использовал OpenCL без binding'ов, напрямую (естественно были свои thin обвёртки). Тогда от API не так много требовалось — найти устройства, скомпилировать ядро, передать буферы на device, запустить и скопировать результаты. Всё работало и на NVIDIA и на ATI, и даже на CPU.
В рассылке Boost'а недавно пролетала либа со своим фасадом — можно попробовать её.
PS, ещё есть C++ AMP, но где он сейчас работает кроме MS — я не в курсе.
Re: OpenCL и С++ - кривые байндинги или кривые руки?
Гугл поведал что "OpenCL.dll для карты NVidia поставляется вместе с драйвером и впоследствии оказывается в \Windows\SysWOW64". Но есть немалый шанс что вы её уже потёрли версией от Ati.
Re: OpenCL и С++ - кривые байндинги или кривые руки?
Здравствуйте, agat50, Вы писали:
A>Здравствуйте, agat50, Вы писали:
A>Гугл поведал что "OpenCL.dll для карты NVidia поставляется вместе с драйвером и впоследствии оказывается в \Windows\SysWOW64". Но есть немалый шанс что вы её уже потёрли версией от Ati.
Ну, насчет этого я не беспокоюсь: на основной машине я ничего лишнего не ставлю, вся разработка (в т. ч. инсталляция разных SDK) — только под VirtualBox в виртуальной машине.
Да, OpenCL.dll от NVidia в системе есть, но с ней программа не грузится — как я уже жаловался, С++-ные байндинги используют функции, которые добавились в OpenCL 1.2 и которых нет в этой dll. Переключиться на версию 1.1 без правки исходников, похоже, не получится.
Похоже, придется послать в оппу эти байндинги и написать свои обертки.
Re[2]: OpenCL и С++ - кривые байндинги или кривые руки?
On 26.03.2013 14:51, Razzak wrote:
> Да хрен их знает, пишут-то о совместимости (вплоть до того, что в > программе можно одновременно использовать девайсы разных производителей).
Вот только натанцуешься с бубном от всей души. По крайней мере народ в
массе своей танцует.
> Там весь SDK — это пяток хедеров и одна ДЛЛ-ка на 50 килобайт.
Ага. Но, таже AMD не в силах запустить эту dll под WinXPx64. Наверное в
самом деле там внутри что-то очень и очень сложное.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: OpenCL и С++ - кривые байндинги или кривые руки?
On 26.03.2013 14:08, Razzak wrote:
> Ну, насчет этого я не беспокоюсь: на основной машине я ничего лишнего не > ставлю, вся разработка (в т. ч. инсталляция разных SDK) — только под > VirtualBox в виртуальной машине.
Подожди, а как ты OpenCL в виртуалке поднял?
Posted via RSDN NNTP Server 2.1 beta
Re[5]: OpenCL и С++ - кривые байндинги или кривые руки?
Здравствуйте, Vzhyk, Вы писали:
V>On 26.03.2013 14:08, Razzak wrote:
>> Ну, насчет этого я не беспокоюсь: на основной машине я ничего лишнего не >> ставлю, вся разработка (в т. ч. инсталляция разных SDK) — только под >> VirtualBox в виртуальной машине. V>Подожди, а как ты OpenCL в виртуалке поднял?
А я и не поднимал.
Там оно всего лишь собирается, а запускается — уже на хостовой машине, где карточка живая есть.
Re[4]: OpenCL и С++ - кривые байндинги или кривые руки?
Здравствуйте, Vzhyk, Вы писали:
>> Там весь SDK — это пяток хедеров и одна ДЛЛ-ка на 50 килобайт. V>Ага. Но, таже AMD не в силах запустить эту dll под WinXPx64. Наверное в V>самом деле там внутри что-то очень и очень сложное.
Display Driver изменилось чуть более чем полностью в Windows Vista. WDDM для Vista. XDDM для XP. Поэтому у всех производителей драйвера для этих операционок отличаются чуть более чем полностью. Посему вопрос не о том, чтобы запустить dll под XP, вопрос больше в том, чтобы реализовать ее полностью.
Re: OpenCL и С++ - кривые байндинги или кривые руки?