2013-02-20 2 views
4

Согласно this document page 6 (released by AMD)(and this topics ?), есть несколько способов использования шаблонов с OpenCL. Однако первый документ сообщает, что это можно сделать, используя некоторые параметры с помощью clBuildProgramWithSource, который, кажется, не существует ... В любом случае, если предположить, что это clBuildProgram, а не предыдущий, я попытался использовать так называемый «-x», вариант с «CLC++», но до сих пор, она не распознается:Как использовать шаблоны с OpenCL?

warning: ignoring build option: "-x" 

в самом деле, согласно документации, вытекающих из Хроноса, эта опция не доступна! Этот документ может быть как-то устаревшим, но есть ли другие способы использования шаблонов внутри кода OpenCL?

ответ

6

Опция -x доступна только в последних версиях AMD OpenCL, которые поддерживают OpenCL 1.2 и статическое расширение языка C++. Вы не найдете ни слова об этом в официальных документах Khronos, потому что это все инициатива AMD и, в конечном счете, расширение поставщика.

Я предполагаю, что вы имеете право выполнения, поэтому ядро ​​должно быть построено с этими параметрами:

-x clc++ 

Если вы в состоянии построить ядра с классами, используя это, то вы должны быть в состоянии использовать шаблоны ,

Если это не работает, это означает, что либо ваша установка времени выполнения повреждена, например. вы каким-то образом используете неправильный компилятор, или это означает, что у вас нет правильной среды выполнения. Если да, сообщите свою информацию о платформе.

Я уже давно испортил статическое расширение C++, и могу подтвердить, что -x clc++ действительно работает.


берегитесь Кроме того, что с помощью этого расширения будет оказывать код не портативный и заперли, чтобы AMD-совместимых устройств, так как маловероятно, другие производители будут вводить точно такое же расширение себя (если вообще).

Кроме того, примечание о документах Khronos - те, которые возвращаются google, обычно являются версиями OpenCL 1.0, которые могут раздражать. Я рекомендую загрузить стандарт 1.1 или 1.2, а также получить локальную копию соответствующей документации HTML для быстрого доступа, если вы используете OpenCL много. Помогает.

0

Новый стандарт SYCL Хронос предлагает встроенную поддержку мета-программирования шаблонов поверх платформ OpenCL, включая AMD OpenCL.

Смежные вопросы