直観的で使いやすい C/C++、Fortran 90 向けデバッガー

機能

デバッガーの機能および特長

Allinea DDT は開発者のデバッグにかかる時間を短縮し、ソフトウェアのタイムリーな完成を支援します。この包括的な C/C++、Fortran、Fortran 90 向けのマルチプロセス/マルチスレッド・アプリケーション用デバッガーを使うことにより、次のことが実現できます:

  • MPI を使ったHPC クラスターなど 、複数のサーバーで起動するネイティブ Linux* アプリケーションのデバッグ
  • プロセスおよびスレッドの管理 – プログラムのステップ実行、変数の変更やエラー、あるいはユーザーが追加したブレークポイントでのプログラム停止
  • 市場をリードするメモリーデバッグで、メモリーリーク、ダングリング・ポインター、境界を超えた配列アクセスなどに起因する見つけ難い問題や断続的な問題を検出
  • 強力で拡張可能なC++ STL デバッグででSTL コンテナを直観的に表示
  • マルチプロセスの変数および配列を表示し、自動的に変更を検出
  • ビルトインの編集、ビルド、バージョン管理機能の統合 – リモートシステムでの開発を強力にサポート
  • オフラインモードでの非インタラクティブ・モードのデバッグおよびアプリケーションの動作や状態のレコーディング

強力でスケーラブルなマルチプロセス/マルチスレッドのデバッグ

MPI や OpenMP* などのライブラリーを使用したマルチプロセスやマルチスレッドの開発する場合には、Allinea DDT を使うことで並列処理の実装が容易になります。

スレッドやプロセスを個別に、かつ一括して管理

  • MPI プロセスのグループや、すべてのまたは個々のスレッド (OpenMP*/pthreads) にブレークポイントを設定
  • プロセスやスレッドを個別にまたは一括してステップ実行/再生
  • 変数値および式の値、現在のコードの位置やプロセスの状態に基づいてプロセスグループを作成

スレッドやプロセスを個別に、かつ一括して管理

DDT では、優れたデータ収集機能や差異のハイライト表示機能によってプログラムの状態を自動的に比較対照できますので、複数のコンテキストをすばやく処理することが可能です。

並列スタックビューにより、少数のものから数百、数千にいたるスレッドおよびプロセスのスタックがスケーラブルに表示できます。スタックをグループ化し、ダイバージェンスを示唆する差異をハイライトしますので、MPIやOpenMP*、pthreads、CUDA および OpenACC などのデバッグに最適です。

優れたハイライトおよびスパークライン機能で各プロセスにおける変数値をサムネイル表示するため、通常と異なるデータの値やデータの変更が瞬時に確認できます。スパークラインに関する詳細についてはブログを参照してください。さらに、プロセスやスレッド間の比較ツールにより、データのグループ化や検索が容易になります。

DDT では、広く普及しているMPI 規格のメッセージキューをデバッグし、マルチプロセスのコードにありがちなタイプのバグを見極めるのにも役立ちます。

  • グラフィックと表ベースのメッセージキューの表示による、デッドロックやライブロック、メッセージの同期エラーなどといった問題の診断
  • オープンソース MPI の正当性チェックツールとの統合サポート

Allinea DDTは、実証済みの非常に高速なパフォーマンスで、瞬時にして 700,000 のプロセスをステップ実行し、表示します。

データ調査

Allinea DDT を使うと、変数を表示して複雑なデータ構造体を把握するという必要不可欠な作業が容易になります。

  • 変更の自動検出機能により、デバッグ中に変数や式にが変更が施されるのを表示
  • 変数、オブジェクト、モジュール、complex C++ クラス、構造体、Fortran 90 の派生型データ構造体および多次元配列などの参照
  • ポインターの逆参照およびオブジェクトのアドレス検索の後、メモリーデバッグでポインターの割り当て場所やサイズを確認
  • list や set、map、multimap、QString を含む、C++ や C++11 STL、Boost、Qt コンテナなどの複雑なデータ構造体をスマートに表示
  • カスタムデータ型を追加して必要なデータのみを表示
  • ウォッチポイントを設定して、プロセスによるデータの読み込みまたは書き出し時にプログラムを停止

C++、Fortan 関連の機能については、C++ debuggingFortran debugging ページを参照ください。

メモリーデバッグ

DDT の組み込みメモリーデバッガーは、ヒープメモリーの使用における問題を自動的に表示します。

  • 例外やクラッシュ発生時に即停止 – 使いやすく、包括的なインターフェースでクラッシュの原因であるソースやデータを特定
  • 境界を超えたデータアクセスを発生後即時にキャッチ
  • メモリーリーク (memory leaks) はもう起こさせない:メモリー割り当てに関わるソースの場所をリークレポートに表示
  • カスタム・アロケーターのサポートにより、アプリケーションの必要に応じたレベルで割り当て場所をレポート
  • ダングリング・ポインターのチェック (dangling pointers)
  • ポインターの有効性、割り当て場所および割り当てサイズのスタック全体の表示
  • malloc、new その他の関数による C/C++ メモリー割り当て
  • Fortran/Fortran 90 の割り当て可能なメモリーおよびポインター

詳細はメモリーデバッグページを参照ください。

強力なナビゲーション、編集、ビルドおよびバージョン管理

デバッグに成功すると、コードの高速化が期待されます。Allinea DDT は、開発ツールスイートであるAllinea Forge の一部です。DDT は単一ツールとして、またはLinux* 上での並列/マルチスレッド・コードの代表的なプロファイラーである Allinea MAP (Linux parallel and threaded code profiler, Allinea MAP) を含むAllinea Forge ライセンスの一部としても入手可能です。MAP は、DDT と同じユーザー・インターフェースおよびインストールを使用しているため、デバッグ後にコードのプロファイルへの移行が楽にできます。

開発者は、パワフルなユーザー・インターフェースでデバッグ作業と同時に編集、ビルド、そしてコミットすることができます。

リモートシステムを使用する場合でも、Mac や Windows®、Linux* クライアントのノートパソコンからリモート・クライアントを使って問題なく接続できます。

バグ修正へのスマートなアプローチ

Allinea DDT はベスト・プラクティスを統合し、より迅速に問題の原因を明らかにするため、デバッグに多くの時間を必要としません。

  • C/C++ および Fortran用の静的解析でいち早くバグを検出し、ありがちなエラーをソースで取得可能
  • なぜ現在のコードは以前のコードと動作が異なるのか? バージョン管理機能との統合により、コードの変更箇所をハイライトし、なぜ、どこで変更が生じたのかを確認可能
  • 各コードの変更箇所におけるすべてのプロセスの変数値を1つのコマンドで自動的にログでき、特定の変更がなぜ、どのようにして問題となったのかを正確に追跡可能

Allinea DDT のログブックには作業中に踏んだステップがすべて記録されますので、デバッグの進捗管理も簡単です。

  • 過去に見落としていた問題を容易に再確認できる常時自動記録のデバッグログ
  • チームメンバーとログブックを共有し、共同デバッグを実現
  • 2つのトレースを対照比較し、システム、バージョン、およびプロセス数の間における変更を確認

スケーラブルな printf および強力なコマンドライン・モード

トレースポイントを使うことで、スケーラブルな printf デバッグが実現します。DDT では、コードにトレースポイントを挿入し、コード1行ごとにその値をログします。結果は、対話的にまたはオフライン・デバッグ・モードで利用可能です。

オフラインモードでは、スリープ中でもデバッグできます。バッチ・スケジューラーを利用してコマンドラインからオフラインデバッグの実行をスケジュールすると、ジョブの完了時に DDT からテキストまたは HTML 形式のエラーおよびトレースレポートが送信されます。オフラインデバッグに関する詳細は、ブログを参照してください。

膨大なデータセットの処理及び視覚化

DDT は、科学計算および技術計算における膨大なデータセットの処理を実現できるように設計されています。複数のプロセスに分散している場合でも、巨大な配列の表示またはフィルタリングができます。

  • 業界標準のデータ形式である HDF5 および CSV へのエクスポート
  • すべてのプロセスを並列参照し、パワフルなフィルタリング機能でペタバイト単位のデータを並列検索して統計データを収集
  • Allinea DDTのコネクターで視覚化ツール VisIt (VisIt scientific visualization tool) に接続し、データを視覚化して同時にデバッグ

これからの HPC アーキテクチャーに向けたクロスプラットフォーム

Allinea DDT はクロスプラットフォームに対応しており、現在使われている主要な技術計算プラットフォームをすべてサポートしています。1つの製品で CUDA デバッグ (CUDA debugger)、並列デバッグ、マルチスレッド・デバッグ、OpenMP* プログラムのデバッグおよびメモリーデバッグ(memory debugger) 機能のすべてを備えており、ハイブリッド型のプログラミング・モデルをサポートしています。

アーキテクチャー
インテル® Xeon®、インテル® Xeon Phi™NVIDIA CUDA、IBM BlueGene/Q、OpenPOWER、ARM 8 (64 ビット)

モデル
MPI、OpenMP*、CUDAOpenACC、UPC、CoArray Fortran、PGAS 言語、pthread によるマルチスレッド、SHMEM、OpenSHMEM

プログラミング言語
Fortran、C++、C++11、C、PGAS 言語、CoArray Fortran
» 詳細はこちら

製品カタログ ダウンロード (PDF、英語)