2
我正試圖通過surface<void, 2>
寫入2維cudaArray。 該陣列有一個通道格式{32, 32, 0, 0, cudaChannelFormatKindFloat}
或更簡單地說,保存vector2
s。寫入由矢量陣列支持的CUDA表面
我想在整數座標(x, y)
所指示的位置上寫一個vector2
到表面。下面的效果很好:
// 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
組件將被寫入。 這個稍微不直觀的行爲的原因是什麼?
這就是問題所在。雖然我想知道爲什麼讓Type = vector2無法從編譯器的參數中推導出來。 –
CUDA C編程指南(4.0)的第3.2.10.2.2節指出,表面對x座標使用字節尋址,所以仍然需要用'sizeof(float2)'乘以'x'。 –