0

AMD GPU を使用しており、'Matrix Transpose' の例を実装したいと考えています。実装の 2 つのシナリオを想像してください。

1)

  • グローバル メモリからの読み取り (現在の場所)

  • グローバル メモリへの書き込み (ターゲットの場所)

2)

  • グローバルメモリから読み込み(現在位置)

  • ローカルメモリへの書き込み

  • ローカル メモリから読み取る

  • グローバルメモリへの書き込み(目標位置)

両方のソリューションに最適なワーク グループ サイズを選択したとします。ちなみに、2 番目のアルゴリズムは、ローカル メモリへの共同書き込みを利用しています。

最後に、驚くべきことに、2 番目のシナリオは 1 番目のシナリオの 2 倍の速さであることが判明しました。なぜなのか理解できませんか?

1 つ目では、グローバル メモリとの間で 1 回の読み取りと 1 回の書き込みが行われ、2 つ目では、グローバル メモリ操作に加えて、ローカル メモリとの間で 1 回の読み取りと 1 回の書き込みが行われていることがわかります。それは速くなりますか?

この場合、誰かが私を助けてくれれば幸いです。

前もって感謝します :-)

4

1 に答える 1