1

Visual Studio 2010 で実行している cuda (v4.2) プログラムに、さまざまなコマンド ライン パラメーターを渡します。nsight (v2.2) を実行するときに、ホスト コンパイラが同じパラメーターを参照するようにします。(プロジェクトを右クリック) -> nsight ユーザー設定 -> コマンドライン引数でこれを行う必要があると思いますが、まだ nvcc をクラッシュさせない構文を見つけることができていません。どういうわけか「--run-args」の周りに配置されていると思いますか?

** 明確化、以下のコメントの後:

VS を直接デバッグするときは、プロパティ ページ/コマンド引数を使用してコマンド引数を入力すると、すべて正常に動作します。しかし、NSight を介して、それは無視されるので、私の質問は、それを行う方法ですか? コンパイラについての私の話では、nsight が NVCC を実行し、非 CUDA コードの裏で MSVC を呼び出すことを前提としています。したがって、NSight は、おそらく上記のオプションを介して、コマンド ライン パラメータを VS に渡す必要があると思います。すべてが合理的であると仮定すると、「nsight ユーザー設定 -> コマンドライン引数」内で単に構文が間違っていると思われ、他の誰かがここで成功したかどうか疑問に思っていました。より明確ですか?

4

2 に答える 2

1

コマンドライン引数をnvccを介してcl.exeに渡そうとしているのか、コマンドライン引数をアプリケーションに渡そうとしているのかは、VisualStudioからコマンドNsightCUDA Debugger(Nsight | Start CUDA Debugging)を使用して起動したときに不明です。

.cuファイルをcl.exeにコンパイルするときにコマンドライン引数をcl.exeに渡すには

  1. ソリューションエクスプローラーで.cuファイルを右クリックします
  2. プロパティコマンドを実行する
  3. 「filename.cu」プロパティページでa。左側のペインで「CUDAC/C++」「ホスト」を選択しますb。「追加のコンパイラオプション」または「プリプロセッサ定義」でcl.exeに渡すパラメータを追加します

プリプロセッサ定義は、nvcc.exeとcl.exeの両方に移動します。追加のコンパイラオプションが-Xcompilerオプションに追加されます。

Nsight | StartCUDADebuggingを使用してアプリケーションを起動したときにコマンドライン引数をアプリケーションに渡すには

  1. ソリューションエクスプローラーでプロジェクトを右クリックします(これがスタートアッププロジェクトであることを確認してください)
  2. Nsightユーザープロパティコマンドを実行します
  3. [NVIDIA NSightユーザー設定:]ダイアログでa。左側のペインで[起動]を選択しますb。右側の「コマンドライン引数」フィールドに引数を指定します。

これらのオプションは、(Nsight | CUDAデバッグの開始)を使用してアプリケーションを起動したときにアプリケーションに渡されます。

Debug | Start*Debuggingを使用してアプリケーションを起動したときにコマンドライン引数をアプリケーションに渡すには

  1. ソリューションエクスプローラーでプロジェクトを右クリックします(これがスタートアッププロジェクトであることを確認してください)
  2. プロパティコマンドを実行します
  3. [プロパティページ]ダイアログでa。左側のペインで[デバッグ]を選択しますb。右側のペインで、[コマンド引数]フィールドに引数を追加します

プロジェクトのプロパティとNsightユーザーのプロパティを編集するときは、ダイアログの上部で構成とプラットフォームを指定してください。

Nsight VSEビルドシステムは、nvcc--runおよび--run-argsオプションを使用しません。デバッグコマンドを使用して起動する場合、プロセスはdevenv.exeによって起動されます。Nsight | StartCUDADebuggingまたはNsightAnalysisToolsを使用して起動する場合、アプリケーションはNsight.Monitor.exeによって起動されます。

于 2012-10-29T01:03:20.007 に答える
0

手伝いたいのですが、混乱しています。VSでホストコードに実行時引数を渡すことについて話します。次に、コンパイラに同じパラメータを表示させたいと言います。私はあなたがコンパイラを意味しないと思います。最初にVSでプロジェクトをビルドします(ビルドのデバッグバージョンを使用)。(そして、私はすでに.cuをptxファイルにコンパイルしているので、Nsightに入るときにnvccは呼び出されません。)次に、Nsightを呼び出すとこのビルドが実行されます。実行時の引数を指定する必要はありませんでした。VSプロジェクトのデバッグの下にコマンドライン引数を指定する場所があります。疑問はありますが、Nsightの起動時に使用されるかもしれません。また、引用するNsightユーザー->コマンドライン引数の入力があります。私は後者が確かにそれを行う正しい方法だと思います。おそらくあなたの問題は、Nsightを開始する前にプロジェクトを完全にビルドする必要があるということです。

于 2012-10-27T18:27:14.730 に答える