小编zud*_*aha的帖子

OpenCL 将 float3 主机发送到设备

我无法将一些数据发送到我的设备。

我想在内核中接收的数据类型是:

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

2
推荐指数
1
解决办法
962
查看次数

标签 统计

opencl ×1