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

Я новичок в OpenCL.

У меня есть алгоритм, использующий шаблоны . Я могу легко использовать MPI для создания его для кластера, но Tesla-подобный GPU намного дешевле кластера :)

Есть ли способ использовать шаблоны 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: он почти всегда бесполезен, и процесс компиляции, включая его создание следует рассматривать как внутренние фазы трансляции.

13
задан flashnik 16 December 2010 в 23:02
поделиться