2

CPU では、2-D 画像 (ピッチリニア) の「サブ画像」をよく使用します。これは単に「マスター」画像の特定の ROI を指しています。そのため、サブイメージに対するすべての変更は、実際には「マスター」イメージも変更します。

サブイメージから 2D イメージ (ピッチリニア) への CUDA でデバイス メモリに問題はありますか? たとえば、テクスチャをテクスチャまたはテクスチャ オブジェクトにバインドできますか? NPP ルーチンは正しく機能していますか? 特定のルーチンで特定のアラインメント (バッファーの「開始アドレス」) が必要になる可能性があるなどの問題があるためです。

私は主に安定性の問題に関心があることに注意してください。これらのサブイメージにはわずかなパフォーマンスのペナルティがあると思いますが、それは私の主な関心事ではありません。

特に、「cudaBindTexture2D」のドキュメントに記載されているバッファ ベース アドレスのアラインメント制限に興味があります

「ハードウェアがテクスチャ ベース アドレスにアライメント要件を適用するため、cudaBindTexture2D() は *offset で、目的のメモリから読み取るためにテクスチャ フェッチに適用する必要があるバイト オフセットを返します。」

「テクスチャ オブジェクト」にも必要です (CC >= 3.0 GPU の場合) ?

4

1 に答える 1

2

バインドされたテクスチャ (テクスチャ リファレンスまたはテクスチャ オブジェクト API を介して) は、データ座標とテクスチャ座標の間の直接マッピングを行うために、cudaGetDevicePropertiesによって提供されるアライメント要件を満たす必要があります。

  1. バインドされたテクスチャは、textureAlignment(バイト単位で) 経由で返されるアライメントを満たす必要があります。などによって提供される割り当てはcudaMalloc、これを満たします (割り当ての開始アドレスについて)。
  2. 2D バインド テクスチャは、(テクスチャの各行に対して) 経由で返される位置合わせを満たす必要がありますtexturePitchAlignment。(たとえば) によって提供される割り当ては、cudaMallocPitchこれを満たします。

NPP は、適切に指定された ROI で適切に動作するはずです。

ドキュメント リンクがかなり古いことに注意してください。現在のドキュメントはここにあります。

この質問/回答も興味深いかもしれません。

于 2014-09-12T18:04:47.853 に答える