2D纹理在CUDA中是图像处理应用程序中的有用特性。要将线性内存绑定到2D纹理,必须对齐内存。
设备的实际对齐要求由
我的问题是:
如果2D纹理的实际对齐要求为32个字节,那么为什么
这不是浪费内存吗?例如,如果我创建一个大小为513 x 100的8位图像,则将占用1024 x 100字节。
我在以下系统上获得此行为:
1:Asus G53JW + Windows 8 x64 + GeForce GTX 460M + CUDA 5 + Core i7 740QM + 4GB RAM
2:Dell Inspiron N5110 + Windows 7 x64 + GeForce GT525M + CUDA 4.2 + Corei7 2630QM + 6GB RAM
cudaMallocPitch
是内存对齐分配的不错选择。 在我的设备上,cudaMallocPitch
返回的间距是512的倍数,即内存对齐为512字节。设备的实际对齐要求由
cudaDeviceProp :: texturePitchAlignment
确定,该值在我的设备上为32字节。我的问题是:
如果2D纹理的实际对齐要求为32个字节,那么为什么
cudaMallocPitch
会返回512字节对齐的内存?这不是浪费内存吗?例如,如果我创建一个大小为513 x 100的8位图像,则将占用1024 x 100字节。
我在以下系统上获得此行为:
1:Asus G53JW + Windows 8 x64 + GeForce GTX 460M + CUDA 5 + Core i7 740QM + 4GB RAM
2:Dell Inspiron N5110 + Windows 7 x64 + GeForce GT525M + CUDA 4.2 + Corei7 2630QM + 6GB RAM