これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド tricensus-mpi です。
プログラム:
NAME
tricensus-mpi - MPI を使用して複数のマシン間で三角測量国勢調査を配布します
SYNOPSIS
トリセンサス-mpi [ -NS、 --depth =レベル ] [ -NS、 -ドライラン ] [ -2、 --dim2 ] [ -o、 --orientable |
-NS、 --nonorientable ] [ -NS、 - 有限の | -NS、 - 理想的 ] [ -NS、 -最小限 | -NS、 --minprime |
-NS、 --minprimep2 | -NS、 --minhyp ] [ -s、 --シグス ] ペアファイル 出力ファイルの接頭辞
DESCRIPTION
異なるマシンのクラスター上で実行される可能性のある複数のプロセスを許可します。
協力して 3 多様体または 2 多様体の三角形分割の国勢調査を作成します。 調整
MPI (メッセージ パッシング インターフェイス) を通じて行われ、国勢調査全体が
単一の MPI ジョブ。 このプログラムは、高性能クラスターに最適です。
デフォルトの動作では、3 多様体三角形分割を列挙します。 列挙したい場合は
代わりに 2 多様体三角形分割を使用する必要があります。 --dim2.
複数のプロセスまたはマシン間で配布するために国勢調査を準備するには、国勢調査
より小さな部分に分割する必要があります。 ランニング トリセンサス オプション付き --genpairs (これは
非常に高速です) 顔のペアのリストが作成されます。そのリストを分析するには、それぞれを分析する必要があります。
国勢調査を完了します。
顔の組み合わせの完全なリストは単一のファイルに保存され、
コマンドラインとして ペアファイル。 このファイルには、XNUMX 行に XNUMX つの顔のペアが含まれている必要があります。
これらの顔の組み合わせは標準形式である必要があります(つまり、最小の代表である必要があります)
その同型クラス)。 によって生成された顔のペアリング トリセンサス --genpairs
これらの条件を満たすことが保証されています。
当学校区の トリセンサス-mpi ユーティリティには、デフォルト モードとサブ検索モードの XNUMX つの動作モードがあります。
これらについては、以下の動作モードで個別に説明します。
どちらのモードでも、XNUMX つの MPI プロセスがコントローラーとして機能し、残りのプロセスはすべて機能します。
奴隷として。 コントローラーは顔のペアリングのリストを次から読み取ります。 ペアファイル、を構築します
これらに基づいて一連のタスクを実行し、これらのタスクを処理のためにスレーブに割り当てます。
各スレーブは一度に XNUMX つのタスクを処理し、新しいタスクが完了するとコントローラーに新しいタスクを要求します。
前回で終わりました。
各タスクの終了時に、三角形分割が見つかった場合、責任のあるスレーブは
これらの三角形分割を出力ファイルに保存します。 出力ファイルには次の形式の名前が付けられます。
出力ファイル接頭辞_p.rga デフォルトモードまたは 出力ファイル接頭辞_p-s.rga サブサーチモードで。
ここに 出力ファイルの接頭辞 コマンドラインで渡されます。 p は顔のペアリングの番号です
処理中、そして s は、その顔ペア内のサブサーチの番号です (両方の顔
ペアリングとサブサーチには 1 から始まる番号が付けられます)。 三角測量が見つからなかった場合
その場合、スレーブは出力ファイルにまったく書き込みません。
コントローラーとスレーブのプロセスはすべて同じものを受け取ります トリセンサス-mpi オプション (MPI を除く)
特定のオプション。これらは通常、次のような MPI ラッパー プログラムによって提供されます。 ムピルン or
mpiexec)。 プロセスのさまざまな役割は、MPI プロセスによってのみ決定されます。
ランク (コントローラーは常にランク 0 のプロセスです)。 したがって、それは可能であるはずです
例に示すように、単一のコマンドを実行してすべての MPI プロセスを開始します。
を参照してください。
国勢調査が進行するにつれて、コントローラーは各スレーブの活動の詳細なログを保持します。
これには、各スレーブ タスクにかかった時間や見つかった三角形分割の数が含まれます。
このログはファイルに書き込まれます 出力ファイル接頭辞.log。 ユーティリティ tricensus-mpi-ステータス
このログを解析して、人間が読める短い要約を作成できます。
重要: これは、 非常に 推奨される あなたが使用していること --シグス オプション。 これは維持されます
出力ファイルが小さくなり、メモリ使用量が大幅に削減されます。
トリセンサス-mpi そのもの。
モード OF OPERATION
上で説明したように、XNUMX つの基本的な動作モードがあります。 これらはデフォルトのモードです(使用されます)
を特定いたします。 - 深さ は渡されません)、およびサブサーチ モード (次の場合に使用されます) - 深さ 合格)。
・で デフォルト モード、コントローラーは単純に顔のペアリングのリストを読み取り、それぞれに
処理のためにスレーブに次々とペアリングします。
・で サブサーチ モード、より多くの作業がコントローラーにプッシュされ、スレーブタスクが
より短い。 ここで、コントローラーは一度に XNUMX つの顔のペアを読み取り、処理を開始します。
その顔の組み合わせ。 引数には固定の深さが指定されます - 深さ; そのたびに
探索ツリーの深さに到達すると、その時点からのサブ探索がタスクとして与えられます。
次のアイドル状態のスレーブに転送します。 その間、コントローラーは(サブサーチのように)バックトラックします。
終了していました)そして継続し、指定された深さになったときに次のサブサーチを実行します。
また到達した、など。
モードは次のように視覚化できます。 顔の組み合わせごとに、対応するものを考慮します。
大きな検索ツリーとしての再帰検索。 デフォルト モードでは、ツリー全体が次の時点で処理されます。
XNUMX 回は単一のスレーブ タスクとして実行されます。 サブサーチ モードでは、指定された深さをルートとする各サブツリーは次のようになります。
別個のスレーブ タスクとして処理されます (およびルートと指定されたタスク間のすべての処理)
深さはコントローラーによって行われます)。
さまざまな動作モードの主な違いは、スレーブの長さです。
タスクはさまざまな影響を与える可能性があります。
· デフォルト モードでは、スレーブ タスクは非常に長くなります。 これは、並列化ができることを意味します。
国勢調査の終わりに向けて非常に貧しくなり、一部の奴隷は長い間何もせずに座っていた
残りのスレーブが終了するまでの待機時間。
· 深さが増すサブサーチ モードに移行すると、スレーブ タスクは短くなり、
スレーブの終了時刻が近くなります (これにより、アイドル状態のスレーブが回避されます)
前述の非効率性)。 さらに、より洗練されたサブサーチにより、進歩は
ログに保存される情報がより詳細になり、どれくらいの期間が経過したかをよりよく把握できるようになります。
国勢調査は行かなければなりません。 一方で、より多くの作業が単一プロセスに押し付けられます。
コントローラー (スレーブがアイドル状態になっているため、深さが大きすぎるとボトルネックになる危険性があります)
新しいタスクを待っている間)。 さらに、MPI オーバーヘッドが大きくなり、
出力ファイルは非常に大きくなる可能性があります。
結局のところ、サブサーチ モードで実行するかどうかを決定するには実験が最善の方法です。
どのくらいの深さで。 オプションに注意してください -ドライランの概要を簡単に説明します。
検索スペース (特に、各顔に必要なサブ検索の数を表示)
任意の深さでペアリングします)。
OPTIONS
が受け付ける国勢調査オプション トリセンサス-mpi のオプションと同じです トリセンサス
ジョブの設定方法については、 トリセンサス 詳細については参照してください。
からのいくつかのオプション トリセンサス ここでは利用できません (例: 四面体と境界)
オプション)。これらは、顔の初期リストを生成するときに、早い段階で指定する必要があるためです。
ペアリング。
に固有の新しいオプションがあります トリセンサス-mpi、それは次のとおりです。
-NS、 --depth =レベル
(デフォルト モードの代わりに) サブ検索モードを使用する必要があることを示します。 の
引数 レベル 検索ツリーのどの深さの処理を通過するかを指定します
コントローラーから新しいスレーブタスクへ。
指定された深さは厳密に正である必要があります (深さ XNUMX での実行は次と同等です)
デフォルトモードで実行されます)。
詳細およびヒントについては、上記の操作モードのセクションを参照してください。
適切な値を選択する上で レベル.
-NS、 -ドライラン
完全な国勢調査の代わりに、迅速なドライランを実行する必要があることを指定します。
予行演習では、スレーブがタスクを受け入れるたびに、すぐにタスクにマークを付けます。
三角測量が見つからずに終了しました。 コントローラーの動作はそのまま
変更なし。
結果は空の国勢調査となります。 ドライ ランの利点は、ログ ファイルが保存されることです。
これは、顔のペアがどのように分割されるかを正確に示します。
実際の国勢調査実行におけるサブサーチ。 特に、ログ ファイルには、
各顔のペアが生成するサブサーチ (ユーティリティ tricensus-mpi-ステータス 助けることができる
この情報をログから抽出します)。
サブサーチの深さが浅い場合、ドライランは非常に高速になります。 深さとしては
ただし、追加の作業が行われるため、ドライ ランは遅くなります。
コントローラー。
このオプションはサブサーチ モードでのみ役立ちます (デフォルト モードでも使用できますが、
結果は面白くありません)。 上記の動作モードのセクションを参照してください。
詳細。
例
すべての 6 つの正四面体の閉じた方向付け不可能な要素について調査を行いたいとします。
三角形分割、素数最小 P2 既約三角形分割用に最適化 (したがって、一部の非可約三角形分割)
素数、非最小、または非 P2 既約三角形分割は省略できます)。
まずは使用してみましょう トリセンサス 顔の組み合わせの完全なリストを生成します。
例$ トリセンサス --genpairs -t 6 -i > 6.ペア
合計顔の組み合わせ: 97
例$
今私たちが使っているのは トリセンサス-mpi 分散型国勢調査を実行します。 次のようなラッパー プログラム ムピルン
or mpiexec 通常、MPI プロセスを開始するために使用できますが、これは使用環境によって異なります。
特定の MPI 実装。 次のコマンドは、10 で分散国勢調査を実行します。
MPI の MPICH 実装を使用するプロセッサ。
例$ ムピルン -np 10 /usr/bin/tricensus-mpi -Nnf 6.ペア 6-北
例$
現在の処理状態はコントローラのログに保存されます。 6-nor.log。 あなたは見ることができます
このログは次の人の助けを借りて作成されました tricensus-mpi-ステータス.
例$ tricensus-mpi-ステータス 6-nor.log
ペアリング 1: 完了、0 が見つかりました
...
ペアリング 85: 完了、0 が見つかりました
ペアリング 86: 完了、7 が見つかりました
ペアリング 87: 実行中
ペアリング 88: 実行中
まだ実行中、15 件見つかりました、最後のアクティビティ: Wed Jun 10 05:57:34 2009
例$
国勢調査が終了すると、結果の三角測量は次のようなファイルに保存されます。
6-nor_8.rga, 6-nor_86.rga などがあります。
マックOS X そして WINDOWS USERS
このユーティリティは、ドラッグ アンド ドロップ アプリ バンドルには同梱されていません。 MacOSの X またはと
Windows インストーラ。
onworks.net サービスを使用して tricensus-mpi をオンラインで使用する