0

我想将一个结构传递给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内核吗

4

2 回答 2

2

可以传递这样的结构,但它没有意义,因为x,yz指向不同的内存区域。这些内存缓冲区中的每一个都必须单独传输。

于 2013-02-01T12:40:22.987 回答
0

最好在主机端分配内存并将它们作为内核参数发送给内核,而不是结构。

于 2013-02-05T12:16:41.527 回答