I want to pass a structure to opencl kernel, the structure is

struct test
{
    int *x;
    float *y;
    char *z;
};

and the memory allocation and initialization is like

    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';
          }
  }

can i pass such a structure to opencl kernel

有帮助吗?

解决方案

You can pass such a structure, but it will be pointless because x, y and z point to different memory regions. Each of these memory buffers must be transferred on its own.

其他提示

Instead of structure, its better to allocate memory at the host side and send them to kernel as kernel parameters.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top