これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド mpirun.lam です。
プログラム:
NAME
mpirun - LAM ノードで MPI プログラムを実行します.
SYNOPSIS
mpirun [-fhvO] [-c # | -np #] [-D | -wd ディレクトリ] [-ger | -nger] [-sigs | -nsigs] [-ssi キー
値] [-nw | -w] [-nx] [-pty | -npty] [-s ノード] [-t | -toff | -ton] [-tv] [-x
VAR1[=値1][,VAR2[=値2],...]] [[-p prefix_str] [-sa | -sf]] [場所] プログラム [--
引数]
注意: それぞれは個別にオプションですが、少なくとも コラボレー, -npまたは -c は
上記の形式で指定します (つまり、スキーマを使用しない場合)。
mpirun [-fhvO] [-D | -wd ディレクトリ] [-ger | -nger] [-sigs | -nsigs] [-ssi キー値] [-nw | -w]
[-nx] [-pty | -npty] [-t | -toff | -ton] [-tv] [-x
VAR1[=VALUE1][,VAR2[=VALUE2],...]] スキーマ
注意: 当学校区の -c2c -ラムド オプションは廃止されました。 使用する -ssi 代わりは。 「SSI」を見る
以下のセクション。
QUICK 概要
MPI アプリケーションを実行する方法を単に探している場合は、おそらく、
次のコマンドライン:
% mpirun C my_mpi_application
これにより、のXNUMXつのコピーが実行されます my_mpi_application 現在の LAM ユニバースのすべての CPU で。
または、「C」の代わりに「N」を使用することもできます。
my_mpi_application 現在のLAMのすべてのノード(CPUではなく)で実行する必要があります
宇宙。 ついに:
% mpirun -np 4 my_mpi_application
の XNUMX つのコピーを明示的に実行するように LAM に指示するために使用できます。 my_mpi_application、スケジューリング
LAMユニバースのCPUによるラウンドロビン方式。 詳細については、このページの残りの部分を参照してください
詳細、特に「場所の命名法」セクション。
OPTIONS
には XNUMX つの形式があります ムピルン command -- プログラム用 (つまり、SPMD スタイル)
アプリケーション)、およびアプリケーション スキーマ用の XNUMX つ (を参照) アプリスキーマ(5))。 の両方の形式 ムピルン
デフォルトでは、次のオプションを使用します。 -指 -w. これらは、それぞれの
対応するオプションについては、以下で説明します。
さらに、 ムピルン ローカルで呼び出されたディレクトリの名前を送信します
ノードを各リモート ノードに接続し、そのディレクトリへの変更を試みます。 を参照してください
以下の「現在の作業ディレクトリ」セクション。
-c # の同義語 -np (下記参照)。
-D 実行可能プログラムの場所を、作成されたプログラムの現在の作業ディレクトリとして使用します。
プロセス。 作成されたプロセスの現在の作業ディレクトリが設定されます
ユーザーのプログラムが呼び出される前。 このオプションは相互に排他的です
-wd.
-f 標準の I/O ファイル記述子を構成しないでください。デフォルトを使用してください。
-h このコマンドに関する有用な情報を出力します。
-ger GER (Guaranteed Envelope Resources) 通信プロトコルとエラーを有効にする
報告。 見る のMPI(7) GER の説明。 このオプションは相互に
と排他的 -指.
-指 GER (保証されたエンベロープ リソース) を無効にします。 このオプションは相互に排他的です
-ger.
-nsigs ユーザー アプリケーションで LAM キャッチ信号を使用しないでください。 これがデフォルトで、
と相互に排他的です -署名.
-np # 指定されたノードで、この数のプログラムのコピーを実行します。 このオプションは、
指定されたファイルが実行可能プログラムであり、アプリケーション スキーマではないことを確認してください。
ノードが指定されていない場合、すべての LAM ノードがスケジューリング対象と見なされます。 ラムはするだろう
ラウンドロビン方式でプログラムをスケジュールし、「ラップアラウンド」(および
必要に応じて、XNUMX つのノードで複数のコピーをスケジュールする)。
-npty 疑似 tty サポートを無効にします。 疑似 tty に問題がない限り
サポートしていない場合、おそらくこのオプションは必要ありません。 -pty と相互に排他的です。
-nw 終了する前にすべてのプロセスが完了するのを待たないでください ムピルン。 このオプションは
と相互に排他的です -w.
-nx LAM_MPI_*、LAM_IMPI_*、または IMPI_* 環境を自動的にエクスポートしない
変数をリモート ノードに送信します。
-O マルチコンピューターは均質です。 メッセージを渡すときにデータ変換を行いません。
このフラグは廃止されました。
-pty 擬似 tty サポートを有効にします。 とりわけ、これによりラインバッファリングが有効になりました。
出力(これはおそらくあなたが望むものです)。 これがデフォルトです。 互いに
-npty と排他的です。
-s このノードからプログラムをロードします。 このオプションはコマンドラインでは無効です
アプリケーションスキーマが指定されている場合。
-署名 ユーザープロセスで LAM がシグナルをキャッチするようにします。 このオプションは相互に排他的です
-nsigs.
-ssi キー 値
さまざまなSSIモジュールに引数を送信します。 以下の「SSI」セクションを参照してください。
-NS、 -トン すべてのプロセスの実行トレース生成を有効にします。 トレース生成は
それ以上のアクションなしで続行します。 これらのオプションは相互に排他的です
-toff.
-toff すべてのプロセスの実行トレース生成を有効にします。 のトレース生成
メッセージパッシングトラフィックは、プロセスがまとめて呼び出した後に開始されます
MPIL_トレース_オン(2)。 データ型とコミュニケーターのトレース生成に注意してください。
意志 メッセージのトレース生成が有効になっているかどうかに関係なく続行します。
いいえ。 このオプションは相互に排他的です -t -トン.
-テレビ TotalView Debugger でプロセスを起動します。
-v 冗長にしましょう。 重要なステップが完了したらレポートします。
-w すべてのアプリケーションが終了するまで待ってから、 ムピルン 終了します。
-wd DIR ユーザーのプログラムを実行する前に、ディレクトリ dir に移動します。 場合に注意してください
-wd オプションは、コマンド ラインとアプリケーション スキーマの両方に表示されます。
スキーマはコマンド ラインよりも優先されます。 このオプションは相互に
と排他的 -D.
-x 実行前に、指定された環境変数をリモート ノードにエクスポートします。
プログラム。 既存の環境変数を指定できます (例を参照)
セクションを参照)、または対応する値で指定された新しい変数名。 の
のパーサー -x オプションはあまり洗練されていません。 それは理解さえできません
引用符で囲まれた値。 ユーザーは、環境に変数を設定してから、
つかいます -x それらをエクスポートする (定義しない)。
-さ 失敗したかどうかに関係なく、すべての MPI プロセスの終了ステータスを表示します。
正常に実行されます。
-sf いずれかのプロセスが失敗した場合にのみ、すべてのプロセスの終了ステータスを表示します。
-p プレフィックス文字列
[-sa] および [-sf] によって表示される各プロセス ステータス行の前に、
prefix_str.
コラボレー どこから開始するかを示すノードおよび/または CPU 識別子のセット プログラム。 見る
ブースト(5) ノードおよび CPU 識別子の説明。 ムピルン 意志
隣接するランクをスケジュールする MPI_COMM_WORLD CPU 識別子が同じノード上にある場合
使用されています。 たとえば、LAM が n4 の CPU 数 0 でブートされ、CPU が
n2 で 1 のカウントと コラボレー は C で、ランク 0 から 3 は n0 に配置され、
ランク 4 と 5 は n1 に配置されます。
引数 これらのランタイム引数をすべての新しいプロセスに渡します。 これらは常に
最後の引数 ムピルン。 このオプションは、次の場合にはコマンド ラインでは無効です。
アプリケーションスキーマが指定されています。
DESCRIPTION
XNUMX回の呼び出しで、 ムピルン LAM で実行されている MPI アプリケーションを開始します。 アプリケーションの場合
SPMD は単に SPMD であり、アプリケーションは ムピルン コマンドライン。 もし
アプリケーションが複数のプログラムで構成される MIMD である場合、アプリケーション スキーマは
別ファイル。 見る アプリスキーマ(5) アプリケーション スキーマの構文の説明ですが、
基本的に複数含まれています ムピルン コマンドライン、コマンド名自体を除く。 の
プログラムのさまざまなインスタンス化に対してさまざまなオプションを指定する機能は別のものです
アプリケーション スキーマを使用する理由。
サービス提供先 各部の名称
上記のように、 ムピルン 現在の LAM ユニバース内の任意の場所を指定できます。
場所は、CPU またはノードのいずれかで指定できます (SYNTAX の「where」で示されます)。
セクション、上記)。 LAM はプロセスを CPU にバインドしないことに注意してください -- 場所を指定します
「CPU ごと」は、最終的には SMP にマップされる便利なメカニズムです。
特定のノード。
LAM は、左から右に MPI_COMM_WORLD ランクを効果的に番号付けすることに注意してください。
どの命名法が使用されているかに関係なく。 典型的な MPI であるため、これは重要な場合があります。
プログラムは、すぐ隣のプログラム (つまり、myrank +/- X) とより多く通信する傾向があります。
遠い隣人。 ネイバーが同じノードに配置されると、shmem RPI を次の目的で使用できます。
これにより、MPI のパフォーマンスが向上します。
ノードごとに場所を指定すると、指定したノードごとに実行可能ファイルのコピーが XNUMX つ起動されます。
キャピトル "N" を使用すると、ラムブートされた使用可能なすべてのノードを使用するように LAM に指示されます (
ランブート(1))。 特定のノードの範囲は、"nR[,R]*" の形式で指定することもできます。
R は、単一のノード番号または有効なノード番号の範囲のいずれかを指定します。
[0, num_nodes)。 例えば:
mpirun N a.out
実行可能ファイルの XNUMX つのコピーを実行します アウト LAM ユニバース内の利用可能なすべてのノードで。
MPI_COMM_WORLD ランク 0 は n0、ランク 1 は n1 などになります。
mpirun n0-3 a.out
実行可能ファイルの XNUMX つのコピーを実行します アウト ノード 0 から 3 で。MPI_COMM_WORLD ランク 0
n0、ランク 1 は n1 などになります。
mpirun n0-3,8-11,15 a.out
実行可能ファイルの XNUMX つのコピーを実行します アウト ノード 0 ~ 3、8 ~ 11、および 15 で。
MPI_COMM_WORLD ランクは次のように並べられます: (0, n0)、(1, n1)、(2, n2)、(3, n3)、
(4、n8)、(5、n9)、(6、n10)、(7、n11)、(8、n15)。
CPU による指定は、MPI ジョブを起動するための推奨される方法です。 その意図は、
で使用されるブート スキーマ ランブート(1) 各ノードで使用可能な CPU の数を示します。
そして、単一のシンプルな ムピルン コマンドを使用して、それらすべてで起動できます。 として
前述のように、CPU を指定しても実際にはプロセスが CPU にバインドされるわけではありません。
SMP で起動するための便利なメカニズム。 それ以外の場合、CPU ごとの表記は同じです。
ただし、"N" と "n" の代わりに "C" と "c" が使用されます。
次の例では、LAM ユニバースが 4 つの XNUMX ウェイ SMP で構成されていると想定しています。 そう
c0-3 は n0、c4-7 は n1、c8-11 は n2、13-15 は n3 です。
mpirun C a.out
実行可能ファイルの XNUMX つのコピーを実行します アウト LAM ユニバースで使用可能なすべての CPU で。
これは通常、すべての MPI ジョブを起動する最も簡単な (そして推奨される) 方法です (
ノードごとに 0 つのプロセスに解決される場合)。 MPI_COMM_WORLD ランク 3 ~ 0 は nXNUMX になります。
ランク 4 ~ 7 は n1、ランク 8 ~ 11 は n2、ランク 13 ~ 15 は n3 になります。
mpirun c0-3 a.out
実行可能ファイルの XNUMX つのコピーを実行します アウト CPU 0 ~ 3 の XNUMX つのランクすべて
MPI_COMM_WORLD は MPI_COMM_WORLD になります。
mpirun c0-3,8-11,15 a.out
実行可能ファイルの XNUMX つのコピーを実行します アウト CPU 0 ~ 3、8 ~ 11、および 15 で。
MPI_COMM_WORLD ランク 0 ~ 3 は n0、4 ~ 7 は n2、8 は n3 になります。
CPU ごとの命名法がノードごとの命名法よりも好まれる理由は、次のとおりです。
例を通して示します。 最初の CPU の例を実行することを検討してください (同じ
MPI_COMM_WORLD マッピング) をノードごとの命名法で -- の XNUMX つのコピーを実行します アウト すべてのための
利用可能な CPU を使用し、ローカル ネイバーの数を最大化して、潜在的に MPI を最大化します。
パフォーマンス。 XNUMX つの解決策は、次のコマンドを使用することです。
mpirun n0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3 a.out
この 仕組み、しかし、入力するのは間違いなく不格好です。 通常、by-CPU を使用する方が簡単です
表記。 以下は同等であると考えるかもしれません。
mpirun N -np 16 a.out
これは MPI_COMM_WORLD ランク マッピングはノードごとに割り当てられるため、同等です。
CPUではなく。 したがって、ランク 0 は n0 に、ランク 1 は n1 に、というようになります。
ただし、 is これは、LAM が where の欠如を「C」と解釈するためです。
mpirun -np 16 a.out
ただし、特にバッチ キュー スクリプトの場合は、「C」の方が便利な傾向があります。
プロセスの正確な数は、キューの送信によって異なる可能性があるためです。 バッチ以来
システムは、利用可能な CPU の最終的な数を決定します。
「あなたが私にくれたものすべてで実行する」と効果的に言うと、移植性や再利用性が向上する可能性があります
スクリプト。
最後に、複数の where 節を指定することは完全に
許容できる。 そのため、ノードごとの構文と CPU ごとの構文を混在させることも有効ですが、
通常は役に立ちません。 例えば:
mpirun CN a.out
ただし、場合によっては、複数の where 句を指定すると便利な場合があります。 を検討してください
MPI_COMM_WORLD ランク 0 が「マネージャー」になり、したがって消費する並列アプリケーション
通常は「ワーカー」プロセスが戻るのを待っているため、CPU サイクルはほとんどありません。
結果。 したがって、利用可能なすべてのプロセスで XNUMX つの「ワーカー」プロセスを実行することがおそらく望ましいでしょう。
CPU を追加し、「マネージャー」となる XNUMX つの追加プロセスを実行します。
mpirun c0 C マネージャー ワーカー プログラム
Application スキーマ or 実行可能ファイル プログラム?
XNUMX つの異なる形式を区別するには、 ムピルン コマンド ラインで where または
-c オプション。 どちらも指定されていない場合は、コマンドラインで指定されたファイルが次のように想定されます。
アプリケーションスキーマになります。 いずれかまたは両方が指定された場合、ファイルは
実行可能なプログラムになります。 もし、どこで、 -c 両方が指定されている場合は、
内部LAMスケジューリングに従って、指定されたノード/CPUでプログラムが開始されます
ポリシー。 ノードを XNUMX つだけ指定すると、実質的に LAM はプログラムのすべてのコピーを実行するようになります
一つの場所へ。 もしも -c が指定されているが、場所が指定されていない場合、すべての LAM ノードで使用可能なすべての CPU が
中古。 where が指定されているが指定されていない場合 -c、その後、プログラムの XNUMX つのコピーが各ノードで実行されます。
(AFCプログラム) Transfer
デフォルトでは、LAM は、特定のノードが存在するターゲット ノード上の実行可能プログラムを検索します。
インスタンス化が実行されます。 ファイル システムが共有されていない場合、ターゲット ノードは
同種であり、プログラムが頻繁に再コンパイルされる場合、LAM があると便利な場合があります
プログラムをソース ノード (通常はローカル ノード) から各ターゲット ノードに転送します。 の
-s オプションはこの動作を指定し、単一のソース ノードを識別します。
位置
LAM は、ユーザーの PATH 内のディレクトリを検索して実行可能プログラムを探します。
ソースノードで定義されている環境変数。 この動作は以下と一致します
ソースノードにログインし、シェルからプログラムを実行します。 リモートノードでは、
「。」 パスはホームディレクトリです。
LAM は、ローカル ディレクトリ、値の XNUMX つのディレクトリでアプリケーション スキーマを検索します。
LAMAPPLDIR 環境変数と laminstalldir/boot (「laminstalldir」は
LAM/MPI がインストールされたディレクトリ。
スタンダード I / O
LAM は、UNIX 標準入力をすべてのリモート ノードの /dev/null に送信します。 ローカルノード上では、
呼び出された ムピルン、標準入力はから継承されます ムピルン。 デフォルトは以前のものです
-w オプションは、端末へのアクセスの競合を防ぎます。
LAM は、UNIX 標準出力とエラーをすべてのリモート ノード上の LAM デーモンに送信します。 ラム
キャプチャされたすべての出力/エラーを呼び出したノードに送信します。 ムピルン そしてそれを上に印刷します
標準出力/エラー ムピルン。 ローカルプロセスは、次の標準出力/エラーを継承します。
ムピルン 直接転送します。
したがって、典型的な
シェルリダイレクトプロシージャ ムピルン.
% mpirun C my_app my_input my_output
この例では、 の ローカル ノード (つまり、mpirun が呼び出されたノード)
from) は標準入力の my_input からストリームを受け取ります。 他のすべてのノードの stdin
/dev/null に関連付けられます。 ただし、すべてのノードからの stdout は、
my_output ファイル。
当学校区の -f このオプションを使用すると、上記の標準 I/O をサポートするために必要なすべてのセットアップが回避されます。
リモート プロセスは完全に /dev/null にダイレクトされ、ローカル プロセスはファイルを継承します。
からの記述子 ランブートとします。
疑似 tty 対応
当学校区の -pty オプションは、プロセス出力の疑似 tty サポートを有効にします (これは、
デフォルト)。 これにより、とりわけ、リモートノードからのラインバッファ出力が可能になります
(これはおそらくあなたが望むものです)。 このオプションは、 -npty スイッチ。
プロセス 終了 / シグナル ハンドリング
MPI アプリケーションの実行中に、いずれかのランクが異常終了した場合 (または
呼び出す MPI_FINALIZE、または信号の結果として死亡します)、 ムピルン エラーが出力されます
メッセージを送信し、残りの MPI アプリケーションを強制終了します。
デフォルトでは、LAM/MPI はユーザー プログラムに XNUMX つのシグナルのシグナル ハンドラーのみをインストールします。
(デフォルトでは SIGUSR2 ですが、これは LAM が構成およびビルドされたときにオーバーライドできます)。
したがって、ユーザーが独自のシグナル ハンドラを LAM/MPI プログラムにインストールしても安全です。
(LAM は、
オペレーティング·システム)。
ユーザー シグナル ハンドラーは、MPI 状態のクリーンアップを試みることを避ける必要があります。LAM はどちらでもありません。
スレッドセーフでも非同期シグナルセーフでもありません。 たとえば、セグフォルトが発生した場合 MPI_SEND
(おそらく不正なバッファが渡されたため)、ユーザー シグナル ハンドラが呼び出された場合、
ユーザー ハンドラが呼び出しを試みる MPI_FINALIZE、LAM/MPI があったため、悪いことが起こる可能性がありました
エラーが発生したとき、既に MPI に "in" あります。 以来 ムピルン プロセスが停止したことに気付くでしょう
信号のため、ユーザーがクリーンアップのみを行う必要はおそらくありません (そして最も安全です)。
非 MPI 状態。
Status -署名 オプションはで使用されます ムピルン、LAM / MPIはいくつかのシグナルハンドラをインストールします
各ランクでローカルにシグナルをキャッチし、エラー メッセージを出力し、残りを強制終了します。
MPI アプリケーション。 これはすべてによって処理されるため、やや冗長な動作です。
ムピルン、しかし下位互換性のために残されています。
プロセス 出口 我が国の状況
当学校区の -さ, -sf, -p パラメータを使用して、の存在ステータスを表示できます。
終了する個々の MPI プロセス。 -さ 強制的に終了ステータスを表示する
すべてのプロセスに対して; -sf 少なくとも XNUMX つのプロセスが終了した場合にのみ、存在するステータスを表示します
シグナルまたはゼロ以外の終了ステータス (呼び出し前に終了することに注意してください)
MPI_FINALIZE ゼロ以外の終了ステータスになります)。
各プロセスのステータスは、次の形式で XNUMX 行に XNUMX つずつ出力されます。
prefix_string ノード pid の強制終了ステータス
If 殺されました が 1 の場合 status 信号番号です。 もしも 殺されました が 0 の場合 status 出口です
プロセスのステータス。
デフォルト プレフィックス文字列 は「mpirun:」ですが、 -p オプションを使用してこれをオーバーライドできます
文字列。
電流プローブ ワーキング ディレクトリ
処理するディレクトリに関して、mpirun のデフォルトの動作が変更されました。
で開始されます。
当学校区の -wd mpirun のオプションを使用すると、ユーザーは実行前に任意のディレクトリに移動できます。
プログラムが呼び出されます。 アプリケーションスキーマファイルで使用して、動作を指定することもできます
特定のノードおよび/または特定のアプリケーションのディレクトリ。
Status -wd オプションは、スキーマ ファイルとコマンド ラインの両方に表示されます。
directory は、コマンド ラインの値を上書きします。
当学校区の -D オプションは、現在の作業ディレクトリを、
実行可能ファイルが存在します。 アプリケーション スキーマ ファイルでは使用できません。 -wd 相互に
と排他的 -D.
どちらでもない場合 -wd また -D が指定されている場合、ローカル ノードはディレクトリ名を送信します。
mpirun は、各リモート ノードから呼び出されました。 次に、リモート ノードは次のことを試みます。
そのディレクトリに移動します。 失敗した場合 (たとえば、ディレクトリがその上に存在しない場合)
node)、それらはユーザーのホーム ディレクトリから開始されます。
ディレクトリの変更はすべて、ユーザーのプログラムが呼び出される前に行われます。 それまで待たない
MPI_INIT が呼び出されます。
プロセス 環境
MPI アプリケーションのプロセスは、LAM デーモンから環境を継承します。
それらが実行されているノード。 LAM デーモンの環境は、起動時に固定されます。
とLAM ランブート(1) 通常、ユーザーのシェルから継承されます。 原点について
ノード、これは元のシェルになります ランブート(1) 呼び出された。 リモート ノードでは、正確な
環境は、によって使用されるブート SSI モジュールによって決定されます。 ランブート(1)。 rsh ブート モジュール、
たとえば、rsh/ssh を使用してリモート ノードで LAM デーモンを起動します。
LAM デーモンを起動する前に、XNUMX つまたは複数のユーザーのシェル設定ファイルを実行します。
LD_LIBRARY_PATH 環境を必要とする動的にリンクされたアプリケーションを実行する場合
変数を設定するには、起動時に正しく設定されるように注意する必要があります。
ラム。
輸出 環境 変数
LAM_MPI_*、LAM_IMPI_*、または IMPI_* の形式で名前が付けられたすべての環境変数は、
ローカル ノードとリモート ノードの新しいプロセスに自動的にエクスポートされます。 このエクスポート
で阻害される可能性があります -nx オプションを選択します。
また、 -x オプション ムピルン 特定の環境変数をエクスポートするために使用できます
新しいプロセスへ。 の構文は -x オプションにより、新しい定義が可能になります
このオプションのパーサーは現在のところあまり洗練されていないことに注意してください。
引用された値さえ理解していません。 で変数を設定することをお勧めします。
環境と使用 -x それらを輸出する。 それらを定義しないこと。
トレース 世代
XNUMX つのスイッチは、LAM で実行されているプロセスからのトレース生成を制御します。
トレースが実際に生成される位置。 最初のスイッチは
ムピルン XNUMX 番目のスイッチは、最初に次のように設定されます。 ムピルン ただし、実行時に切り替えることができます
MPIL_トレース_オン(2)と MPIL_トレース_オフ(2) の -t (-トン は同等です)および -toff オプション すべて
最初のスイッチをオンにします。 それ以外の場合、最初のスイッチはオフになり、 MPIL_トレース_オン(2)
アプリケーションプログラムでは無効です。 の -t オプションもXNUMX番目をオンにします
スイッチ。 ザ・ -toff オプションは、XNUMX 番目のスイッチをオフにします。 見る MPIL_トレース_オン(2)と
ラムトレース(1)詳細については。
のMPI Rescale データ 変換
LAM の MPI ライブラリは、MPI メッセージをローカル表現から LAM 表現に変換します
それらを送信した後、それらを受信したときに現地の代理店に返送します。 場合
マシンの均質なネットワークで構成される LAM のローカル表現
LAM 表現とは異なり、不要な変換が発生する可能性があります。
当学校区の -O スイッチは、マルチコンピュータが使用されているかどうかを LAM に示すために必要でした。
均一かどうか。 LAM は、特定の MPI ジョブが有効かどうかを自動的に判断するようになりました。
均一かどうか。 の -O flag は下位互換性のために黙って受け入れられます。
しかし、それは無視されます。
SSI (システム サービス インターフェース)
当学校区の -ssi スイッチを使用すると、さまざまなSSIモジュールにパラメータを渡すことができます。 LAMのSSI
モジュールの詳細については、 ラムシ(7)。 SSIモジュールはMPIに直接影響します
これは、実行時に調整可能なパラメータを設定できるためです (どの RPI など)。
使用する通信デバイス ドライバ、その RPI に渡すパラメータなど)。
当学校区の -ssi switchはXNUMXつの引数を取ります: キー 値を選択します。 キー 引数は一般的に指定します
どのSSIモジュールが値を受け取るか。 たとえば、 キー 「rpi」は選択に使用されます
MPI メッセージの転送に使用する RPI。 の 値 引数はその値です
合格。 例えば:
mpirun -ssi rpi lamd N foo
「lamd」RPI を使用し、すべてのノードで「foo」の単一コピーを実行するように LAM に指示します。
mpirun -ssi rpi tcp N foo
「tcp」RPI を使用するように LAM に指示します。
mpirun -ssi rpi sysv N foo
「sysv」RPI を使用するように LAM に指示します。
等々。 LAM の RPI SSI モジュールについては、 ラムシ_rpiとします。
当学校区の -ssi スイッチを複数回使用して、異なるものを指定できます キー および 値
引数。 同じ場合 キー 複数回指定されている場合、 値sはと連結されます
それらを区切るコンマ( "、")。
なお、 -ssi switchは、環境変数を設定するための単なるショートカットです。 NS
同じ効果は、前に対応する環境変数を設定することによって達成される可能性があります
ランニング ムピルン。 LAMが設定する環境変数の形式は次のとおりです。
LAM_MPI_SSI_key = value.
なお、 -ssi switchは、以前に設定された環境変数をオーバーライドします。 また注意してください
その未知 キー 引数は引き続き環境変数として設定されます-チェックされません
(で ムピルン)正確さのために。 違法または不正確 値 引数はそうであるかもしれないし、そうでないかもしれない
報告-特定のSSIモジュールによって異なります。
当学校区の -ssi スイッチは古いものを廃止します -c2c -ラムド スイッチ。 これらのスイッチはかつて
LAM は一度に XNUMX つの RPI しか使用できないため、適切です: lamd RPI と XNUMX つ
C2C RPI のこれはもはや真実ではありません。すべての RPI が利用可能になり、次の場所で選択できるようになりました。
ランタイム。 上記の例では、lamd RPI の選択が示されています。 の -c2c スイッチにはありません
「C2C」はlamdではない他のすべてのRPIを参照していたため、直訳
RPI。 そのような、 -ssi RPI 値 特定の目的の RPI を選択するために使用する必要があります (
"lamd" または他の RPI の XNUMX つです)。
保証された 封筒 その他情報
デフォルトでは、LAM は各 MPI へのメッセージ エンベロープ バッファリングの最小量を保証します。
プロセスのペアであり、オーバーフローを試みるプロセスを妨げたり、エラーを報告したりします
このシステム リソース。 この堅牢性とデバッグ機能はマシンに実装されています
直接通信を使用する場合の具体的な方法。 通常の LAM 通信では、
LAM デーモン、プロトコルが使用されます。 の -指 オプションは GER を無効にします。
それをサポートします。 LAM が使用されている場合、最小 GER はシステム管理者によって設定されます。
インストールされています。 見る のMPI(7)詳細については。
例
上記の「場所の命名法」セクションの例も必ず参照してください。
mpirun N prog1
すべてのノードで prog1 をロードして実行します。 ユーザーの $PATH で実行可能ファイルを検索します
各ノード上で。
mpirun -c 8 prog1
LAM が実行したい場所で prog8 の 1 つのコピーを実行します。
mpirun n8-10 -v -nw -s n3 prog1 -q
ノード 1、8、9 で prog10 をロードして実行します。ノード 1 で prog3 を検索して転送します。
それを XNUMX つのターゲット ノードに送信します。 各プロセスが作成されるたびにレポートします。 「-q」を代入してください
それぞれの新しいプロセスにコマンドラインを追加します。 プロセスが完了するまで待たないでください。
出る ムピルン.
mpirun -v myapp
アプリケーション スキーマ myapp を解析し、その中で指定されているすべてのプロセスを開始します。 報告
各プロセスが作成されるにつれて。
mpirun -npty -wd /work/output -x DISPLAY C my_application
使用可能な各 CPU で「my_application」の XNUMX つのコピーを開始します。 利用可能な数
各ノードの CPU は、LAM が起動されたときに以前に指定されていました。 ランブート(1)。 として
上記の、 ムピルン で隣接するランクをスケジュールします MPI_COMM_WORLD 同じノード上
可能であれば。 たとえば、n0 の CPU 数が 8 で、n1 の CPU 数が 4 の場合、
ムピルン 配置します MPI_COMM_WORLD n0 では 7 から 0 まで、n8 では 11 から 1 までランク付けされます。
これにより、多くの並列アプリケーションのノード上の通信が最大化される傾向があります。 使用時
LAM のマルチプロトコル ネットワーク/共有メモリ RPI と組み合わせて使用します (
RELEASE_NOTES および LAM ディストリビューションの INSTALL ファイル)、全体的なコミュニケーション
パフォーマンスは非常に優れています。 また、疑似 tty サポートを無効にし、ディレクトリを次の場所に変更します。
/work/output を開き、DISPLAY 変数を新しいプロセスにエクスポートします (おそらく
my_application は xv などの X アプリケーションを呼び出して出力を表示します)。
診断
mpirun: 実行形式エラー
これは通常、いくつかのプロセスまたは適切な where 句のいずれかを意味します。
これは、LAM が実行するプロセスの数を認識していないことを示しています。 見る
方法の例については、上記の例と「場所の命名法」セクション
実行するプロセスの数、および/またはそれらを実行する場所を指定します。 ただし、次のこともできます。
アプリケーション スキーマで非 ASCII 文字が検出されたことを意味します。 これは
通常はコマンド ラインの使用エラーです。 ムピルン アプリケーションスキーマを期待しており、
実行ファイルが与えられました。
mpirun: アプリケーション スキーマの構文エラー、行 XXX
使用法または構文エラーのため、アプリケーション スキーマを解析できません。
ファイル内の指定された行。
ファイル名: そのようなファイルまたはディレクトリはありません
このエラーは XNUMX つの場合に発生する可能性があります。 指定されたファイルが見つからないか、存在します。
は見つかりましたが、ユーザーがプログラムを実行するための十分な権限を持っていないか、
アプリケーションのスキーマを読み取ります。
リターン VALUE
ムピルン すべてのランクが ムピルン MPI_FINALIZE を呼び出した後に終了します。 非
mpirun または XNUMX つ以上のランクで内部エラーが発生した場合はゼロ値が返されます。
MPI_FINALIZE を呼び出す前に終了しました。 mpirun で内部エラーが発生した場合、
対応するエラー コードが返されます。 XNUMXつ以上のランクが前に終了した場合
MPI_FINALIZE を呼び出し、そのプロセスのランクの戻り値 ムピルン 最初の
MPI_FINALIZE を呼び出す前に停止した通知が返されます。 一般に、これは
死亡した最初のランクになりますが、そうであるとは限りません。
ただし、次の場合は注意してください。 -nw スイッチを使用すると、mpirun からの戻り値は
ランクの終了ステータスを示します。
onworks.net サービスを使用してオンラインで mpirun.lam を使用する