Передача структуры в openCL Kernel
Я хочу передать структуру в ядро opencl, структура
struct test
{
int *x;
float *y;
char *z;
};
и распределение памяти и инициализация похожи
struct test t;
t.x = (int*)malloc(sizeof(int)*100);
t.y = (float*) malloc (sizeof(float)*50);
t.z = (char*) malloc (sizeof(char) *25);
for(i = 0;i<100;i++)
{
t.x[i] = i;
if(i<50)
{
t.y[i] = i;
if(i<25)
t.z[i] = 'a';
}
}
Могу ли я передать такую структуру ядру Opencl
2 ответа
Решение
Вы можете передать такую структуру, но это будет бессмысленно, потому что x
, y
а также z
указывают на разные области памяти. Каждый из этих буферов памяти должен быть передан сам по себе.
Вместо структуры лучше выделять память на стороне хоста и отправлять их ядру в качестве параметров ядра.