2D テクスチャは、画像処理アプリケーションにおける CUDA の便利な機能です。ピッチ リニア メモリを 2D テクスチャにバインドするには、メモリを整列する必要があります。cudaMallocPitch
アラインされたメモリ割り当てに適したオプションです。私のデバイスでは、 によって返されるピッチcudaMallocPitch
は 512 の倍数です。つまり、メモリは 512 バイトにアラインされています。
デバイスの実際のアライメント要件は、cudaDeviceProp::texturePitchAlignment
私のデバイスでは 32 バイトであると判断されます。
私の質問は:
cudaMallocPitch
2D テクスチャの実際のアライメント要件が 32 バイトである場合、 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