Использование #include для загрузки кода OpenCL
-
06-07-2019 - |
Вопрос
Я давно видел, как это делается с помощью шейдерного кода hlsl / glsl - с помощью #include
в файле исходного кода, который вставляет код в char *
чтобы во время выполнения не происходил ввод-вывод файла.
Если бы я представлял его как псевдокод, он выглядел бы примерно так:
#define CLSourceToString(filename) " #include "filename" "
const char* kernel = CLSourceToString("kernel.cl");
Теперь, конечно, #define
не будет работать, потому что он просто попытается использовать эти кавычки для запуска строк.
Решение
Посмотрите, как в OpenCL используются движки физики маркеров для как сделать это с kernel .
В C ++ / C source
#define MSTRINGIFY(A) #A
char* stringifiedSourceCL =
#include "VectorAddKernels.cl"
В исходном коде OpenCL
MSTRINGIFY(
__kernel void VectorAdd(__global float8* c)
{
// snipped out OpenCL code...
return;
}
);
Другие советы
Согласно этому , это невозможно, но вы можете использовать xxd -i
для архивации того же эффекта.
Не связан с StackOverflow