3
我有以下结构:如何为OpenCL数组的结构设置正确的对齐方式?
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];
};
的OpenCL:
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的缓冲液,但是当我操作与他们在一个内核中,数据被破坏。
我相信这是因为对齐的,我已阅读其他职位吧
I need help understanding data alignment in OpenCL's buffers
Aligning for Memory Accesses in OpenCL/CUDA
不过,我仍然没有完全得到如何正确设置的想法对齐到我的结构。此外,我不完全了解属性对齐和压缩限定符。
所以:
Q1。你能告诉我如何对齐我的结构正常工作吗? Q2302。你能解释我还是给我一些链接来理解所有的对齐问题和限定符?
感谢名单。
Thanx,那帮助。我还指出,出于对齐的原因,您需要使结构体具有2的大小,所以我添加了一些虚拟变量以使其占用256个字节,现在它可以工作:)。 – Alex