ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: パフォーマンスアナライザの MPI のチュートリアル Oracle Solaris Studio 12.3 Information Library (日本語) |
Oracle Solaris 10 および Linux 用の MPI ソフトウェア
Oracle Solaris 11 用の MPI ソフトウェア
ClusterTools および Open MPI 用のサンプルコード
Oracle Solaris 11 の Oracle Message Passing Toolkit 用のサンプルコード
メッセージの受信待ち時間がもっとも長いランクを示すチャートを作成する
パフォーマンスアナライザは、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 のサンプルアプリケーションでパフォーマンスアナライザを使用する方法を説明します。
このチュートリアル用にクラスタが構成され、機能している必要があります。
このチュートリアルでは 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 に対して Sun HPC ClusterTools 8 とその更新を使用できます。Sun HPC ClusterTools 8.2.1c のダウンロードについては、後述の手順を参照してください。
Oracle Solaris 10 および Linux 用の Sun HPC ClusterTools をダウンロードするには:
My Oracle Support にログインします。このソフトウェアをダウンロードするためには、Oracle Solaris または Oracle Solaris Studio のサポート契約が必要です。
検索ボックスに「ClusterTools」と入力し、検索ボタンをクリックします。
ページの左側にある「検索の絞込み」領域の「Patches」をクリックします。
「HPC-CT-8.2.1C-G-F - HPC ClusterTools 8.2.1c.」をクリックします。
「ダウンロード」ボタンをクリックし、ダイアログボックス内の手順に従って、ClusterTools ソフトウェアが含まれている圧縮ファイルをダウンロードします。
ファイルがダウンロードされたら、それを展開し、システムの適切なプラットフォームディレクトリにナビゲートします。必要に応じて、このディレクトリ内のファイルをさらに展開します。
展開されたディレクトリで PDF として使用可能な『Sun HPC ClusterTools 8.2.1c Software Installation Guide』の説明に従ってソフトウェアをインストールします。マニュアルに記載されている最上位ディレクトリの名前が展開されたディレクトリで使用されたパスと一致しないことがありますが、サブディレクトリとプログラム名は同じです。
ディレクトリ /Studio-installation/bin および ClusterTools-installation/bin ディレクトリを自分のパスに追加します。
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 に適した後述のセクションを参照してください。
Sun HPC ClusterTools または Open MPI のどちらかをお持ちの場合は、すべてのクラスタノードからアクセスできる場所に examples ディレクトリの書き込み可能なコピーを作成する必要があります。
例:
Sun HPC ClusterTools 8.2.1c をお持ちの場合は、書き込み権のある共有ディレクトリにディレクトリ /opt/SUNWhpc/HPC8.2.1c/sun/examples をコピーします。
Open MPI 1.4.4, をお持ちの場合は、書き込み権のある共有ディレクトリにディレクトリ openmpi-1.4.4/examples をコピーします。
Oracle Solaris 11 の openmpi-15 パッケージにはサンプルコードが含まれていません。ring_c.c のソースコードとそのプログラムを構築するための Makefile は、付録 B チュートリアルのサンプルコードに記載されています。それらのファイルのテキストをコピーし、自分で ring_c.c と Makefile を作成できます。
ファイルを作成するには:
すべてのクラスタノードからアクセスできる場所に examples というディレクトリを作成します。
マウスまたはキーボードを使用して、付録 B チュートリアルのサンプルコードから ring_c.c のソースコードと Makefile をコピーし、テキストエディタでそのテキストをペーストします。
それらのファイルを examples ディレクトリに保存します。
サンプルプログラムをコンパイルして実行するには:
新しい examples ディレクトリに、ディレクトリを変更します。
ring_c の例を構築します。
% make ring_c mpicc -g -o ring_c ring_c.c
このプログラムは -g オプションを使ってコンパイルされ、それによってパフォーマンスアナライザのデータコレクタが MPI イベントをソースコードにマップできるようになります。
mpirun で ring_c の例を実行して、それが正しく動作することを確認します。ring_c プログラムは、ring 内のプロセスからプロセスへメッセージを渡すだけで終了します。
この例は、2 ノードクラスタでプログラムで実行する方法を示しています。それらのノード名は、各ノードで使用されるスロットの数とともにホストファイル内に指定されます。このチュートリアルでは 25 個のプロセスを使用し、各ホストで 1 つのスロットを指定します。システムに適しているいくつかのプロセスとスロットを指定するようにしてください。ホストとスロットの指定方法の詳細は、mpirun(1) のマニュアルページを参照してください。クラスタの一部でないスタンドアロンのホストでこのコマンドを実行することもできますが、その結果はあまり教育的でない場合があります。
この例のホストファイルは clusterhosts と呼ばれ、次の内容が含まれています。
hostA slots=1 hostB slots=1
リモートシェル (ssh または rsh) を使用して、ホストへのログインなしに各ホストに接続する権限が必要です。デフォルトでは、mpirun は ssh を使用します。
% 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