Main Content

mpiprofile

並列ジョブの通信時間と実行時間のプロファイルを作成する

構文

mpiprofile
mpiprofile on <options>
mpiprofile off
mpiprofile reset
mpiprofile viewer
mpiprofile resume
mpiprofile clear
mpiprofile status
stats = mpiprofile('info')
mpiprofile('viewer',stats)

説明

mpiprofile は、並列プールで実行中の MATLAB® ワーカーにおける並列プロファイラーによるデータ収集を有効または無効にします。mpiprofile は、MATLAB クライアントから使用するか、spmd ブロック内のワーカーから直接使用できます。MATLAB クライアントから mpiprofile を実行すると、mpiprofile は MATLAB ワーカーでアクションを実行します。

mpiprofile は実行時間および通信時間に関する統計を集計します。mpiprofile が統計を収集する方法は、各 MATLAB ワーカーで profile コマンドを実行する方法に似ています。既定では、並列プロファイリングの拡張により、他の各ワーカーとの通信に関する情報を収集する配列フィールドが含められます。

mpiprofile on <options> は並列プロファイラーを起動し、それ以前に記録されたプロファイルの統計を消去します。

mpiprofile では以下のオプションが指定できます。

オプション説明

-messagedetail default

-messagedetail simplified

-messagedetail off

このオプションは保存される通信情報の詳細レベルを指定します。

-messagedetail default は、ワーカーごとのインスタンスに関する情報を収集します。

-messagedetail simplified*PerLab データ フィールドの収集をオフにし、これによりプロファイル作成のオーバーヘッドが減少します。クラスターが大規模な場合はこのオプションの使用が適しています。ただし、詳細なワーカー間通信のプロットの一部がビューアーに表示されなくなります。

-messagedetail を変更すると、以前に保存したデータがクリアされることに注意してください。

返されるデータの構造体の詳細については、後述の mpiprofile info を参照してください。

-history

-nohistory

-historysize <size>

mpiprofile は標準の profile と同じ方法でこれらのオプションをサポートします。

他の profile オプションは mpiprofile ではサポートされていません。これら 3 つのオプションは mpiprofile viewer で表示されるデータに影響しません。

mpiprofile off は並列プロファイラーを停止します。プロファイラーの状態をリセットし、通信情報の収集を無効にするには、mpiprofile reset を使用します。

mpiprofile reset は並列プロファイラーをオフにし、データ収集を行うプロファイラーを標準のプロファイラーにリセットします。reset を呼び出さない場合、後続の profile コマンドで MPI 情報が収集されます。

mpiprofile viewer はプロファイラーを停止し、並列オプションをもつグラフィカルなプロファイル ブラウザーが開きます。出力は HTML レポートで、プロファイラー ウィンドウに表示されます。関数プロファイル ページの下部にあるファイル リストには、コードの各行の左側にいくつかの列が表示されます。概要ページの内容は以下のとおりです。

  • 列 1 はその行が呼び出された回数を示します。

  • 列 2 はその行で費やされた時間の合計 (秒単位) を示します。

  • 列 3 ~ 6 にはその並列プロファイラーに固有の通信情報があります。

mpiprofile resume は前に記録した関数統計を消去せずにプロファイラーを再起動します。

mpiprofile clear はプロファイル情報を消去します。

mpiprofile status は並列プロファイラーのステータスを返します。

stats = mpiprofile('info') は並列プロファイラーを停止し、プロファイラーの統計を含む構造体を返します。stats には、profile('info') で返されるものと同じフィールドがあり、FunctionTable エントリに以下の追加フィールドがあります。*PerLab フィールドを除くすべてのフィールドが、関数単位および行単位で記録されます。

フィールド説明
BytesSent送信されたデータ量を記録する
BytesReceived受信されたデータ量を記録する
TimeWasted通信待ち時間を記録する
CommTime通信時間を記録する
CommTimePerLab各ワーカーの通信の受信時間からなるベクトル
TimeWastedPerLab各ワーカーの通信待ち時間からなるベクトル
BytesReceivedPerLab各ワーカーから受信したデータからなるベクトル

3 つの *PerLab フィールドは関数ごとにのみ収集され、次のコマンドを入力することによりオフにできます。

mpiprofile on -messagedetail simplified

MATLAB クライアントから stats = mpiprofile('info') を実行すると、すべてのワーカーから情報が返されます。ワーカーから mpiprofile('info') を実行すると、そのワーカーに固有のプロファイル情報が返されます。

mpiprofile('viewer',stats) は、グラフィカルなプロファイル ブラウザーを開き、stats に格納されているプロファイル情報を表示します。クライアントで stats = mpiprofile('info') を使用して、構造体配列を作成できます。

通信時間タイマーのクロックは実時間でなければならないため、mpiprofile-timer clock オプションは指定できません。

並列プロファイラーの使用についての詳細と例については、並列コードのプロファイルを参照してください。

すべて折りたたむ

プロファイラーをオンにします。既定の基本設定では、プロファイラーをオンにすると、並列プールがまだ作成されていない場合は自動的に作成されます。

mpiprofile on

並列コードを実行します。

A = rand(1000,'distributed');
b = sum(A, 2);
x = A\b;

収集されたプロファイル情報を表示します。

mpiprofile viewer

並列プロファイラーは、各ワーカーでのコード実行とワーカー間の通信に関する情報を収集します。mpiprofile を使用して並列コードをプロファイルした後、mpiprofile viewer を呼び出してグラフィカル ビューアーを起動します。

R = rand(1e3,'distributed');
mpiprofile on
R = R*R;
mpiprofile viewer

このビューアーには、3 種類のページ、つまり "ビュー" があります。

並列プロファイル ビューアーを開くと、標準プロファイラーと同様に関数の概要レポートが最初に表示されます。このビューで、任意の 1 つのラボのプロファイル情報を表示したり、複数のラボのプロファイル情報を同時に表示したりすることができます。最初はラボ 1 で実行されたすべての関数が表示されます。それから、リストボックス オプションを使用して、任意のラボのプロファイル情報を確認することができます。

このビューでは、[手動で比較対象を選択] リストボックスを使用して集計情報を確認することができます。このビューで集計の条件を選択すると、実行されたすべての関数について特定のデータをプロファイラーが集計して表示します。以下に例を示します。

  • [最長時間の集計] は、プログラムで呼び出されたすべての関数と、それぞれの関数について実行に最も長い時間を費やしたラボのデータをリストします。

  • [0 より大きい最短時間の集計] は、プログラムで呼び出されたすべての関数と、それぞれの関数について実行に最も短い時間を費やしたラボの統計をリストします。

The Manual Comparison Selection listbox, showing the comparison options min total time, min comm time, min time >0 aggregate, max total time, max comm time, and max time aggregate.

このビューについては留意しておくべき点がいくつかあります。

  • 別のフィールドに基づいて表を再び並べ替えるには、単に該当する列のタイトル (例: [合計通信時間]) をクリックします。

  • 関数を選択して関数の詳細レポートを表示するには、[関数名] 列に表示される任意の関数名をクリックします。

  • 異なるラボのプロファイル情報を比較するには、[比較] リストボックスとボタン (各ページの最上部にある) を使用します。比較情報は常にえび茶色のフォントで表示されます。

  • 主要なプロファイル データ (黒色または青色のテキスト) がどのラボのものであるかを確認するには、表示されているページの最上部か、または最上部のツール バーで、オレンジ色で強調表示されているテキストを参照してください。

[関数の詳細レポート] には、各ラボの現在の関数内で実行された個々の行に関する情報が表示されます。これには時間のかかる行の表が含まれ、上から 5 番目までの行を異なるラボに対して比較することができます。このレポートは、プロファイル済みの MATLAB ファイルがクライアント MATLAB パスで使用可能になっている場合にのみ、十分に機能します。

関数の詳細レポートは関数のサマリー レポートとはいくつかの点で異なります。

  • 一度に 1 つの関数のレポートが生成されます。関数名はページの最上部に緑色またはオレンジ色で表示されます。緑色の強調表示は、関数で通信時間がほとんど (または、まったく) かからなかったことを示します。オレンジ色の強調表示は、20% を超える時間が通信または通信の待機に費やされたことを示します。

  • それぞれのリストボックス オプションはユーザーが直前にクリックした関数が対象となります。現在の関数は、必要に応じて、最上部のツール バーの [ホーム] ボタンをクリックして変更することができます。また、これにより、関数の概要レポートが再び表示されます。

  • 複数のラボから集計されるプロファイル情報は "関数単位" でのみ計算されます。したがって、関数の詳細レポートで [最長時間の集計] を選択すると、現在の関数の実行に最長の時間を費やした 1 つのラボの情報が表示されます。

  • プロファイル情報の比較は時間のかかる行の表 (親テーブルがない場合に最上部に表示されるテーブル) の上から 5 番目までの行についてのみ参照することができます。

プロット ビュー は、[Figure を表示] リストボックスのプロット オプションをクリックするたびに表示されます。プロットは、すべてのラボにおける特定の関数の通信情報と時間情報を示します。プロットには 2 つのタイプ (ヒストグラムのイメージとワーカーごとのイメージ) があります。[時間ヒストグラムのプロット] オプションおよび [ワーカー間通信ごとのすべてをプロット] オプションを選択すると、mpiprofile info コマンドで返された該当の通信フィールドを使用して 3 つの Figure が表示されます。

  • [時間ヒストグラムのプロット] の場合は、合計時間、合計通信時間および通信待ち時間のヒストグラムが表示されます。

  • [ワーカー間通信ごとのすべてをプロット] の場合は、受信データ、受信時の通信時間および通信待ち時間の色分けされた 2 次元イメージが表示されます。

  • [Figure を表示] リストボックスの [ワーカーごとの通信時間をプロット] オプションの場合は、[受信通信時間] チャートのみが表示され、したがって、生成時間が短くなります。

関数別またはセッション別のプロット

プロットには以下の 2 つのモードがあります。

  • "セッション全体" のプロット: 関数の概要レポートが表示されている状態であり、"なおかつ" 関数をまったく選択してない場合は、(プロファイラーをオンにして) 実行されたすべてのコードについてプロットが生成されます。

  • "関数別" のプロット: 関数を選択した後に関数の詳細レポートを表示している場合、(以下に示すリストボックスで) 使用可能な任意のプロットをクリックすると、この関数に特定の [プロット ビュー] が表示されます。

使用しているプロット モードは、各 Figure のタイトルで常に確認することができます。タイトルには現在の関数 (または、セッション全体のデータを表示している場合は "すべての関数") が表示されます。また、タイトルには、表示されているプロファイル フィールドの名前 (例: 通信時間、合計時間など) も含まれます。特定の関数を選択した後にプロファイル セッション全体のデータを表示する場合は、[ホーム] をクリックして関数の概要レポートを再び表示してから、(以下に示すリストボックスを使用して) 目的のプロットを選択します。

The Show Figures (all workers) listbox showing the no plot, plot time histograms, plot all per worker communication, and plot communication time per worker options.

バージョン履歴

R2007b で導入