2

あるコンピューター (GTX 275 を搭載) では正常に動作し、GeForce 8400 を搭載した別のコンピューターでは約 100 倍遅く動作する CUDA アプリケーションがあります。私の疑いでは、GPU ではなく CPU で実際にコードを実行する何らかのフォールバックがあるのではないかと考えています。

コードが GPU で実行されていることを実際に確認する方法はありますか?
このフォールバックはどこかに文書化されていますか?
どのような条件がそれを引き起こす可能性がありますか?

編集: コードは、8400 が持つコンピューティング機能 1.1 でコンパイルされています。

4

3 に答える 3

7

パフォーマンスのギャップが大きいというだけではないでしょうか。このリンクは、8400 が 22 ~ 62 GFlops で動作することを示し、このリンクは GTX 275 が 1010.88 GFlops で動作することを示します。

于 2009-12-22T14:15:32.147 に答える
2

これにはいくつかの理由が考えられます。

  1. エミュレーション デバイスを使用していない可能性があります。SDK からデバイス クエリ サンプルを実行できますか? ツールキットとドライバーが正しくインストールされているかどうかが表示されます。

    アプリ内からデバイスのプロパティを照会して、接続されているデバイスを確認することもできます。

  2. 8400はGTX275よりもかなり性能が落ちているので、本当かもしれませんが次のポイントを見てください。

  3. コンピューティング機能 1.1 から 1.2 以降への移行における主な変更点の 1 つは、メモリ アクセスの処理方法です。1.1 では、メモリ アクセスを結合するだけでなく、各ハーフ ワープがアライメントされていることを確認することにも細心の注意を払う必要があります。そうしないと、各スレッドが独自の 32 バイト トランザクションを発行します。1.2 以降では、アライメントはトランザクションを最小限に抑えるために適切に低下するため、それほど問題にはなりません。

    これは、8400 の低いパフォーマンスと相まって、あなたが見ているものを説明することもできます.

于 2009-12-22T14:41:43.430 に答える
1

私の記憶が正しければ、ホスト コードから利用可能なすべてのデバイスを一覧表示 (およびカーネルに使用するデバイスを選択) できます。使用可能なデバイスがソフトウェア エミュレーションであるかどうかを判断して、警告を出すことができます。

于 2009-12-22T14:12:08.437 に答える