OpenCL, включайте файлы - PullRequest
       39

OpenCL, включайте файлы

5 голосов
/ 26 июля 2011

После сообщения , если у меня есть заголовочный файл, в котором есть некоторые реализации функций и который должен быть включен в несколько ядер (я имею в виду, что эти функции являются вспомогательными во всех ядрах, и я не хочу дублировать код)

Как мне сделать это включение - можно ли сохранить функции в заголовке? Будут ли скомпилированы ядра и функции заголовка?

Можете ли вы указать (может быть, на примере), как я использую опцию "-I" в этих случаях? Я использую VS2010 (если это вообще имеет значение)

Примечание: каждое ядро ​​работает в отдельной программе

1 Ответ

8 голосов
/ 29 июля 2011

Да, вы можете использовать заголовки в OpenCL именно для того, что вы предлагаете. Каждый файл ядра будет содержать заголовок и скомпилировать его.

Опция "-I" используется только для указания пути для включений. Если ваши включения находятся в вашем рабочем каталоге, это не обязательно. Вот пример:

/////////////////////////////////////////////////////////////////
// Load CL file, build CL program object, create CL kernel object
/////////////////////////////////////////////////////////////////
std::string  sourceStr = FileToString(params.kernelFile);

cl::Program::Sources sources(1, std::make_pair(sourceStr.c_str(), sourceStr.length()));
cl::Program program = cl::Program(oclHandles.context, sources);

program.build(oclHandles.devices,"-I c:/Includes/");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...