問題タブ [openmpi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - Perl: system() 経由で mpirun によって実行されるコードを制御できるように、割り込みハンドラを追加する方法は?
Perceus (warewulf) ソフトウェアを備えたクラスターを使用して、コンピューティングを実行します。このソフトウェア パッケージにはwwmpirun
、ホストファイルを準備して実行するためのプログラム (Perl スクリプト) が含まれていますmpirun
。
このスクリプトを使用して、複数のノードで数学プログラム (CODE) を実行します。CODE は、通常、Ctrl+C でステータス、停止、停止のオプションを含む短いメニューを表示することで停止することになっています。ただし、MPI を使用して実行している場合、Ctrl+C を押すと、データが失われて CODE が強制終了されます。
CODE の開発者は回避策を提案しています - name のファイルを作成することでプログラムを停止できますstop%s
。ここで、%s
は CODE によって実行されるタスクファイルの名前です。これにより停止できますが、計算のステータスを取得できません。非常に長い時間がかかる場合があり、この機能を元に戻すことは非常にありがたいことです。
どう思いますか - 問題は CODE にありますかmpirun
?
によって実行される CODE と通信する方法を見つけることができますmpirun
か?
更新1
単一の実行では、Ctrl+C を押しstatus
て、提供されたメニューで を入力してオプションを選択することにより、計算のステータスを取得しますs
。CODE はステータス情報を STDOUT に出力し、計算を続行します。
c - openmpiを1回使用してアレイを初期化します
作業をノード間で分割することにより、配列内のデータを処理するOPENmpiを使用していくつかのテストを実行しようとしています(2番目の部分は行列を使用しています)。データ配列が毎回初期化されており、これを防ぐ方法がわからないため、現在いくつかの問題が発生しています。
どうすれば、ANSI Cを使用して、OPENmpiを1回使用して、可変長配列を作成できますか?静的でグローバルにしようとしましたが、何もしませんでした。
c++ - WinマシンとLinuxマシンを一緒に使用するBoostMPIでOpenMPIまたはMPICHを使用する
最近、私はMPIの世界に近づいています。私はおそらくOpenMPIまたはMPICHでBoostMPIライブラリを使用するつもりです(MPICHを使用しても、私が読んだいくつかの投稿のために、それが正常に機能するかどうかはわかりません)。
私の本当の質問は次のとおりです。これらの2つのライブラリとその上にあるBoostMPIを使用して、LinuxマシンとWindowsマシンのリソースを組み合わせることができますか?
MPIを使用することが、同じオペレーティングシステムを持つリモートマシンでプロセスを開始できることを意味するかどうかはまだわかりません。原則としてMPIは通信プロトコル上にあるメッセージングシステムであるため、通信中のOSへの依存度はそれほど高くありません。
このトピックについて何か知っていますか、またはWinおよびLinuxマシンでMPIを使用しようとしたことがありますか?
ありがとうEO
numpy - Python を使用したマルチコアでの ATLAS 線形代数と openmpi
マルチCPU /コアマシンでmpi4pyとopenmpiを使用して、線形代数を実行しています。私の numpy はATLASを使用して構築されています。4 コアのマシンがあり、numpy を使用して各ノードで線形代数を実行する 4 ノードの Python スクリプトを実行したいとします。
各ノードで線形代数を実行しているときに、ATLAS が複数のコアを使用しないようにするにはどうすればよいですか? ATLAS をビルドするとき、一度に 1 つのコアだけで実行するように構成するオプションはないようです。インテル® MKL では OMP_NUM_THREADS=1 を設定できると思いますが、この動作は保証されています。この目的のためだけに ATLAS を構築する方法はありますか? 環境変数に相当するものはないようです。
マルチコア CPU の各コアで複数の BLAS 操作を同時に実行することは、適切な戦略ではないと推測しています。誰でもこれについてコメントしたり、これが良いアイデアか悪いアイデアかの経験則を教えてもらえますか?
macos - 開いている MPI プロセスがすべてランク 0 になるのはなぜですか?
を使って並列プログラムを書いていOpen MPI
ます。Snow Leopard 10.6.4 を実行しており、自作パッケージ マネージャーを使用してインストールOpen MPI
しました。
を使用してプログラムを実行するとmpirun -np 8 ./test
、すべてのプロセスがランク 0 であると報告し、プロセスの総数が 1 であると認識し、process rank: 0, total processes: 1
get の 8 行がコンソールに吐き出されます。
私の大学のコンピューターラボの一部のUbuntuマシンでは、まったく同じコードがコンパイルされ、期待どおりに実行されるため、コードの問題ではないことはわかっています。homebrew のバグトラッカーをチェックしましたが、Open MPI パッケージに関する問題は報告されていません。私は途方に暮れています。
openmp - OpenMP と MPI のどちらが学びやすく、デバッグしやすいですか?
私は C/C++ アプリケーションを計算しています。これは基本的に、さまざまなデータ セットのメイン ループです。openmp と mpi が利用可能な 100 ノードのクラスターにアクセスできました。アプリケーションをスピードアップしたいのですが、私は mpi と openmp の両方のまったくの初心者です。パフォーマンスが最高でなくても、学習とデバッグが最も簡単なものは何だろうと思います。
また、私のメイン ループ アプリケーションには何が最も適切なのだろうかと考えています。
ありがとう
cluster-computing - Open MPI / MPICH-ノードが終了するとどうなりますか?
OpenMPI / MPICH2クラスターのノードが終了した場合はどうなりますか?この場合に耐性があり、実行を継続するメカニズムはありますか?
回答ありがとうございますハインリッヒ
mpi - リモートノードの mpi_comm_spawn
MPI_Comm_spawn を使用してリモート ノードでワーカー プロセスを開始するにはどうすればよいですか?
OpenMPI 1.4.3 を使用して、次のコードを試しました。
しかし、それは次のエラー メッセージで失敗します。
「node2」をローカル マシンの名前に置き換えると、問題なく動作します。node2 に ssh し、そこで同じことを実行すると (info ディクショナリに "node2" を指定して)、正常に動作します。
親プロセスを mpirun で開始したくないので、リモート ノードでプロセスを動的に生成する方法を探しています。これは可能ですか?
c++ - MPI_Send / MPI_Recv のペアで、正しく同期されていないとデータが失われる可能性はありますか?
説明させてください。4 つのスレーブ ノード 1、2、3、4 とマスター ノード 0 を考えます。ここで、1、2、3、4 はデータを 0 に送信する必要があります。0 はこのデータを次の形式で受信します。
明らかに、1、2、3、および 4 が 0 にデータを送信する順序を想定することはできません (これらはすべて互いに独立して動作しているため、2 が 1 より前にデータを送信する可能性があるため)。したがって、2 が 1 の前にデータを送信すると仮定すると (たとえば)、上記の 0 の受信ループは、MPI_Recv コマンドのソース タグ 'proc' がプロセッサ '1' に一致するまで開始されません。この順番。
したがって、2、3、4 からデータが到着している場合でも、ループは 1 からデータが到着するまで「待機」します。 1より前に到着?「1」からのデータが到着し始めてから proc が 2 にインクリメントされると、最初に 2 から受信しようとしたデータが単に存在しなくなったという意味で「忘れられた」ことはありますか? それが「忘れられた」場合、特定のスレーブ プロセスのデータを正しく処理できなくなるため、分散シミュレーション全体が停止します。
ありがとう、ベン。
c - 分散メモリクラスタのOpenMPまたはMPIまたはOpenMPI?
100ノードの分散メモリクラスターでCシリアルコードを並列化したい。クラスターは、それぞれがinfinibandによる4つのコアを持つ25のブレードで構成されています。以前は、PBSを使用して、プログラムの複数のシリアル実行を異なるノード間で分散させていました。今私は疑問に思う:
- この場合、OpenMP、MPI、またはOpenMPIの最良の選択肢は何ですか(現時点では、学習を始めているので、混合アプローチを試したくありません)。
- 例/チュートリアルはどこにありますか?
- メインのforループを備えた単純なシリアルコードの場合、OpenMP / MPI / OpemMPIは、PBSのようなキューイングアプローチよりも常に優れたパフォーマンスを発揮できますか?