Можно ли писать ядра OpenCL на C ++, а не на C?

Я понимаю, что есть openCL C ++ API, но у меня проблемы с компиляцией моих ядер … должны ли ядра быть написаны на C? И тогда это просто код хоста, который может быть написан на C ++? Или есть какой-то способ написать ядра на C ++, который я не нахожу? В частности, я пытаюсь скомпилировать свои ядра, используя pyopencl, и это, похоже, дает сбой, потому что он компилирует их как C-код.

5

Решение

OpenCL C это подмножество C99,

Существует также OpenCL C++ (Спецификации OpenCL 2.1 и OpenCL 2.2), который является подмножеством C++14 но он еще не реализован ни одним вендором (OpenCL 2.1 частично реализован Intel, но не ядрами C ++).

Хост-код может быть написан на C, C ++, Python и т. Д.

Вкратце вы можете прочитать об OpenCL на википедия. Есть описание о каждой версии OpenCL. В pyopencl Вы можете использовать OpenCL1.2 (насколько я знаю, пока не поддерживается OpenCL2.0).
Подробнее о OpenCL на Хронос Веб-сайт.

9

Другие решения

Для справки, есть также Boost.Compute. Он не помогает вам с pyopencl, но решает многие проблемы, которые делает pyopencl, и обладает некоторой магией метапрограммирования, которая облегчает написание ядер OpenCL на C ++.

Это ТАК вопрос (ссылка на часто задаваемые вопросы по Boost.Compute) также содержит хорошее обсуждение некоторых соответствующих конструктивных ограничений, которые OpenCL накладывает на разработчиков.

0

По вопросам рекламы [email protected]