Как использовать шаблоны C++ в ядрах OpenCL?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как использовать шаблоны C++ в ядрах OpenCL?

Сообщение Anonymous »

Я новичок в OpenCL.

У меня есть алгоритм, использующий шаблоны. Он хорошо работал с распараллеливанием OpenMP, но теперь объем данных вырос, и единственный способ его обработать — переписать его для использования OpenCL.
Я могу легко использовать MPI для создания кластера, но графический процессор, подобный Tesla, гораздо сложнее. дешевле кластера :)

Есть ли способ использовать шаблоны C++ в ядре OpenCL?

Возможно ли это как-то расширить шаблоны с помощью компилятора C++ или какого-либо инструмента и после которые используют измененную функцию ядра?

EDIT. Идея обходного пути состоит в том, чтобы каким-то образом сгенерировать C99-совместимый код из кода C++ из шаблона.

Я нашел следующее о Comeau:

Comeau C++ 4.3.3 — это полноценный компилятор, который выполняет полную проверку синтаксиса, полную семантическую проверку, полную проверку ошибок и все другие функции компилятора. Входной код C++ транслируется во внутренние деревья компилятора и таблицы символов, совсем не похожие на C++ или C. Кроме того, он генерирует внутреннюю проприетарную промежуточную форму. Но вместо использования собственного генератора внутреннего кода Comeau C++ 4.3.3 генерирует на выходе код C. Помимо технических преимуществ C++, аспекты генерации C в таких продуктах, как Comeau C++ 4.3.3, рекламировались как причина успеха C++, поскольку его можно было перенести на большое количество платформ благодаря общей доступности компиляторов C.

Компилятор C используется исключительно для генерации собственного кода. Это означает, что Comeau C++ адаптирован для использования с конкретными компиляторами C на каждой соответствующей платформе. Обратите внимание, что пошив одежды должен быть выполнен компанией Comeau. В противном случае сгенерированный код C не имеет смысла, поскольку он привязан к конкретной платформе (где платформа включает в себя как минимум ЦП, ОС и компилятор C) и, кроме того, сгенерированный код C не является автономным. Следовательно, его нельзя использовать отдельно (обратите внимание, что это одновременно техническое и юридическое требование при использовании Comeau C++), и именно поэтому обычно нет возможности просмотреть сгенерированный код C: это почти всегда бесполезно, и процесс компиляции , включая его генерацию, следует рассматривать как внутренние этапы трансляции.

Подробнее здесь: https://stackoverflow.com/questions/446 ... cl-kernels
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»