私のさまざまなカーネルは、いくつかの定数データを使用します。コードを最適化するために、定数メモリの代わりにテクスチャ メモリを使用することを検討していました。これは、各スレッドが異なるデータをロードするためです (ただし、すべてのブロックで同じです)。
各スレッドのデータには、float ( M )、サイズ 3 の float のベクトル ( K )、または float の 3 行 3 列の行列 ( J ) のいずれかが含まれます。
少なくとも 2 つの選択肢があります。
- Mを 1D 配列に、Kを 2D 配列に、Jを 3D 配列に格納します。
- M、K、およびJをいくつかのマッピングを使用して線形メモリに格納します。
スレッド数が非常に少ない (N = 32) ため、どのソリューションが最適でしょうか? それは同等ですか、それともandtex1Dfetch
よりも高速ですか? CUDA 配列によってもたらされる機能 (ハードウェア補間など) は必要ありません。メモリの制限は明らかに問題ではありません。tex2D
tex3D