Arm MAP

MPI、OpenMP、C/C++、F90 向けプロファイラー

評価版を申し込むArm MAP を購入


確実な低オーバーヘッドのプロファイリングでコードを最適化

Arm MAP は、並列/マルチスレッド/シングルスレッドの C/C++、Fortran/F90 コード向けのプロファイラーです。詳細な解析を実施し、パフォーマンスのボトルネックとなる部分をソースの行レベルで示します。Pthreads、OpenMP、MPI の並列化/スレッド化されたコードをプロファイリングできるように設計されています。

Arm MAP の使用方法は簡単です。コードを計測したり、難解なコンパイルの設定を覚える必要はありません。-g オプションでコンパイルし、以下の通り Arm MAP を実行するだけです。

$ map my_application.exe

MPI ユーザーであれば以下の通りです。

$ map mpirun -np 128 ./bt_128_C datafile.in

簡単です。

Arm MAP は、世界最大級のマシンから組込みプロセッサーまで幅広く利用されています。


本製品は開発ツールスイートである Arm Forge、および Arm Forge が同梱された Arm Allinea Studio にも含まれています。


分りやすい結果表示

プログラムの終了後、Arm MAP は最も時間が掛ったソース コードの行を示します。また、演算時間は緑のグラフ、通信時間は青のグラフで表示され、プログラムの実行中に何が起こっているのかを把握することは簡単です。

ソース コード ビュー、並列スタック ビューなど Arm MAP のインターフェースの多くは Arm Forge や Arm DDT のインターフェースと同一であり、新たなインターフェースを覚える必要はほとんどありません。


シングルコアから数万コアまで、信頼できるパフォーマンス

古典的なトーレスベースのパフォーマンス ツールとは異なり、Arm MAP はデータ システム内のファイルを決してダウンさせません。

Arm の業界をリードするクラスター上のマージ テクノロジと組み合わさったアダプティブ サンプリング レートは、適切なデータ量が正確に記録されます。ワークステーションで 10 分間実行した場合であっても、リモートで数万コアのスーパーコンピューターを 1 週間実行した場合であっても問題ありません。

Arm MAP であれば、適切なメトリクスを選択したか、実装レベルが適切か、といった心配をする必要はありません。どのような場合であっても処理速度の低下は 5% 程度です。


Arm Map の機能

開発者にとって、必要以上に複雑なツールを習得するために時間を浪費するのではなく、素晴らしいコーディングに時間やエネルギーを注ぐことが効率的です。Arm MAP は、パフォーマンスを低下させているコードの場所とその理由を的確に表示するプロファイラーです。

Arm Map は、以下の機能を提供します。

  • 簡単なコードのプロファイリング - 多くのシステムでビルドしたコードを変更する必要がありません。
  • 複数のサーバーとプロセスで実行されるアプリケーションのプロファイリング - HPC クラスターや、MPI の使用が含まれます。
  • I/O、計算、スレッド、またはマルチプロセス アクティビティにおけるボトルネックの明確なビュー。
  • ベクトル化やメモリ帯域幅など、パフォーマンスに影響を与える実際のプロセッサー命令タイプへの深い洞察。
  • 最高水準点および完全なメモリー占有スペースにおける変化を検出するための、時間の経過に伴うメモリー使用量。
  • 変更内容を編集、ビルド、およびコミット可能なリモート システムでの作業に対する優れたサポートを備えた強力かつナビゲート可能なソース ブラウザー。

結果のより素早い提供

"map -profile my_program.exe" を実行するだけで、Linux 上の C++、C、Fortran、F90 コードをとても簡単にプロファイリングすることができます。それ以上の手順は必要なく、複雑なインストルメンテーションも必要ありません。Arm MAP では、MPI や OpenMP、pthread、スレッド化されていないコードなどのすべてをプロファイリングすることができます。

グラフィカルに表示される結果は正確で、ソースコード内のどの部分がボトルネックとなっているのかがわかりやすく表示されます。

Arm Forge や Arm Allinea Studio をご利用の場合は、デバッガーである Arm DDT と統合され、共通のインターフェイスを使っているため、開発サイクルの各ステージにおいて、必要な時にツール間を簡単に移動することができます。


低オーバーヘッドなプロファイリング

お使いのプロファイラーを運用コードで実行したことはありますか。

Arm MAP は、実行時のオーバーヘッドが 5% 未満に収まるように開発されました。また、生成されるデータファイルのサイズはコードのサイズや実行時間が長い場合でも大きくならないため、毎日でも、また変更を加える度に、実行することができます。これにより、本番環境の条件下で本番コードのパフォーマンスに対する解析結果を得ることができます。

実行に掛かった時間はソースコードの横に表示されるため、どの処理がボトルネックとなっているのかがはっきりとわかります。また、すべてのプロセスにわたって掛かった時間ごとに降順で表示するスタック ビューを使用すると、コードの中から問題となる箇所に容易にたどり着くことができます。


I/O プロファイリング

I/O パフォーマンスが悪い場合、システムの規模が大きくなるにつれて、コードに悪影響を及ぼすようになります。この問題が起こっても、通常は気が付かないか、またはアプリケーションが上手くスケールしていないと勘違いしてしまいます。Arm MAP を使用すると、ファイルの I/O 帯域幅がどこで使用されているのかをはっきりとわかるため、過負荷状態の共有ファイルシステムや、読出し/書込みパターン、またシステムの設定ミスの問題を診断するのに役立ちます。


スレッドと OpenMP コードのプロファイリング

マルチスレッド化されたコードから良いパフォーマンスを得るのは、なかなか難しいものですが、Arm MAP を使用すると、スレッドの同期時にサイクルが費やされた場合や、時間が掛かっているスレッドを見つけやすくなります。

CPU の主なアクティビティーを表示するビューや、コアごとの実際の総経過時間によるコードのプロファイリングにより、実際のワークロードをベースに、スレッドのプロファイリングを正確に素早く実施します。


メモリーのプロファイリング

アプリケーションが進むにつれて、Arm MAP ではすべての計算ノード/サーバーおよびアプリケーション内の全プロセスをまたがる実際のメモリー使用率を表示することができます。メモリー使用率がわかることで、不均衡な状態や、アプリケーション内のフェーズにより発生した変更点を特定するのに役立ちます。使用率はソースコードと並べて表示されます。 最大使用率が可視化されると、一時的にメモリーを大量に消費するサードパーティー製のライブラリーに依存するアプリケーションを確認することができます。時間の経過とともに使用するメモリー量が増えるアプリケーションでは、Arm DDT のメモリー デバッグ機能を使用して、潜在的なメモリーリークを見つけることができます。

また、メモリー アクセスに掛かった時間もプロファイリングすることができるため、良くないメモリー アクセス パターンとキャッシュの利用について簡単に見つけることができます。


アクセラレーター メトリック

Arm MAP は最新の NVIDIA CUDA GPU に対応しており、CUDA GPU と CPU を一緒にプロファイリングすることができます。プロファイリングすることで、GPU の処理が完了するまで CPU の待機時間がどれ位掛かったかを確認できるだけでなく、グローバル メモリー アクセス内の CUDA GPU の時間、GPU 使用率、そして GPU の温度さえも表示することができます。


エネルギーのプロファイリング

エネルギー消費量とピーク時の電力使用率は、ハイパフォーマンスなアプリケーションの場合、特に重要です。Arm MAP の Energy Pack を使用することで、開発者は時間とエネルギーを最適化することができます。

Sandy Bridge、およびそれ以降のインテル プロセッサー (Haswell と Broadwell チップを含む) に対応しており、内蔵されているインテル® RAPL の電力測定機能を使って、CPU の電力を測定します。電力監視に対応している NVIDIA GPU であれば、どの GPU でも電力測定を実施可能です。ノードレベルの測定はインテル Energy Checker API または Cray HSS エネルギー カウンター (XK6 および XC30 以降) に対応しているシステムで利用できます。


異なるクラスターとアーキテクチャーの性能の比較

Arm MAP は主要な Linux プラットフォーム対応のクロスプラットフォーム プロファイラーです。データはオープン XML 形式で提供されるため、異なるハードウェア プラットフォーム上の主要なコードのパフォーマンスの特徴を確認したり、比較するための後処理を行うのに最適です。

元のソースコードにアクセスせずに、CPU、メモリー、MPI の性能メトリックを経時的に追跡し、レポート出力することができるため、新しいプラットフォームの評価や比較を行うのに必要なすべての情報を得ることができます。

Arm MAP は最新のプラットフォームすべてに対応しているため、どんなシステムでも生産性を上げることができます。

MPI プロファイラーでもあり、またマルチスレッドのプロファイラー、そして OpenMP* プロファイラーでもあり、ハイブリッド プログラミング モデルに対応しています。

アーキテクチャー

NVIDIA CUDA、OpenPOWER、ARM 8 (64 bit)、インテル Xeon プロセッサー

プログラミング モデル

MPI、OpenMP*、CUDA、OpenACC、UPC、PGAS 言語, pthread によるマルチスレッディング、SHMEM、OpenSHMEM

言語

Fortran、C++、C++11、C、PGAS 言語


サポートスタッフが重要な問題に取り組めるように支援

HPC 分野のコンサルタントやサポート スタッフは、パフォーマンスと最適化ツールについて熟知しています。しかしそれでも、新入りのプログラマーが起こす、よくある基本的なミスを診断するのに時間を費やしてしまうものです。

Arm MAP は、新人の開発者が MPI や OpenMP* や普通のコードを見て、よくあるパフォーマンス問題の原因をすぐに見つけられるように設計しました。専門家はそういった基本的な問題に時間を取られず、より複雑で高度な最適化の問題を深く掘り下げることができるようになります。


Arm MAP のシステム要件

Arm MAP は、C/C++ (C++11 を含む)、Fortran、F90、OpenSHMEM、OpenMP、および pthreads を含む言語およびパラダイムをサポートします。

ハードウェア アーキテクチャ オペレーティング システム MPI コンパイラー アクセラレーター
Intel および AMD (x86_64)
  • Red Hat Enterprise Linux/CentOS 6 および 7
  • SuSE Linux Enterprise 11、12、および 15
  • Ubuntu 14.04、16.04、および 18.04
  • Open SuSE 12、13、42.3、および 15.0
  • Open MPI 1.8、1.10、2.0、2.1、3.0、および 3.1
  • MPICH 3.1 から 3.2
  • MVAPICH2 2.0 から 2.3
  • Intel MPI 5.1.x から 2018.3
  • Cray MPT 6.3.1 から 7.7.1
  • SGI MPT 2.10 から 2.15
  • HPE MPI 1.1
  • IBM Platform MPI 9.1.x
  • Bullx MPI 1.2.7.x から 1.2.9.x
  • GNU C/C++/Fortran Compiler 4.3.x から 8.1.x
  • LLVM Clang 3.3 から 6.0
  • Intel Parallel Studio XE 2013.x から 2018.3
  • PGI Compiler 14.0 から 18.7
  • Cray Compiling Environment 8.3.x から 8.7.x
  • Nvidia CUDA Compiler 7.0 から 9.2
  • Nvidia CUDA Toolkit 7.0 から 9.2
Arm (AArch64)
  • Red Hat Enterprise Linux/CentOS 7.4 以降
  • SuSE Linux Enterprise 12.2 以降
  • Ubuntu 16.04 以降
  • Open MPI 1.8、1.10、2.0、2.1、3.0、および 3.1
  • MPICH 3.1 から 3.2
  • MVAPICH2 2.0 から 2.3
  • Cray MPT 7.7.1
  • HPE MPI 1.1
  • Bullx MPI 1.2.7.x から 1.2.9.x
  • GNU C/C++/Fortran Compiler 4.3.x から 8.1.x
  • LLVM Clang 3.3 から 6.0
  • Arm C/C++/Fortran Compiler 18.0 から 18.3
  • Cray Compiling Environment 8.7.x
 -
IBM Power (ppc64 および ppc64le)
  • Red Hat Enterprise Linux/CentOS 7
  • Open MPI 1.8、1.10、2.0、2.1、3.0、および 3.1
  • IBM Spectrum MPI 10.2
  • GNU C/C++/Fortran Compiler 4.3.x から 8.1.x
  • IBM XL C/C++ Compiler 13.1.x
  • IBM XL Fortran Compiler 15.1.x
  • IBM XL Compiler 16.1
  • PGI Compiler 18.1、18.5、および 18.7
  • Nvidia CUDA Toolkit 9.2

以下の MPI は、Arm 社の事前コンパイル済みのラッパーでもサポートされています。

  • Open MPI 1.6.x から 1.10.x
  • MPICH 2.x.x および 3.x.x
  • Intel MPI 4.x.x および 5.x.x
  • Cray MPT
  • Bullx MPI 1.2.7 および 1.2.8
  • MVAPICH 2.x.x

バージョン管理統合は、Git 1.7 以降、Mercurial 2.1 以降、および Subversion 1.6 以降でサポートされています。

サポートされるバッチ スケジューラーは、以下になります。

  • SLURM 2.6.3 以降および 14.03 以降
  • PBS
  • TORQUE
  • Moab
  • Oracle Grid Engine
  • Loadleveler
  • Cobalt

PGI コンパイラー 14.9 以前のバージョンは、静的バージョンの Arm MPI ラッパー ライブラリをコンパイルすることができません。コンパイルを実行した場合、"Error: symbol `MPI_F_MPI_IN_PLACE' can not be both weak and common" などのエラー メッセージが表示されます。これは、PGI コンパイラーの弱いオブジェクト サポートのバグによるものです。


 

ライセンス体系、価格、お見積り依頼、ご購入前の技術的なお問い合わせなど、本製品に関するご質問、ご不明な点はお気軽にお問い合わせください。

お問い合わせ

 

ページトップへ