JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: パフォーマンスアナライザの MPI のチュートリアル     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  パフォーマンスアナライザの MPI のチュートリアル

MPI とパフォーマンスアナライザについて

チュートリアル用の設定

MPI ソフトウェアの取得

Oracle Solaris 10 および Linux 用の MPI ソフトウェア

Oracle Solaris 11 用の MPI ソフトウェア

サンプルソースコードの準備

ClusterTools および Open MPI 用のサンプルコード

Oracle Solaris 11 の Oracle Message Passing Toolkit 用のサンプルコード

サンプルプログラムのコンパイルと実行

ring_c 例に関するデータの収集

実験の開始

「MPI タイムライン」のナビゲート

メッセージの詳細の表示

関数の詳細とアプリケーションソースコードの表示

MPI タブでのデータのフィルタリング

フィルタスタックの使用

「MPI チャート」タブの使用

「MPI チャートコントロール」の使用

メッセージの送信場所を示すチャートを作成する

メッセージの受信待ち時間がもっとも長いランクを示すチャートを作成する

遅いメッセージが MPI 関数に費やされる時間に与える影響を調べる

結論

A.  MPI チャートコントロールの設定

B.  チュートリアルのサンプルコード

チュートリアル用の設定

パフォーマンスアナライザは、Oracle Message Passing Toolkit、Oracle Sun x86 および SPARC ベースシステム用の高度に最適化された Open MPI の実装など、Message Passing Interface (MPI) 標準のいくつかの実装で動作します。


注 - Oracle Message Passing Toolkit 製品は、かつて Sun HPC ClusterTools と呼ばれていたため、Oracle の Web ページやドキュメントで両方の名称を目にすることがあります。Sun HPC ClusterTools の最終バージョンはバージョン 8.2.1c です。この製品の次のリリースは Oracle Message Passing Toolkit 9 であり、ソフトウェアパッケージリポジトリ内の Oracle Solaris 11 に使用できます。


パフォーマンスアナライザで動作する MPI バージョンの一覧を表示するには、追加の引数を指定しないでコマンド collect を実行します。

このチュートリアルでは、ring_c と呼ばれる MPI のサンプルアプリケーションでパフォーマンスアナライザを使用する方法を説明します。

このチュートリアル用にクラスタが構成され、機能している必要があります。

MPI ソフトウェアの取得

このチュートリアルでは Oracle からの MPI ソフトウェアが使用されますが、Open MPI の Web サイトで入手できる Open MPI を使用することもできます。

Oracle Message Passing Toolkit ソフトウェアに関する情報は、http://www.oracle.com/us/products/tools/message-passing-toolkit-070499.html で入手できます。このサイトにはソフトウェアをダウンロードするためのリンクが用意されていますが、代わりに次の詳細な手順を使用してください。

Oracle Solaris 10 および Linux 用の MPI ソフトウェア

このチュートリアルでは、Oracle Solaris 10 または Linux に対して Sun HPC ClusterTools 8 とその更新を使用できます。Sun HPC ClusterTools 8.2.1c のダウンロードについては、後述の手順を参照してください。

Oracle Solaris 10 および Linux 用の Sun HPC ClusterTools をダウンロードするには:

  1. My Oracle Support にログインします。このソフトウェアをダウンロードするためには、Oracle Solaris または Oracle Solaris Studio のサポート契約が必要です。

  2. 検索ボックスに「ClusterTools」と入力し、検索ボタンをクリックします。

  3. ページの左側にある「検索の絞込み」領域の「Patches」をクリックします。

  4. HPC-CT-8.2.1C-G-F - HPC ClusterTools 8.2.1c.」をクリックします。

  5. 「ダウンロード」ボタンをクリックし、ダイアログボックス内の手順に従って、ClusterTools ソフトウェアが含まれている圧縮ファイルをダウンロードします。

  6. ファイルがダウンロードされたら、それを展開し、システムの適切なプラットフォームディレクトリにナビゲートします。必要に応じて、このディレクトリ内のファイルをさらに展開します。

  7. 展開されたディレクトリで PDF として使用可能な『Sun HPC ClusterTools 8.2.1c Software Installation Guide』の説明に従ってソフトウェアをインストールします。マニュアルに記載されている最上位ディレクトリの名前が展開されたディレクトリで使用されたパスと一致しないことがありますが、サブディレクトリとプログラム名は同じです。

  8. ディレクトリ /Studio-installation/bin および ClusterTools-installation/bin ディレクトリを自分のパスに追加します。

Oracle Solaris 11 用の MPI ソフトウェア

Oracle Solaris 11 が動作している場合は、Oracle Message Passing Toolkit がパッケージ名 openmpi-15 のもとで Oracle Solaris 11 リリースの一部として使用可能になります。Oracle Message Passing Toolkit のインストールと使用については、記事「How to Compile and Run MPI Programs on Oracle Solaris 11」を参照してください。

Oracle Solaris 11 でのソフトウェアのインストールに関する一般情報は、Oracle Solaris 11 ドキュメントライブラリ内のマニュアル『Oracle Solaris 11 ソフトウェアパッケージの追加および更新』を参照してください。


注 - Oracle Solaris 11 のパッケージ openmpi-15 には、このチュートリアルで使用されるサンプルコードが提供されていません。このバージョンをインストールする場合は、それとは別に、「Oracle Solaris 11 の Oracle Message Passing Toolkit 用のサンプルコード」の説明に従ってサンプルコードを取得する必要があります。Open MPI をダウンロードしてサンプルコードを入手することもできます。


サンプルソースコードの準備

サンプルソースコードの準備については、使用している MPI に適した後述のセクションを参照してください。

ClusterTools および Open MPI 用のサンプルコード

Sun HPC ClusterTools または Open MPI のどちらかをお持ちの場合は、すべてのクラスタノードからアクセスできる場所に examples ディレクトリの書き込み可能なコピーを作成する必要があります。

例:

Oracle Solaris 11 の Oracle Message Passing Toolkit 用のサンプルコード

Oracle Solaris 11 の openmpi-15 パッケージにはサンプルコードが含まれていません。ring_c.c のソースコードとそのプログラムを構築するための Makefile は、付録 B チュートリアルのサンプルコードに記載されています。それらのファイルのテキストをコピーし、自分で ring_c.cMakefile を作成できます。

ファイルを作成するには:

  1. すべてのクラスタノードからアクセスできる場所に examples というディレクトリを作成します。

  2. マウスまたはキーボードを使用して、付録 B チュートリアルのサンプルコードから ring_c.c のソースコードと Makefile をコピーし、テキストエディタでそのテキストをペーストします。

  3. それらのファイルを examples ディレクトリに保存します。

サンプルプログラムのコンパイルと実行

サンプルプログラムをコンパイルして実行するには:

  1. 新しい examples ディレクトリに、ディレクトリを変更します。

  2. ring_c の例を構築します。

    % make ring_c
    mpicc -g -o ring_c ring_c.c

    このプログラムは -g オプションを使ってコンパイルされ、それによってパフォーマンスアナライザのデータコレクタが MPI イベントをソースコードにマップできるようになります。

  3. mpirunring_c の例を実行して、それが正しく動作することを確認します。ring_c プログラムは、ring 内のプロセスからプロセスへメッセージを渡すだけで終了します。

    この例は、2 ノードクラスタでプログラムで実行する方法を示しています。それらのノード名は、各ノードで使用されるスロットの数とともにホストファイル内に指定されます。このチュートリアルでは 25 個のプロセスを使用し、各ホストで 1 つのスロットを指定します。システムに適しているいくつかのプロセスとスロットを指定するようにしてください。ホストとスロットの指定方法の詳細は、mpirun(1) のマニュアルページを参照してください。クラスタの一部でないスタンドアロンのホストでこのコマンドを実行することもできますが、その結果はあまり教育的でない場合があります。

    この例のホストファイルは clusterhosts と呼ばれ、次の内容が含まれています。

    hostA slots=1
    hostB slots=1

    リモートシェル (ssh または rsh) を使用して、ホストへのログインなしに各ホストに接続する権限が必要です。デフォルトでは、mpirunssh を使用します。

    % mpirun -np 25 --hostfile clusterhosts ring_c
    Process 0 sending 10 to 1, tag 201 (25 processes in ring)
    Process 0 sent to 1
    Process 0 decremented value: 9
    Process 0 decremented value: 8
    Process 0 decremented value: 7
    
    Process 0 decremented value: 6
    Process 0 decremented value: 5
    Process 0 decremented value: 4
    Process 0 decremented value: 3
    Process 0 decremented value: 2
    Process 0 decremented value: 1
    
    Process 0 decremented value: 0
    Process 0 exiting
    Process 1 exiting
    Process 2 exiting
    .
    .
    .
    Process 24 exiting

    このコマンドを実行して、同じような出力が得られた場合は、次のセクションに示すようにアプリケーション例に関するデータを収集する準備が整っています。

ssh を使用する mpirun で問題が発生した場合は、mpirun コマンドでオプション --mca plm_rsh_agent rsh を使用して、rsh コマンドによる接続を試してください。

% mpirun -np 25 --hostfile clusterhosts --mca plm_rsh_agent rsh -- ring_c