Cカーネル用のCUDAデバイスの処理トレードオフを定量化する方法は?

Gearoidマーフィー:

最近、コアの数が3倍になったことでCUDAコードのパフォーマンスが大幅に向上することを期待して、GTX480からGTX680にアップグレードしました。恐ろしいことに、GTX680でメモリを集中的に使用するCUDAカーネルの実行速度が30〜50%遅いことがわかりました。

これは厳密にはプログラミングの問題ではありませんが、さまざまなデバイスでのCUDAカーネルのパフォーマンスに直接影響することを理解しています。誰でもCUDAデバイスの仕様と、それらを使用してCUDA Cカーネルでのパフォーマンスを推定する方法を理解できますか?

ロジャーダール:

質問に対する正確な回答ではありませんが、GK104(Kepler、GTX680)とGF110(Fermi、GTX580)のパフォーマンスを理解するのに役立つ可能性があるいくつかの情報:

フェルミでは、コアは残りのロジックの2倍の周波数で実行されます。ケプラーでは、同じ周波数で実行されます。フェルミと比較してリンゴ同士の比較をもっと行いたい場合、ケプラーのコア数は事実上半分になります。したがって、GK104(ケプラー)は1536/2 = 768の「Fermi相当のコア」となります。これは、GF110(Fermi)の512コアよりも50%多いだけです。

トランジスタ数を見ると、GF110には30億個、GK104には35億個のトランジスタがあります。したがって、Keplerのコア数は3倍ですが、トランジスタの数はわずかに多くなっています。したがって、Keplerの「Fermi相当コア」はFermiよりも50%だけ多いだけでなく、これらの各コアはFermiのコアよりもはるかに単純でなければなりません。

したがって、これらの2つの問題は、多くのプロジェクトがKeplerへの移植時に速度が低下する理由を説明していると考えられます。

さらに、GK104はグラフィックスカード用に作成されたKeplerのバージョンであり、スレッド間の連携がFermiよりも遅くなるように調整されています(そのような連携はグラフィックスにとってそれほど重要ではないため)。上記の事実を考慮した後の潜在的な潜在的なパフォーマンスの向上は、これによって打ち消される可能性があります。

また、倍精度浮動小数点のパフォーマンスの問題もあります。Teslaカードで使用されるGF110のバージョンは、単精度の1/2のパフォーマンスで倍精度浮動小数点を実行できます。チップがグラフィックスカードで使用される場合、倍精度のパフォーマンスは人工的に単精度の1/8に制限されますが、これはGK104の1/24倍精度のパフォーマンスよりもはるかに優れています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Owinでデフォルトの未処理の例外出力をオーバーライドする方法は?

分類Dev

C ++ 98、C ++ 11のクロスコンパイル可能なコードでオーバーライドを処理するエレガントな方法は?

分類Dev

非同期を処理し、デフォルトのオーバーライドで待機する方法

分類Dev

バットファイルのスペースを処理する方法は?

分類Dev

datatablesサーバー処理を使用してテーブル列のデータをフォーマット/カスタマイズする方法は?

分類Dev

フェイルオーバートランスポートでActivemqの最大フレームサイズの例外を処理する方法

分類Dev

.MOVファイルのオーディオをバッチ処理する方法は?

分類Dev

オフライン時にローカルのmongodbデータベースを使用し、オンライン時にリモートのmongodbサーバーに同期するmeteorアプリを処理するにはどうすればよいですか?

分類Dev

モデルにフィードするためのIDの文字列を含むオブジェクトタイプデータを処理する方法は?

分類Dev

4.2.0Linuxカーネル用のBlackMagicドライバーをインストールする方法

分類Dev

Camelでフェイルオーバーロードバランサーの障害を処理する方法

分類Dev

ノードとドッカー-バベルまたはタイプスクリプトのビルドを処理する方法?

分類Dev

このテーブルオーバーフローを処理する方法は?

分類Dev

Rのデータフレームで文字タイプの空のレコードを処理する方法は?

分類Dev

Wagtail:デフォルトのImageEmbedHandlerをオーバーライドする方法は?

分類Dev

オブジェクトの破棄でネストされたデフォルトパラメータを処理する方法は?

分類Dev

バックエンドでPUT httpリクエストのオプションフィールドを処理する最良の方法は何ですか

分類Dev

カーネルアップデートでビデオドライバを再インストールする必要があるのはなぜですか?

分類Dev

カーネルアップデートでビデオドライバを再インストールする必要があるのはなぜですか?

分類Dev

課題:データベースからのデバイスユーザー/プロファイル/アカウントの削除を処理するための最良の方法は?

分類Dev

我々は、複数のスレッドが個々のファイルのデータを処理するために使用しながら、順次春のバッチを使用して複数のファイルを処理することができますか..?

分類Dev

「デフォルトパラメータのオーバーライド」を処理する小さなコードのリファクタリング

分類Dev

デフォルトのActiveRecordジェネレーターをオーバーライドする

分類Dev

Laravelコードカバレッジ:デフォルトのBroadcastServiceProviderをテストする方法は?

分類Dev

Bootstrapのデフォルトのcssスタイルルールをオーバーライドする方法

分類Dev

スタックドライバーログをローカル処理用のファイルにエクスポートするにはどうすればよいですか?

分類Dev

デフォルトのファイルマネージャー(nautilus)を有効にしてデスクトップアイコンを処理する方法

分類Dev

テンプレートカーネル関数のアドレスをCUDA関数に渡す方法は?

分類Dev

C#でジェネリック型のプライベート静的フィールドを処理する良い方法はありますか?

Related 関連記事

  1. 1

    Owinでデフォルトの未処理の例外出力をオーバーライドする方法は?

  2. 2

    C ++ 98、C ++ 11のクロスコンパイル可能なコードでオーバーライドを処理するエレガントな方法は?

  3. 3

    非同期を処理し、デフォルトのオーバーライドで待機する方法

  4. 4

    バットファイルのスペースを処理する方法は?

  5. 5

    datatablesサーバー処理を使用してテーブル列のデータをフォーマット/カスタマイズする方法は?

  6. 6

    フェイルオーバートランスポートでActivemqの最大フレームサイズの例外を処理する方法

  7. 7

    .MOVファイルのオーディオをバッチ処理する方法は?

  8. 8

    オフライン時にローカルのmongodbデータベースを使用し、オンライン時にリモートのmongodbサーバーに同期するmeteorアプリを処理するにはどうすればよいですか?

  9. 9

    モデルにフィードするためのIDの文字列を含むオブジェクトタイプデータを処理する方法は?

  10. 10

    4.2.0Linuxカーネル用のBlackMagicドライバーをインストールする方法

  11. 11

    Camelでフェイルオーバーロードバランサーの障害を処理する方法

  12. 12

    ノードとドッカー-バベルまたはタイプスクリプトのビルドを処理する方法?

  13. 13

    このテーブルオーバーフローを処理する方法は?

  14. 14

    Rのデータフレームで文字タイプの空のレコードを処理する方法は?

  15. 15

    Wagtail:デフォルトのImageEmbedHandlerをオーバーライドする方法は?

  16. 16

    オブジェクトの破棄でネストされたデフォルトパラメータを処理する方法は?

  17. 17

    バックエンドでPUT httpリクエストのオプションフィールドを処理する最良の方法は何ですか

  18. 18

    カーネルアップデートでビデオドライバを再インストールする必要があるのはなぜですか?

  19. 19

    カーネルアップデートでビデオドライバを再インストールする必要があるのはなぜですか?

  20. 20

    課題:データベースからのデバイスユーザー/プロファイル/アカウントの削除を処理するための最良の方法は?

  21. 21

    我々は、複数のスレッドが個々のファイルのデータを処理するために使用しながら、順次春のバッチを使用して複数のファイルを処理することができますか..?

  22. 22

    「デフォルトパラメータのオーバーライド」を処理する小さなコードのリファクタリング

  23. 23

    デフォルトのActiveRecordジェネレーターをオーバーライドする

  24. 24

    Laravelコードカバレッジ:デフォルトのBroadcastServiceProviderをテストする方法は?

  25. 25

    Bootstrapのデフォルトのcssスタイルルールをオーバーライドする方法

  26. 26

    スタックドライバーログをローカル処理用のファイルにエクスポートするにはどうすればよいですか?

  27. 27

    デフォルトのファイルマネージャー(nautilus)を有効にしてデスクトップアイコンを処理する方法

  28. 28

    テンプレートカーネル関数のアドレスをCUDA関数に渡す方法は?

  29. 29

    C#でジェネリック型のプライベート静的フィールドを処理する良い方法はありますか?

ホットタグ

アーカイブ