0

GTX760(Kepler) と GTX750Ti(Maxwell) の両方でベンチマーク (Parboil、Rodinia) を使用して実験を行いました。次に、Nvidia ビジュアル プロファイラーを使用して結果を分析しました。ほとんどのアプリケーションでは、グローバル命令の数が Maxwell アーキテクチャで最大 7 ~ 10 倍に大幅に増加します。

仕様 両方のグラフィックカード用

GTX760 6.0Gbps 2048MB 256bit 192.2GB/秒

GTX750Ti 5.4Gbps 2048MB 128bit 86.4Gb/秒

Ubuntu 14.04

CUDA ドライバー 340.29

ツールキット 6.5

ベンチマーク アプリケーションをコンパイルし (変更なし)、NVVP(6.5) から結果を収集しました。すべてを分析 > カーネル メモリ > L1/共有メモリ セクションから、グローバル ロード トランザクション数を収集しました。

ケプラー (リンク)とマクスウェル(リンク)で実行した histo のシミュレーション結果のスクリーンショットを添付しました。

Maxwell アーキテクチャでグローバル命令数が増加する理由を知っている人はいますか?

ありがとうございました。

4

1 に答える 1

4

カウンタ gld_transactions は、Kepler と Maxwell アーキテクチャ間で比較できません。また、グローバル命令の実行回数とは異なります。

Fermi/Kepler では、SM から L1 への 128 バイト リクエストの数をカウントします。これは、実行されたグローバル/ジェネリック命令ごとに 0 から 32 まで増加できます。

Maxwell では、グローバル操作はすべて TEX (統合キャッシュ) を通過します。TEX キャッシュは、Fermi/Kepler L1 キャッシュとはまったく異なります。グローバル トランザクションは、キャッシュ内でアクセスされた 32B セクターの数を測定します。これは、実行されたグローバル/ジェネリック命令ごとに 0 から 32 まで増加できます。

3つの異なるケースを見ると:

ケース 1: ワープ内の各スレッドは、同じ 32 ビット オフセットにアクセスします。

ケース 2: ワープ内の各スレッドは、128 バイトのストライドで 32 ビットのオフセットにアクセスします。

ケース 3: ワープ内の各スレッドは、そのレーン インデックスに基づいて一意の 32 ビット オフセットにアクセスします。

ケース 4: ワープ内の各スレッドは、128 バイトでアラインされた 128 バイトのメモリ範囲内の一意の 32 ビット オフセットにアクセスします。

アーキテクチャごとの各リスト ケースの gld_transcations

            Kepler      Maxwell
Case 1      1           4
Case 2      32          32
Case 3      1           8
Case 4      1           4-16

gld_transactions を見ないようにすることをお勧めします。CUDA プロファイラーの将来のバージョンでは、より実用的で過去のアーキテクチャに匹敵するさまざまなメトリックを使用する必要があります。

l2_{読み取り、書き込み}_{トランザクション、スループット} を確認することをお勧めします。

于 2015-03-24T19:51:59.243 に答える