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