インテル® Advisor クックブック: Cray* システムのパフォーマンス解析

同カテゴリーの次の記事

インテル® Advisor クックブック: ルーフラインでパフォーマンス改善を視覚化

この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® Advisor Cookbook」の「Analyze Performance on Cray* Systems」の章の日本語参考訳です。


ここでは、Cray* システム上でアプリケーションからパフォーマンス・データを収集して解析するためインテル® Advisor を使用する手順を説明します。最初にアプリケーションをビルドし、Cray* システムでインテル® Advisor 環境を設定します。その後、インテル® Advisor のコマンドライン・インターフェイス (CLI) からパフォーマンス・データを収集して、スナップショット・データを保存し、ローカルシステムでインテル® Advisor GUI を起動してそれらの結果を解釈します。

  1. 必要条件
  2. Cray* システムでアプリケーションをビルド
  3. インテル® Advisor の CLI を使用して Cray* システム上でパフォーマンス・データを収集:
  4. ローカルシステム上でデータの解釈を行うため、Cray* システム上でインテル® Advisor のスナップショットを作成
  5. インテル® Advisor の GUI を使用してローカルシステム上でパフォーマンス・データを解釈
  6. 代替手順

コンポーネント

ここでは、このレシピで示される特定の結果を得るために使用されたハードウェアとソフトウェアをリストします。

  • パフォーマンス解析ツール: インテル® 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* システムで次の操作を行います。

  1. プログラミング環境を設定します。
    • インテルのプログラミング環境がデフォルトでロードされていることを確認します。
      	$ module list
      	
    • Cray* プログラミング環境がロードされている場合、環境を入れ替えます。
      	$ module swap PrgEnv-cray PrgEnv-intel
      	
  2. https://github.com/Mantevo/miniFE/archive/2.2.0.tar.gz (英語) からアプリケーションを複製し、圧縮ファイルを展開します。
    $ tar xzvf ./miniFE-2.2.0.tar.gz
    
  3. OpenMP* バージョンのディレクトリーに移動します。
    $ cd ./miniFE-2.2.0/openmp/src
    
  4. 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* システムで次の操作を行います。

  1. インタラクティブ・セッションを開始します。

    Slurm スケジューラーを使用し、salloc コマンドで対話型セッションを有効にします。例えば、debug という名前のパーティション (キュー) で、単一ノードで 30 分間の対話型セッションを開始します。

    $ salloc -N 1 -p debug -t 30:00
    

    割り当てが許可されると、プロンプトに新しいノード名が反映されます。

    一部の Cray* システムは、割り当てがアクティブになった後、サービスノード (MOM ノードとも呼ばれます) に接続します。その場合、再び OpenMP* バージョンのディレクトリーに移動します。

  2. インテル® 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
      	
  3. インテル® Advisor のサーベイ解析向けのスレッド数を設定します。
    $ export OMP_NUM_THREADS=32
    
  4. インテル® Advisor のサーベイ解析を実行して、結果を adv ディレクトリーに保存します。
    $ srun –n 1 –c 32 advixe-cl --collect=survey --project-dir=./adv -- ./miniFE.x
    

ローカルシステム上でデータの解釈を行うため、Cray* システム上でインテル® Advisor のスナップショットを作成

ヒント

VNC* や X11 のトンネル接続を有効にする後処理ノードが使用できない場合、インテル® Advisor のスナップショットは優れたデータの転送方法です。

Cray* システムで次の操作を行います。

  1. 後で詳しく調査するため、現在のディレクトリーに adv_snapshot.advixeexpz という名前で、すべてのパフォーマンス・データを含む読み取り専用のスナップショットを生成します。
    $ advixe-cl --snapshot --project-dir=./adv --pack --cache-sources --cache-binaries -- adv_snapshot
    
  2. 利用可能な方法で adv_snapshot.advixeexpz ファイルをローカルシステムにコピーします。

インテル® Advisor の GUI を使用してローカルシステム上でパフォーマンス・データを解釈

ローカルシステムで、スナップショットをダブルクリックして、インテル® Advisor GUI を起動し、サーベイレポートを開いて収集されたパフォーマンス・データを表示します。

miniFE ミニアプリの結果を調査します。これは不十分な実装であり、ベクトル化されたコード領域がなく、利用可能な最上位の命令セット・アーキテクチャー (ISA) を使用していません。

Intel Advisor Survey Report

代替手順

Cray* システム上でバッチモードでパフォーマンス・データを収集 (インタラクティブの代わり)

  1. すべての構成の詳細を含む送信スクリプトを作成します。例えば、次の内容を含む 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
    
  2. ログインノードからスケジューラーへスクリプトを転送します。
    $ 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 の結果をインタラクティブな応答性の良いローカルシステムに移動できる優れた方法です。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事