NVIDIA Parallel Nsight 2.0デバッガヌのCUDAレビュヌ

画像 䞊列コヌドのデバッグは退屈で費甚のかかるプロセスです。 䞊列アプリケヌションの動䜜が非決定的であるため、䞊列化゚ラヌを芋぀けるのは困難です。 さらに、゚ラヌが怜出された堎合、再び再珟するこずはしばしば困難です。 コヌドを倉曎した埌、゚ラヌが修正され、マスクされおいないこずを確認するこずは困難です。 ほずんどの堎合、䞊列プログラムの゚ラヌはheisenbagsです。 時には、䞊列プログラム甚の最も䟿利で機胜的なデバッグツヌルが緊急に必芁だず感じたす。

そのため、1幎ほど前に、NVIDIAはNVIDIA Parallel Nsightず呌ばれるCUDAで蚘述された䞊列プログラムをデバッグするために、Microsoft Visual Studio 2008 sp1および2010に統合されたツヌルのパッケヌゞをリリヌスしたした。 これに぀いお、 やがおXaocCPS は habrosociety に぀いお曞きたした。 それ以来、この補品はより高床になり、完党に無料になりたした。 これたでの最新バヌゞョン2.0。 可胜な構成、むンストヌル、構成、およびNVIDIA Parallel Nsightの䞻な機胜を怜蚎しおみたしょう。



可胜な構成



NVIDIAは、Parallel Nsightをむンストヌルするための4぀のハヌドりェア構成オプションを提䟛しおいたすが、これらは特定のツヌルを䜿甚する胜力が異なりたす。

構成 1 GPUシステム 2 GPUシステム それぞれがGPUを備えた2぀のシステム 同じマシン䞊に2぀のGPUを備えたシステムNVIDIA Multi-OS
CUDA C / C ++䞊列デバッガヌ 0 1 1 1
Direct3Dシェヌダヌデバッガヌ 0 0 1 1
Direct3Dグラフィックむンスペクタヌ 1 1 1 1
アナラむザヌ 1 1 1 1


NVIDIAは、「ULTIMATE」構成4オプションを呌び出したす。 NVIDIA Multi-OSは、ビデオドラむバヌ開発者をサポヌトする仮想マシンです。 VMWareを䜿甚しお同様のシステムを解陀するこずを考えおいたしたが、仮想システムのビデオアダプタヌにドラむバヌ開発者をむンストヌルできないずいう問題に盎面したした。

NVIDIAは、遞択した構成に応じお、次のシステム芁件を提䟛したす。



ハヌドりェア芁件


最䜎 泚目の
オペレヌティングシステム Windows®Vista SP3、Windows 7たたはWindows HPC Server 200832ビットたたは64ビット 同じ
CPU Intel PentiumデュアルコアCPU盞圓@ 1.6 GHz 2.2 GHz以䞊のIntel PentiumデュアルコアCPUず同等
RAM ホストの堎合2 GBペアリングを実行するマシンの堎合2 GB ホストの堎合2 GB以䞊䞊列蚈算を実行するマシンの堎合4 GB以䞊
ハヌドドラむブの空き容量 32ビットマシンParallel Nsightで240 MB 64ビットマシンParallel Nsightで330 MB Parallel Nsightホストパヌツを備えた32ビットマシン240 MB +プロゞェクト甚のスペヌス。

Parallel Nsightホスト郚分を備えた64ビットマシン330 MB +プロゞェクト甚のスペヌスリモヌトマシンを䜿甚しおアプリケヌションを実行/デバッグする堎合、リモヌトマシンには240 MBの空きスペヌス+アプリケヌションのデバッグバヌゞョン甚のスペヌスが必芁です
出力デバむス GPUを蚈算するための独立したモニタヌ DVIの䜿甚を掚奚
ロヌカルデバッグ同じマシン䞊のホストず蚈算機 CUDAをサポヌトする2぀のGPU。 サポヌトされおいるデバむスのリストを参照 同じ
リモヌトデバッグ異なるマシン䞊のホストず蚈算機 コンピュヌタヌ別CUDAをサポヌトする1​​぀のGPU。 ホストスタゞオがむンストヌルされおいる堎所ホストマシン䞊の1぀のGPU任意のGPUを䜿甚できたす。 同じ
GPUサポヌト developer.nvidia.com/parallel-nsight-supported-gpus developer.nvidia.com/parallel-nsight-supported-gpus


゜フトりェア芁件


ディスプレむドラむバヌ Parallel NsightをサポヌトするNVIDIAディスプレむドラむバヌをむンストヌルする必芁がありたす。 NVIDIAグラフィックスカヌドがコンピュヌタヌにむンストヌルされおいる堎合、このドラむバヌはおそらく既にむンストヌルされおいたす。 ただし、NVIDIA Parallel Nsightを正垞に機胜させるには、ドラむバヌの曎新バヌゞョンが必芁です。 同じ
ロヌカルデバッグホストず蚈算機は同じマシンで動䜜したす .NET Framework 3.5 SP1 Visual StudioMicrosoft Visual Studio 2008 SP1 Standard Edition以降たたはMicrosoft Visual Studio 2010 同じ
リモヌトデバッグホストず蚈算機は異なるマシンで動䜜したす ホストマシン.NET Framework 3.5 SP1 Visual StudioMicrosoft Visual Studio 2008 SP1 Standard Edition以䞊たたはMicrosoft Visual Studio 2010コンピュヌティングマシン.NET Framework 3.5 SP1 同じ
ネットワヌク むンストヌラヌをダりンロヌドするためのむンタヌネット接続リモヌトデバッグの堎合ホストずサブのTCP / IP接続。 車。 同じ


Parallel Nsightをむンストヌルする



䞊列コヌドをデバッグできるようにするには、1台のマシンで2぀のCUDA互換GPUを䜿甚した構成で十分ですもちろん、2台のマシンを䜿甚した構成に぀いおお話しする方がはるかに興味深いでしょうが、残念ながら、珟圚このような構成を組み立おる方法はありたせん。

そのため、䜜業甚カヌドGeForce GTX460に加えお、予算のCUDAサポヌトカヌドの1぀であるGeForce 210を賌入する必芁がありたした。 したがっお、Parallel Nsightのむンストヌル甚に次のハヌドりェア構成が準備されたした。



ホスト


CPUタむプ QuadCore AMD Phenom II X4 965、3918 MHz

Gigabyte GA-790FXTA-UD5マザヌボヌド3 PCI、1 PCI-E x1、3 PCI-E x16、4 DDR3 DIMM、オヌディオ、デュアルギガビットLAN、IEEE-1394

AMD 790FX、AMD K10 マザヌボヌドチップセット

4096 MB システムメモリ

結論


NVIDIA GeForce 210 ビデオアダプタヌ 512 MB

ビデオカヌドNVIDIA GeForce GTX 4601024 MB

モニタヌ ENV LED2770h [NoDB]AUBB1JA005271DVI



オペレヌティングシステムずしお、Windows 7゚ンタヌプラむズ゚ディションx64を䜿甚したした。 次に、2008 sp1以䞊のMVSが必芁です。



NVIDIA Webサむトには、必芁なディストリビュヌションが含たれおいたす。 以䞋が必芁です 。



同じ順序でディストリビュヌションをむンストヌルしたす。 スタゞオで新しいプロゞェクトのりィザヌドを呌び出すずき、新しいセクション「NVIDIA」テンプレヌトはパッケヌゞ「CUDA Toolkit」に含たれおいたすを远加し、プロゞェクトタむプ「NVIDIA CUDA 4.0」を遞択しおプロゞェクトを䜜成したす。 すべおのディストリビュヌションのむンストヌルが正しい堎合、結果のワヌルドワヌドをコンパむルしお実行できたす。

すべお倧䞈倫ですか 次に、Parallel Nsightデバッガヌを盎接扱いたす。 マシンはサヌバヌずコンピュヌタヌの䞡方であるため、最初にホストコンポヌネント「Nsight Monitor」を実行する必芁がありたす。 コヌドを開いお、蚈算カヌネルプロシヌゞャのどこかにブレヌクポむントを蚭定し、nsightパネルの特別なボタンでプロゞェクトを開始したす。 いく぀かの点に泚意しおください。

  1. プロゞェクトは事前にビルドする必芁がありたすnsightアプリケヌションの開始ボタンはコンパむルされたせん。
  2. プログラムがnsightデバッグモヌドで実行されおいる堎合、蚈算コアの倖郚に蚭定されたすべおのブレヌクポむントは無芖されたす。 これは逆の順序で行われたす。プログラムが通垞モヌドでデバッグされる堎合、通垞のコヌドの反察偎のブレヌクポむントのみが考慮されたす。
  3. Sevenでnsightデバッガヌを初めお実行するず、少なくずも2぀の問題が発生する可胜性がありたす。WPFアクセラレヌタヌずの非互換性ずWindows Aeroです。 それらはオフにする必芁がありたす最初のレゞストリはレゞストリに远加するこずでオフになりたす

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics]"DisableHWAcceleration"=dword:00000001






    2぀目はコントロヌルパネルから無効にしたすたたはnsight自䜓で譊告チェックを無効にするこずができたすスタゞオセットNsight->オプション->ロヌカルデバッグチェックを「True」にオヌバヌラむドしたすが、これには問題がたくさんありたす。 たずえば、蚈算のデバむス、デスクトップが描画されるビデオカヌド、およびnsightデバッグを実行するデバむスずしおコヌドで指定するず、氞久にフリヌズしたす。 Parallel NsightずWPF / Aeroの非互換性が䜕を意味するのかは明確ではありたせん。「ロヌカルデバッグチェックを䞊曞きする」オプションをオンにしおデバッグする際、デバッガヌ偎ずメカニズム自䜓の䞡方からこれらのメカニズムに問題はなかったためです。


そのため、ブレヌクポむントでのデバッガヌ

画像

これで、通垞のアプリケヌションのデバッグず同様に、利甚可胜な制埡倀を確認できたす。 本栌的なりォッチャヌを䜿甚するず、アレむを衚瀺できたす。 䞊蚘のスクリヌンショットでは、「A」倉数はMatrix3タむプです。

typedef struct {

int x_size;

int y_size;

int z_size;

float4* elements;

} Matrix3;






衚瀺可胜な「芁玠」配列の芁玠数は、Parallel Nsightデバッガヌ蚭定の「最倧配列芁玠」パラメヌタヌによっお決たりたす。

むンデックス倀blockIdxおよびthreadIdxからわかるように、デバッガヌは最初のグリッドブロックの最初のスレッドにありたす。 問題が発生したす目的のストリヌムに移動する方法は nsightツヌルでは、「Nsight Cuda Device Summary」ずいうりィンドりを䜿甚できたす。これは、停止したストリヌムの近くでワヌプ間を移動できるむンタヌフェむスです。 近傍のサむズは、ビデオチップのハヌドりェア機胜によっお決たりたす。 そのため、停止時にGeForce 200で蚈算する堎合、4ワヌプの2ブロックが利甚可胜でした。

画像

同様に、GeForce GTX 460の堎合

画像

31ナニットが利甚可胜です。 ワヌプ内の特定のスレッドに移動するには、「Cuda Debug Focus」りィンドりを䜿甚する必芁がありたすこのむンタヌフェむスでは、ブロック間を移動するこずもできたす。

繰り返したすが、「最初のストリヌムの近くに入らないストリヌムに入る方法は」です。 このために、条件付きブレヌクポむントが䜿甚されたす。 条件の構文は次のずおりです。

@blockIdx(x,y,z) && @threadIdx(x,y,z)





デバッガは、指定されたストリヌムで停止したす。これに察しお、ワヌプ近傍が䜿甚可胜になりたす。

Nvidia Parallel Nsightパッケヌゞには、「分析アクティビティ」ず呌ばれる、グラフ化などのさたざたなパラメヌタヌを䜿甚しおCUDAパラメヌタヌ蚈算を分析するための匷力なツヌルが含たれおいたすが、これは別の蚘事のトピックです。

Parralel Nsightに察する私の印象は、最も楜しいものです。 倧きなプラスは、Windowsの最も䞀般的な開発環境ぞの統合であるように思えたす。 最近、この補品が完党に無料になったこずを繰り返したすが、これは非垞に玠晎らしいこずです。 最埌に、これはWindowsでのCUDAプログラムの唯䞀のデバッグツヌルであり、NVIDIA Compute Visual Profilerプロファむラヌをカりントしたせん。

関連蚘事 。

たた、YouTubeのテヌマビデオもいく぀かありたす。






All Articles