1

グローバル配列の要素を処理する場合 (書き込みまたは読み取り)、1 つの作業項目に 1 つのエントリがある場合、隣接する作業項目の隣接するメモリ アドレスにアクセスするとより効率的であることが知られています。これは、メモリが「ストリーミング」されているためです。

このようなアクセスの順序が逆の場合、つまり作業項目Xが のようなアドレスにアクセスする場合、パフォーマンスの問題はありますsize - 1 - Xか?

また、パフォーマンスについて考えるときは、最初の次元だけを考慮すべきですか?


私は現在、行列を回転させる必要がある GPGPU コースの宿題評価を行っています。最高のパフォーマンスを達成するには、ワークグループでこれをブロック単位で行う必要があります。アイデアは、最初にソース ブロックをローカル メモリにコピーし、ローカルで回転させてから、正しい位置に書き戻すことです。最初に転置 (対角線でのミラーリング) を実装しましたが、今はそれをミラーリングしたいと考えています。これがパフォーマンスの問題でない場合は、ミラー化されたインデックスを使用してマトリックスの結果配列に簡単にアクセスできます (この宿題のタスクには最大のパフォーマンスが必要です)。

4

0 に答える 0