Я новичок в OpenCL.
У меня есть алгоритм, который использует шаблоны. Он хорошо работал с OpenMP-распараллеливанием, но теперь количество данных выросло, и единственный способ его обработки - переписать его для использования OpenCL. Я могу легко использовать MPI для его сборки для кластера, но графический процессор, подобный Tesla, намного дешевле, чем кластер:)
Можно ли использовать шаблоны С++ в ядре OpenCL?
Возможно ли каким-то образом расширить шаблоны с помощью компилятора С++ или какого-то инструмента, и после этого использовать так изменив функцию ядра?
ИЗМЕНИТЬ. Идея обходного пути заключается в том, чтобы каким-то образом создать C99-совместимый код из кода С++ из шаблона.
Я нашел следующее о Комо:
Comeau С++ 4.3.3 - это полный и истинный компилятор, который выполняет полную проверку синтаксиса, полную семантическую проверку, полную проверку ошибок и все другие обязанности компилятора. Код ввода С++ преобразуется во внутренние деревья компилятора и таблицы символов, не похожий на С++ или C. Кроме того, он генерирует внутреннюю проприетарную промежуточную форму. Но вместо использования запатентованного генератора кода конца кода, Comeau С++ 4.3.3 генерирует C-код в качестве своего вывода. Помимо технических преимуществ С++, C-генерирующие аспекты продуктов, таких как Comeau С++ 4.3.3, были рекламированы как причина успеха С++, поскольку его удалось привлечь на большое количество платформ из-за общей доступности компиляторов C.
Компилятор C используется просто и только ради получения собственной генерации кода. Это означает, что Comeau С++ предназначен для использования с конкретными компиляторами C на каждой соответствующей платформе. Обратите внимание, что это требование, которое должен выполнять пошив. В противном случае сгенерированный код C бессмыслен, поскольку он привязан к определенной платформе (где платформа включает в себя, по крайней мере, компилятор CPU, OS и C), и, кроме того, сгенерированный код C не является автономным. Поэтому он не может использоваться сам по себе (обратите внимание, что это и техническое и юридическое требование при использовании Comeau С++), и именно поэтому обычно нет возможности увидеть сгенерированный код C: он почти всегда бесполезен и процесс компиляции, включая его создание, следует рассматривать как внутренние этапы перевода.