この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® Advisor Cookbook」の「Analyze Performance on Cray* Systems」(https://software.intel.com/en-us/advisor-cookbook-analyze-performance-on-cray-systems) の章の日本語参考訳です。
ここでは、Cray* システム上でアプリケーションからパフォーマンス・データを収集して解析するためインテル® Advisor を使用する手順を説明します。最初にアプリケーションをビルドし、Cray* システムでインテル® Advisor 環境を設定します。その後、インテル® Advisor コマンドライン・インターフェイス (CLI) からパフォーマンス・データを収集して、スナップショット・データを保存し、ローカルシステムでインテル® Advisor GUI を起動してそれらの結果を解釈します。
- 必要条件
- Cray* システムでアプリケーションをビルド
- インテル® Advisor CLI を使用して Cray* システム上でパフォーマンス・データを収集
- ローカルシステム上でデータの解釈を行うため Cray* システム上でインテル® Advisor のスナップショットを作成
- インテル® Advisor GUI を使用してローカルシステム上でパフォーマンス・データを解釈
- 代替手順
コンポーネント
ここでは、このレシピで示される特定の結果を得るために使用されたハードウェアとソフトウェアをリストします。
- パフォーマンス解析ツール: インテル® Advisor 2018
最新バージョンは、https://www.isus.jp/intel-advisor-xe/ からダウンロードできます。 - アプリケーション: miniFE。すべての重要な計算フェーズを含む構造化されていない暗黙的有限への近似を目的とした Mantevo オープンソース・ミニアプリ。
https://github.com/Mantevo/miniFE/archive/2.2.0.tar.gz (英語) からダウンロードできます。
- コンパイラー: インテル® C++ コンパイラー 2018
最新バージョンは、https://www.isus.jp/c-compilers/ からダウンロードできます。 - オペレーティング・システム: SUSE* Linux* Enterprise Server 11
- CPU: インテル® Xeon Phi™ 7230 プロセッサー
必要条件
Cray* システムで次の操作を行います。
- プログラミング環境を設定します。
- インテルのプログラミング環境がデフォルトでロードされていることを確認します。
$ module list
- Cray* プログラミング環境がロードされている場合、環境を入れ替えます。
$ module swap PrgEnv-cray PrgEnv-intel
- インテルのプログラミング環境がデフォルトでロードされていることを確認します。
- https://github.com/Mantevo/miniFE/archive/2.2.0.tar.gz (英語) からアプリケーションのクローンを作成し、圧縮ファイルを展開します。
$ tar xzvf ./miniFE-2.2.0.tar.gz
- OpenMP* バージョンのディレクトリーに移動します。
$ cd ./miniFE-2.2.0/openmp/src
- Makefile.intel.openmp ファイルを編集し、CFLAGS の定義に -g オプションを追加します。
CFLAGS = -g -O3 -qopenmp
注
インテル® C++ コンパイラーの代わりに Cray* ftn や cc コンパイラーを使用する場合、-dynamic オプションを追加する必要があります。ftn では、OpenMP* ディレクティブを検出するための OpenMP* オプションは不要です。
ローカルシステムでインテル® Advisor を通常のように設定します。
Cray* システムでアプリケーションをビルド
Cray* システムで、アプリケーションをビルドして実行形式ファイルを現在のディレクトリーに保存します。
$ make -f ./Makefile.intel.openmp
インテル® Advisor CLI を使用して Cray* システム上でパフォーマンス・データを収集
Cray* システムで次の操作を行います。
- インタラクティブ・セッションを開始します。
Slurm スケジューラーを使用し、salloc コマンドでインタラクティブなセッションを有効にします。例えば、debug という名前のパーティション (キュー) で、単一ノードで 30 分間のインタラクティブなセッションを開始します。
$ salloc -N 1 -p debug -t 30:00
割り当てが許可されると、プロンプトに新しいノード名が反映されます。
注
一部の Cray* システムは、割り当てがアクティブになった後、サービスノード (MOM ノードとも呼ばれます) に接続します。その場合、再び OpenMP* バージョンのディレクトリーに移動します。
- インテル® Advisor 環境を設定します。
- この記事の執筆時点では、インテル® Advisor の Cray* モジュールに同種の命令スキームはありません。正しい名称については、システムのマニュアルを参照してください。このレシピでは、プレースホルダーとして advisor を使用しています。
$ module swap PrgEnv-cray PrgEnv-intel $ module load advisor
- モジュールが見つからない場合、通常の方法でインテル® Advisor の設定変数を source します。
$ source <advisor_install_dir>/advixe-vars.sh
- 同様にライブラリーの位置を追加する必要があります。
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/advisor/lib64
- この記事の執筆時点では、インテル® Advisor の Cray* モジュールに同種の命令スキームはありません。正しい名称については、システムのマニュアルを参照してください。このレシピでは、プレースホルダーとして advisor を使用しています。
- インテル® Advisor のサーベイ解析向けのスレッド数を設定します。
$ export OMP_NUM_THREADS=32
- インテル® Advisor のサーベイ解析を実行して、結果を adv ディレクトリーに保存します。
$ srun -n 1 -c 32 advixe-cl --collect=survey --project-dir=./adv -- ./miniFE.x
注
代わりに、Cray* システム上でバッチモードでパフォーマンス・データを収集することもできます。
ローカルシステム上でデータの解釈を行うため Cray* システム上でインテル® Advisor のスナップショットを作成
ヒント
VNC* や X11 のトンネル接続を有効にする後処理ノードが使用できない場合、インテル® Advisor のスナップショットは優れたデータの転送方法です。
Cray* システムで次の操作を行います。
- 後で詳しく調査するため、現在のディレクトリーに adv_snapshot.advixeexpz という名前で、すべてのパフォーマンス・データを含む読み取り専用のスナップショットを生成します。
$ advixe-cl --snapshot --project-dir=./adv --pack --cache-sources --cache-binaries -- adv_snapshot
- 利用可能な方法で adv_snapshot.advixeexpz ファイルをローカルシステムにコピーします。
インテル® Advisor GUI を使用してローカルシステム上でパフォーマンス・データを解釈
ローカルシステムで、スナップショットをダブルクリックして、インテル® Advisor GUI を起動し、サーベイレポートを開いて収集されたパフォーマンス・データを表示します。
miniFE ミニアプリの結果を調査します。これは不十分な実装であり、ベクトル化されたコード領域がなく、利用可能な最上位の命令セット・アーキテクチャー (ISA) を使用していません。
注
代わりに、インテル® Advisor CLI テキストレポートを使用して Cray* システムのパフォーマンスを解釈することもできます。
代替手順
Cray* システム上でバッチモードでパフォーマンス・データを収集 (インタラクティブの代わり)
- すべての構成の詳細を含む送信スクリプトを作成します。例えば、次の内容を含む run.slurm という名前のスクリプトを作成します。
#!/bin/bash #SBATCH --job-name=run_name #SBATCH -N 1 #SBATCH -p debug #SBATCH --ntasks-per-node=1 #SBATCH --time=00:30:00 cd $PBS_O_WORKDIR export OMP_NUM_THREADS=32 module swap PrgEnv-cray PrgEnv-intel module load advisor srun -n 1 -c 32 advixe-cl --collect=survey --project-dir=./results_dir -- ./miniFE.x
- ログインノードからスケジューラーへスクリプトを転送します。
$ sbatch ./run.slurm
インテル® Advisor CLI テキストレポートを使用して Cray* システムのパフォーマンスを解釈 (スナップショットとインテル® Advisor GUI をローカルシステムで使用する代わり)
サマリーレポートを生成して画面に表示します。
$ module swap PrgEnv-cray PrgEnv-intel $ module load advisor $ advixe-cl --report=summary --project-dir=./adv --format=text
注
レポートの出力は、直接ファイルに保存したり、CSV や XML などの形式で保存することもできます。
要約
- Cray* 環境が適切に設定されていれば、Cray* システム上でインテル® Advisor を実行することができます。
- スナップショットの作成は、インテル® Advisor の結果をインタラクティブな応答性の良いローカルシステムに移動できる優れた方法です。
関連情報
- Cray* システム上のインテル® Advisor
https://software.intel.com/en-us/articles/intel-advisor-on-cray-systems - MPI でインテル® Advisor とインテル® VTune™ Amplifier を使用する
https://software.intel.com/en-us/articles/using-intel-advisor-and-vtune-amplifier-with-mpi
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。