gpt4 book ai didi

c - 如何将指针分配给此数组(OpenCL)中某些结构的数组元素?

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:32 25 4
gpt4 key购买 nike

也许你能告诉我如何在 OpenCL 中创建层次结构。如果你有"new"或“malloc”,这很容易,但我不知道如何在 GPGPU 中做到这一点。所以我创建了 3 个内核:

  1. 将 sizeof 结构发送到主机。
  2. 初始化数据。
  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;
结构一些{
字符数据[4];
size_t 个 child [8];//下标数组
};

...

//缓冲区[0].children[0]=&buffer[1];成为
缓冲区[0].children[0] = 1;

所以现在你可以通过它的下标引用一个 child

buffer[ buffer[0].children[0] ].char[0]

关于c - 如何将指针分配给此数组(OpenCL)中某些结构的数组元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com