11

私は画像処理アプリを作成しており、ピクセルデータを非合体でフェッチする必要があります。

最初に、グローバル メモリを使用してアルゴリズムを実装しました。後で、テクスチャ メモリを使用して再実装しました。驚いたことに、それは遅くなりました!cudaMalloc/text1Dfetch スタイルに問題があるのではないかと思い、cudaArray/tex2D に変更しました。何も変わっていません。

その後、シェーン・クックの「CUDA プログラミング」に出くわしました。そこで彼は次のように書いています。

コンピューティング 1.x ハードウェアにはキャッシュがないため、SM ごとに 6 ~ 8K のテクスチャ メモリが、そのようなデバイスでデータを真にキャッシュする唯一の方法を提供します。ただし、Fermi とその最大 48 K の L1 キャッシュと最大 768 K の共有 L2 キャッシュの出現により、キャッシュ プロパティのためのテクスチャ メモリの使用はほとんど時代遅れになりました。前世代のコードとの下位互換性を確保するために、Fermi にはテクスチャ キャッシュが引き続き存在します。

GeForce GT 620M (Fermi、compute cap. 2.1) を持っています。

そこでプロのアドバイスが欲しい!パフォーマンスを最適化しようとしているテクスチャ キャッシュを使用して、テクスチャ メモリをさらに掘り下げる必要がありますか? それとも、グローバル メモリと L1/L2 キャッシュに固執する必要がありますか?

4

1 に答える 1