[英]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.