最初に次のことを確認したいと思います。共有メモリへの基本的なグローバル メモリ トランザクションは、32 バイト、64 バイト、または 128 バイトのいずれかですが、メモリ アクセスを結合できる場合に限ります。前のトランザクションのレイテンシはすべて同じです。そうですか?
2 番目の質問: メモリ読み取りを結合できない場合、各スレッドは 4 バイトしか読み取りません (そうですか?) すべてのスレッドのメモリ アクセスはシーケンシャルになりますか?
最初に次のことを確認したいと思います。共有メモリへの基本的なグローバル メモリ トランザクションは、32 バイト、64 バイト、または 128 バイトのいずれかですが、メモリ アクセスを結合できる場合に限ります。前のトランザクションのレイテンシはすべて同じです。そうですか?
2 番目の質問: メモリ読み取りを結合できない場合、各スレッドは 4 バイトしか読み取りません (そうですか?) すべてのスレッドのメモリ アクセスはシーケンシャルになりますか?
作業しているアーキテクチャによって異なります。ただし、Fermi と Kepler では次のようになります。
ご覧のとおり、メモリアクセスにかかる時間を決定する変数がいくつかあります。一般的な経験則は次のとおりです。アクセス パターンが密集しているほど、より良い結果が得られます。ストライドやミスアライメントは、以前ほどコストがかからないため、後期段階の最適化を行っていない限り、あまり心配する必要はありません。