0

nvcc コマンドを使用してコードを実行すると、正しい出力が得られましたが、nsight Eclipse で同じコードを実行すると、間違った出力が得られました。なぜこの動作なのか、誰もが知っています。


最後に、配列の割り当ての 1 つに問題があることがわかりました。コマンド ラインでは問題が発生しませんが、nsight では問題が発生します。

4

1 に答える 1

1

Nsight EE は、プロジェクト設定に基づいて make ファイルを生成し、OS の make ユーティリティを呼び出してプロジェクトをビルドすることにより、プロジェクトをビルドします。PATH にある nvcc コンパイラを使用していますが、NVCC コンパイラ 5.0 (同じツールキット配布の一部) で導入されたいくつかの新しいオプションに依存しています。

Nsight Eclipse でクリーン リビルドを実行してください。アプリケーションのビルドに使用されたコマンド ラインが出力されます。次に、そのコマンド ラインを外部で使用するコマンド ラインと比較できます。考えられる違いは次のとおりです。

  1. Nsight は、デバッグ モードとリリース モードでビルドするときに、デバッグ フラグと最適化フラグを指定します。
  2. デフォルトでは、Nsight は新しいプロジェクトをシステムで検出されたハードウェア用にビルドするように設定します。NVCC のデフォルトは SM 1.0 です。
  3. Nsight で使用されるコンパイラとコマンド ラインから使用されるコンパイラが同じであることを確認してください。システムに異なるコンパイラ (4.x と 5.0 など) がインストールされていると、わずかに異なるコードが生成される可能性があります。

いずれにせよ、コードに何らかのバグがあり、さまざまなコンパイル設定で現れる可能性があります。プログラムでCUDA memcheckを実行して、隠れたバグがないことを確認することをお勧めします。

于 2013-01-08T17:10:10.303 に答える