を介して 2 次元の cudaArray に書き込もうとしていsurface<void, 2>ます。配列にはチャネル形式があります。{32, 32, 0, 0, cudaChannelFormatKindFloat}より簡単に言えば、vector2s を保持します。
vector2整数座標で示される位置の表面にa を書き込もうとしてい(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ベクトルのコンポーネントのみが書き込まれます。このやや非直感的な動作の理由は何ですか?