1

トピックが述べているように、デバッガーを動作させることができません。以下は、実行した一連の手順です。

注: Cuda 5.0 がインストールされており、NSight ビジュアル スタジオ エディション 3.0 がインストールされています。GPU単体でデバッグできるようになったと聞いたことがあります。5.0 は問題ないと思いますが、5.5 のリリース候補版は必要ありませんか?

1)サイトの指示に従って、コードを次のように変更しました。

        CudafyModes.Target = eGPUType.Cuda;
        CudafyModes.DeviceId = 0;
        CudafyTranslator.Language = eLanguage.Cuda;
        CudafyModule km = CudafyTranslator.Cudafy(eArchitecture.sm_20);

        //Included this line.
        CudafyTranslator.GenerateDebug = true;

        _gpu = CudafyHost.GetDevice(eGPUType.Cuda);
        _gpu.LoadModule(km);

2) この直後にブレークポイントを設定します。

3) ブレークポイントに到達すると、デバッグを停止しました。

4) ソリューション エクスプローラーで [すべてのファイルを表示] を選択すると、「CUDAFYSOURCETEMP.cu」ファイルが見つかりました。

5) 右クリックして [プロジェクトに追加] を選択します。

6) NSIGHT HUD Launcher 3.0 を開きます。

7) 次のように設定します。

画像

8) [OK] をクリックします。

9) CUDAFYSOURCETEMP.cu をダブルクリックし、コードにブレークポイントを設定します。

10) NSight Monitor に移動し、[NSight Monitor Ooption] -> CUDA をクリックして、次のように設定します。

画像

11) VS2010 に戻り、NSight-> Start Cuda Debugging を選択します。

それが完了したら、カーソルを変数の上に置き、ブレークポイントに到達したら何も表示されません。何かを示しているのは、blockDim、blockIdx、および threadIdx だけです。

また、CUDA WarpWatch1 ウィンドウを開き、変数を入力しましたが、「名前 "num2" を解決できませんでした。

画像

ステップか何かが欠けていますか?

編集コンパイル中の出力ウィンドウからの出力は次のとおりです。

スレッド 'vshost.LoadReference' (0x1f78) はコード 0 (0x0) で終了しました。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\FrazMann\Desktop\Market Adj Entry CUDA - MK2\FrazerMann.Profiler.UserInterface\bin\x64\Debug\ FrazerMann.Profiler.UserInterface.exe'、シンボルが読み込まれました。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\FrazMann\Desktop\Market Adj Entry CUDA - MK2\FrazerMann.Profiler.UserInterface\bin\x64\Debug\ Cudafy.NET.dll」「FrazerMann.Profiler.UserInterface.vshost.exe」(マネージド (v4.0.30319)): ロードされた「C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Numerics\v4.0_4.0.0」 .0__b77a5c561934e089\System.Numerics.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプション ' ジャスト マイ コード」が有効になっています。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.Data.OracleClient\v4.0_4.0.0.0__b77a5c561934e089\System .Data.OracleClient.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.Web\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web .dll」「FrazerMann.Profiler.UserInterface.vshost.exe」(マネージド (v4.0.30319)): ロードされた「C:\Windows\Microsoft.Net\assembly\GAC_64\System.Transactions\v4.0_4.0.0.0__b77a5c561934e089\ System.Transactions.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices .dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices .Wrapper.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。「FrazerMann.Profiler.UserInterface.vshost.exe」(マネージド (v4.0.30319)): 「匿名でホストされた DynamicMethods アセンブリ」「FrazerMann.Profiler.UserInterface.vshost.exe」を読み込みました (マネージド (v4.0.30319)): 「C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0 を読み込みました。 0__b03f5f7f11d50a3a\Accessibility.dll' 'FrazerMann.Profiler.UserInterface.vshost.exe' (マネージド (v4.0.30319)): ロードされた 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.SqlXml\v4.0_4 .0.0.0__b77a5c561934e089\System.Data.SqlXml.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xaml\v4.0_4.0.0.0__b77a5c561934e089\System.Xaml .dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.ComponentModel.Composition\v4.0_4.0.0.0__b77a5c561934e089\System .ComponentModel.Composition.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.Build.Framework\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft .Build.Framework.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。「FrazerMann.Profiler.UserInterface.vshost.exe」(マネージド (v4.0.30319)): 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Caching\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.Caching.dll' を読み込み、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.ApplicationServices\v4.0_4.0.0.0__31bf3856ad364e35\System .Web.ApplicationServices.dll''FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.DirectoryServices.Protocols\v4. 0_4.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.Protocols.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.DirectoryServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices .dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。FrazerMann.Profiler.UserInterface.TaskManager x threadIdx x blockIdx x blockDim Length Length x threadIdx x blockIdx x blockDim Length x threadIdx x blockIdx x blockDim GetLength x threadIdx x blockIdx x blockDim QuickSortOfValues1 x threadIdx x blockIdx x blockDim QuickSortOfValues1 QuickSortOfValues1 FrazerMann.Profiler.UserInterface. TaskManager/o__SiteContainer0 コンパイラ バージョン: v5.0 Net\assembly\GAC_MSIL\System.DirectoryServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。FrazerMann.Profiler.UserInterface.TaskManager x threadIdx x blockIdx x blockDim Length Length x threadIdx x blockIdx x blockDim Length x threadIdx x blockIdx x blockDim GetLength x threadIdx x blockIdx x blockDim QuickSortOfValues1 x threadIdx x blockIdx x blockDim QuickSortOfValues1 QuickSortOfValues1 FrazerMann.Profiler.UserInterface. TaskManager/o__SiteContainer0 コンパイラ バージョン: v5.0 Net\assembly\GAC_MSIL\System.DirectoryServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.DirectoryServices.dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。FrazerMann.Profiler.UserInterface.TaskManager x threadIdx x blockIdx x blockDim Length Length x threadIdx x blockIdx x blockDim Length x threadIdx x blockIdx x blockDim GetLength x threadIdx x blockIdx x blockDim QuickSortOfValues1 x threadIdx x blockIdx x blockDim QuickSortOfValues1 QuickSortOfValues1 FrazerMann.Profiler.UserInterface. TaskManager/o__SiteContainer0 コンパイラ バージョン: v5.0 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -m64 -arch=sm_20 "C :\Users\FrazMann\Desktop\Market Adj Entry CUDA - MK2\FrazerMann.Profiler.UserInterface\bin\x64\Debug\CUDAFYSOURCETEMP.cu" -o "C:\Users\FrazMann\Desktop\Market Adj Entry CUDA - MK2\ FrazerMann.Profiler.UserInterface\bin\x64\Debug\CUDAFYSOURCETEMP.ptx" --ptx CUDAFYSOURCETEMP.cu tmpxft_000010d0_00000000-5_CUDAFYSOURCETEMP.cudafe1.gpu tmpxft_000010d0_00000000-10_CUDAFYSOURCETEMP.cudafe2.cudafe

'FrazerMann.Profiler.UserInterface.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Dynamic\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Dynamic .dll'、シンボルの読み込みをスキップしました。モジュールが最適化され、デバッガー オプションの [Just My Code] が有効になります。

4

2 に答える 2

1

-G nvcc コンパイラ ドライバーへの切り替えを指定しない限り、シンボルは存在せず、デバッガーはシンボルなしで必要なこと (特定の変数値の識別または表示) を実行できません。

-Gcudafy 内の nvcc コンパイル フェーズにスイッチを追加する方法を他の人が尋ねたようで、ここで 1 つのアプローチが議論されているようです。

于 2013-07-18T00:33:40.453 に答える
0

あなたが犯している間違いは、呼び出しCudafyTranslator.GenerateDebug = true;の後に置くことです。CudafyTranslator.Cudafy

これを行うと、トランスレータはすでにシンボルなしで GPU バイナリを生成しているので、シンボルが必要であることを伝えます。

これを修正するには、呼び出しCudafyTranslator.GenerateDebug = true;の前に置くだけです。CudafyTranslator.Cudafy

于 2015-10-20T13:02:37.967 に答える