我无法将一些数据发送到我的设备。
我想在内核中接收的数据类型是:
typedef struct{uint3 nbCells;
float3 worldOrigin;
float3 cellSize;
float3 gridSize;
float radius;
} grid_t;
Run Code Online (Sandbox Code Playgroud)
我从主机发送的数据类型是:
typedef struct{
uint nbCells[3];
float worldOrigin[3];
float cellSize[3];
float gridSize[3];
float radius;
} grid_t;
Run Code Online (Sandbox Code Playgroud)
但效果不佳。
我发送:
8, 8, 8; 0, 0, 0; 1.03368e-06, 1.03368e-06, 1.03368e-06; 8.2694e-06, 8.2694e-06, 8.2694e-06; 3e-07
Run Code Online (Sandbox Code Playgroud)
但在我的内核中,我收到了:
8, 8, 8; 0, 0 1.03368e-06; 1.03368e-06, 8.2694e-06, 8.2694e-06; 3e-07, 8.2694e-06, 0; 1.16428e-05
Run Code Online (Sandbox Code Playgroud)
我知道 float3 实际上在 Opencl 中被认为类似于 float4,所以我尝试使用 float4 和 4 个浮点数组,但它也不起作用。我尝试使用 3 个浮点数组而不是 float3 来接收数据,并且它工作得很好。它似乎在 opencl 中,由 3 个浮点数组成的结构没有与 3 个浮点数数组相同的内存大小。并且具有相同的结构,但使用 double …
opencl ×1