[英]How to assign pointer to element of array of some struct in this array(OpenCL)?
也许您可以建议我如何在OpenCL中创建层次结构。 如果您拥有“ new”或“ malloc”,这很容易,但是我不知道如何在GPGPU中使用它。 所以我创建了3个内核:
我在OpenCL中有这个结构:
typedef struct some some;
struct some{
char data[4];
some* children[8];
};
第一个内核说这个结构的大小是36个字节(数据4个字节,指针32个字节)。
接下来,我根据先前的信息在GPU上分配内存,并调用第二个内核:
kernel void import(global some *buffer){
for(int i=0;i<4;i++){
buffer[0].data[i]=255; //For example, doesn't matter
}
//Now I need to assign pointer to next element of array(buffer) to first element
buffer[0].children[0]=&buffer[1];
}
但是内核无法编译。 我也尝试过:
*buffer[0].children[0]=buffer[0];
它可以编译,但是当然会崩溃。 这在逻辑上是错误的)如果没有分配指针,一切都会很好。 很酷的程序(1个元素)
尝试使用偏移量或数组索引而不是指针。
typedef struct some some; struct some{ char data[4]; size_t children[8]; // an array of subscripts };
...
// buffer[0].children[0]=&buffer[1]; becomes buffer[0].children[0] = 1;
所以现在您可以通过下标引用一个孩子
buffer[ buffer[0].children[0] ].char[0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.