我有以下结构:
C++:
struct ss{
cl_float3 pos;
cl_float value;
cl_bool moved;
cl_bool nextMoved;
cl_int movePriority;
cl_int nextMovePriority;
cl_float value2;
cl_float value3;
cl_int neighbors[6];
cl_float3 offsets[6];
cl_float off1[6];
cl_float off2[6];
};
开放式CL:
typedef struct{
float3 nextPos;
float value;
bool moved;
bool nextMoved;
int movePriority;
int nextMovePriority;
float value2;
float value3;
int neighbors[6];
float3 offsets[6];
float off1[6];
float off2[6];
} ss;
我有一个数组,我将它们传递给一个 opencl 缓冲区,但是当我在内核中使用它们时,数据被破坏了。
我相信这是因为对齐,我已经阅读了其他关于它的帖子
但是,我仍然没有完全了解如何正确设置我的结构的对齐方式。另外,我不完全理解对齐和打包限定符的属性。
所以:
Q1。你能告诉我如何调整我的结构以正常工作吗?
Q2。你能给我解释一下或给我一些链接来理解所有对齐问题和限定符吗?
谢谢。