NEXUSの強力なトレースシステム

基本的にはNEXUSはクライアント/サーバーモデルで実行される。つまり、デバッグ対象PCとデバッグをモニタリングするPCとをネットワークで接続して実行することになる。なので、デバッグ対象PCは実際にアプリケーション動作を想定したスペックのNVIDIA製GPU搭載PCである必要がある。しかし、モニタリングする側のデバッグPCはノートPCでも、それこそ非力な他社製GPUが搭載されたPCでもかまわない。

PCが一台しかない場合も、NEXUSを利用することは出来る。その際には2基のGPUが必要になる。つまり、1つはモニタリング用GPU、もう一つがデバッグ対象(アプリケーション実行対象)のGPUになる。または、NVIDIAがすでに発表しているGPU仮想化技術「SLI Multi-OS」環境下のマシンならば、1台のPCでもNEXUSは利用可能だ。

なお、SLI Multi-OS環境とは、2基のGPUのうち1基をホストOSに割り当て、もう一気を仮想化したバーチャルマシンのゲストOSに専用で割り当てる技術だ。

いずれにせよ、考え方としては1台のPCでの利用の場合は、1基のGPUをデバッグモニタリング用、もう1基のGPUをデバッグ対象(アプリケーション実行対象)に割り当てての実行になる。

NEXUSのシステム利用要件

セッション中には、実際にNEXUSを用いてのCPU&GPUのシームレス・デバッキングの様子を公開した。

デモに用いたアプリケーションは、CUDAベースのシミュレーション部分とOpenGLベースのグラフィックス描画を含んだDomine氏制作のデモプログラム。

デモで用いられたアプリケーションの実行模式図

ブレークポイントを、CUDAソースの任意の業に設定し、実行。すると、ちゃんとブレークポイントを設定した箇所で停止する。GPU側で実行されているCUDAプログラム中で停止しており、ソースプログラム内の変数名でのその時点での値の参照も可能。使用している限りでは、GPU内でプログラムを停止させているという実感がないほどシームレスだ。

もちろん、変数名ではなく、GPUネイティブのレジスタ値の内容も参照可能だ

変数はその表示の際に、適当な演算をかませることも可能