5

Visual Studio 2010、Parallel nsight 2.2、cuda 4.2 を学習に使用しています。私のシステムは Windows 8 pro x64 です。VS で cuda コンピューティング SDK に含まれている基数ソート プロジェクトを開き、エラーなしでコンパイルしました。ソートコードは推力ライブラリを使用します:

if(keysOnly)
    thrust::sort(d_keys.begin(), d_keys.end());
else 
    thrust::sort_by_key(d_keys.begin(), d_keys.end(), d_values.begin());

sort 関数を cuda カーネルにディスパッチする方法を知りたいので、上記の行の前にブレークポイントを追加して、プロジェクトをデバッグ モードでコンパイルしました。しかし、cudaデバッグにparallel nsightを使っていると、必ず「ブレークポイントにソース対応なし」というエラーが出ます。

だから、私の問題は次のとおりです。

  1. 並列nsightを使用してビジュアルスタジオでcuda推力プログラムをデバッグするには?
  2. または、別の方法を使用して、cuda カーネルまたは他の機能に対する cuda 推力 dipatch の機能を知る方法を教えてくれる人はいますか?

アドバイスをいただければ幸いです。

4

1 に答える 1

2

通常、CUDA でデバイス コードをデバッグするには、以下を渡す必要があります。

-G -g

nvcc に切り替えます。ただし、このモダリティはスラスト コードではサポートされていません。スラスト インクルード ファイルの構造に従うことで、スラスト コードがデバイスにディスパッチされる方法を理解できます。スラストは完全にテンプレート化されたコードであるため、心配するライブラリはありません。しかし、それは挑戦的な提案です。ptx を生成するようにコンパイラに指示することもできます。

-ptx

これは 、cuda コードがコンパイルされる中間コード タイプの 1 つです。ただし、それを解析するのも簡単なことではありません。 このリンクは、Thrust でデバッグするためのいくつかの代替アイデアを提供します。

于 2012-11-16T16:05:07.653 に答える