编写由向量数组支持的CUDA表面

时间:2011-07-15 10:49:55

标签: vector cuda surface

我试图通过surface<void, 2>写一个二维cudaArray。 该数组具有通道格式{32, 32, 0, 0, cudaChannelFormatKindFloat}或更简单地说,保留vector2 s。

我正在尝试在整数坐标vector2指示的位置向表面写(x, y)。以下效果很好:

// write the float2 vector d to outSurf
surf2Dwrite(d.x, outSurf, x * sizeof(float2), y);
surf2Dwrite(d.y, outSurf, x * sizeof(float2) + sizeof(float), y);

然而,如果我这样做

surf2Dwrite(d, outSurf, x * sizeof(float2), y);

仅写入向量的x组件。 这种略微不直观的行为是什么原因?

1 个答案:

答案 0 :(得分:2)

我发现很难相信这些surf2Dwrite调用中的任何一个实际上都按照你的想法行事。要写一个float2我会用这个:

surf2Dwrite<float2>(d, outSurf, x, y);

x和y参数是您要写入的曲面上的坐标,template参数告诉调用所访问类型的大小。