Передача структуры в 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 указывают на разные области памяти. Каждый из этих буферов памяти должен быть передан сам по себе.

Вместо структуры лучше выделять память на стороне хоста и отправлять их ядру в качестве параметров ядра.

Другие вопросы по тегам