問題タブ [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.
c++ - マルチスレッド MPI プロセスが突然終了する
Boost::thread を使用して MPI プロセスごとに 2 つのスレッドを生成する MPI プログラム (Visual Studio 2k8 + MSMPI) を作成していますが、追跡に問題があるという問題が発生しました。
でプログラムを実行すると: mpiexec -n 2 program.exe
、プロセスの1つが突然終了します:
最初のプロセスが突然終了する理由がわかりません。理由を突き止める方法もわかりません。これは、すべての操作の最後にランク 0 のプロセスを無限ループに入れた場合でも発生します... 突然停止します。私の主な機能は次のようになります。
master
関数とslave
関数が終了する前に任意の作業を行う場所。少なくとも、マスター スレッドがその操作の最後に達していることを確認できます。スレーブ スレッドは常に、実行が中止される前に完了していないスレッドです。print ステートメントを使用すると、スレーブ スレッドで実際にエラーが発生していないように見えます... 順調に進んでいて、クラッシュに巻き込まれただけです。
それで、誰かが次のことについて何か考えを持ってい
ますか? a) 何が原因でしょうか?
b) どのようにデバッグすればよいですか?
本当にありがとう!
編集:
マスター/スレーブ機能の最小限のバージョンを投稿します。このプログラムの目的は純粋にデモンストレーションを目的としていることに注意してください...そのため、何も役に立ちません。基本的に、マスター スレッドはダミー ペイロードを他の MPI プロセスのスレーブ スレッドに送信します。
mpi - MPICH と OpenMPI
MPI の OpenMPI 実装と MPICH 実装の違いを誰か詳しく説明できますか? どちらがより良い実装ですか?
c++ - 3台以上のマシンでOpenMPIを実行できません
boost :: mpiチュートリアルの最初の例を実行しようとすると、3台以上のマシンで実行できませんでした。具体的には、これは正常に実行されているようです。
ホスト名の各ホスト名を<node_name> slots=2 max_slots=2
。しかし、プロセスの数を5に増やすと、ハングします。slots
/の数を1に減らしましたが、max_slots
2台を超えても同じ結果になりました。ノードでは、これはジョブリストに表示されます。
さらに、それを殺すと、次のメッセージが表示されます。
mpi
クラスタは、NFSマウントされたドライブでアクセス可能なおよびboost
ライブラリを使用してセットアップされます。NFSでデッドロックが発生していますか?または、何か他のことが起こっていますか?
更新: 明確にするために、私が実行しているブーストプログラムは
@Dirk Eddelbuettelの推奨事項hello_c.c
から、次のようにmpiの例をコンパイルして実行しました。
複数のプロセスを持つ単一のマシンで正常に実行されます。これには、任意のノードへのsshingと実行が含まれます。各計算ノードは、NFSを介してリモートマシンからマウントされた作業ディレクトリおよびmpi/boostディレクトリと同じです。ファイルサーバーからブーストプログラムを実行すると(boost / mpiがローカルであることを除いてノードと同じです)、2つのリモートノードで実行できます。ただし、「hello world」の場合、mpirun -H node1,node2 -np 12 ./hello
取得したコマンドを実行すると
「HelloWorld」はすべて印刷されており、最後にぶら下がっています。ただし、リモートノードの計算ノードから実行する場合の動作は異なります。
「Helloworld」とブーストコードはどちらもmpirun -H node1 -np 12 ./hello
、node2から実行するとハングし、その逆も同様です。(上記と同じ意味でハングします。ortedはリモートマシンで実行されていますが、通信していません。)
mpiライブラリがローカルであるファイルサーバーでの実行と計算ノードでの実行との動作が異なるという事実は、NFSデッドロックが発生している可能性があることを示しています。これは合理的な結論ですか?これが事実であると仮定して、静的にリンクできるようにmpiを構成するにはどうすればよいですか?さらに、ファイルサーバーから実行しているときに発生するエラーをどうすればよいかわかりません。
boost - mpic++を探しています
Boost MPIファイルをビルドしようとこれらの手順に従って.lib
いますが、1つの問題が発生しました:がありませんmpic++
。
MPICHやOpenMPIなどのMPI実装ファイルを見ると、まったくmpic++
含まれていません。
どこにありますmpic++
か?
windows - Windows XP での OpenMPI の実行
Windows XP ベースの単純なクラスターを構築しようとしています。OpenMPI-1.4.2 を正常にコンパイルし、ツールも同様mpicc
にompi_info
動作しますが、適切に動作させることができませんmpirun
。私が見ることができる唯一の出力は
次z:\hosts.txt
のように表示されます。
Z:
host0 と host1 の両方で使用できる共有ネットワーク ドライブです。
私の問題は何ですか?どうすれば解決できますか?
Upd: OK、この問題は修正されたようです。WideCap ドライバーやソフトウェア コンポーネントが原因でこのエラーが表示されるようです。「クリーン」なマシンは、ローカル タスクを正常に実行します。とにかく、少なくとも 2 台のマシン内でまだタスクを実行できません。次のメッセージが表示されます。
http://www.open-mpi.org/community/lists/users/2010/03/12355.phpで説明されているように、少しグーグルで検索し、すべてのことを行いましたが、それでも同じエラーが発生します。誰でも私を助けることができますか?
Upd2:
エラー コード -2147217400 はWBEM_E_INVALID_PARAMETER (0x80041008)
、WMI 呼び出しに渡されたパラメーターの 1 つが正しくない場合に発生する WMI エラーである可能性があります。これは、問題が OpenMPI ソース コード自体にあるということですか? それとも、ソース コードから OpenMPI をビルドする際に使用しwincred.h
た間違った/古いものが原因でしょうか?credui.lib
c++ - LAN クラスター内ではなく、インターネット経由で MPI (C++) プログラムを配布できますか?
大規模なクラスターで問題なく動作する MPI コードをいくつか作成しました。クラスタ内の各ノードは同じ CPU アーキテクチャを持ち、ネットワーク化された (つまり「共通」) ファイル システムにアクセスできます (各ノードが実際のバイナリを実行できるようにするため)。ただし、次のシナリオを検討してください。
- 私のオフィスには、デュアル コア プロセッサ (インテル) を搭載したマシンがあります。
- 自宅にデュアル コア プロセッサ (amd) を搭載したマシンがあります。
両方のマシンで Linux が実行され、両方のマシンで MPI コードをローカルで正常にコンパイルおよび実行できます (つまり、2 つのコアを使用)。
さて、異なるアーキテクチャを念頭に置き、共有 (ネットワーク) ファイルシステムがないという事実を念頭に置いて、4 つのコアすべてを利用できるように、MPI を介して 2 台のマシンをリンクすることは可能ですか?
もしそうなら、どのように?
ありがとう、ベン。
fortran - OpenMP & MPI 解説
数分前、私はいくつかのテキストに出くわしました。それは、しばらく頭を悩ませていた何かを思い出させましたが、尋ねる場所がありませんでした.
したがって、これが人々が両方を実際に体験できる場所になることを願って、誰かが OpenMP と MPI の違いを説明できるかどうか疑問に思っていました。
私はウィキペディアの記事全体を読み、部分的に理解しましたが、まだ考え中です。いつの日か並列処理の世界に入りたい (OpenMP の基礎を学んでいる) Fortran プログラマーにとって、より将来性のある方法は何ですか?
私はあなたのすべてのコメントに感謝します
c - OpenMPIにICCの代わりにGCCを使用させるにはどうすればよいですか?OpenMPIの再コンパイルは必要ですか?
のために書かれた並列計算用のCコードがありgcc
、それをクラスター上でコンパイルしたいと思います。これは明らかにicc
viaを使用しmpicc
ます。コードをicc
わかりやすくするために修正するのは時間がかかりすぎるように思われるので、代わりOpenMPI
に使用するように依頼できるかどうか疑問に思います。gcc
そのクラスターの管理者権限を持っていないので、実際には元の構成を台無しにしないほうがいいと思います。
たとえば、を設定できない場合は、ホームディレクトリでMakefile
コンパイルできれば幸いですが、その後にOpenMPI
何をする必要があるかについてのガイダンスが必要です。私たちを手伝ってくれますか?
UPDATE1
Makefile
含む_
そしてここにいくつかのOpenMPIファイルがあります
詳細をお知らせいただければお知らせください。
UPDATE2
ジェフの助けを借りて、私はのためのOpenMPI
設定を見つけることができましたmpicc
ただし、このファイルを編集する権限がなく、OPMI_CC = gcc
コンパイラを変更しません。
UPDATE3
環境変数CC = gcc
は役に立たない
UPDATE4
...しかし、export OMPI_CC=gcc
最終的には役立ちます(sharthのおかげで)。いつの日か、これらは別のものであることを覚えておく必要があります...
バイナリが作成されたにもかかわらず、次のバイバイメッセージが表示されました
c - -libm を MPICC に渡すには? libimf.so: 警告: feupdateenv は実装されていないため、常に失敗します
私は、にmpicc
置き換えicc
てプログラムをコンパイルしようとする初心者ですgcc
。次のコマンドを使用してコンパイルする必要があることをすでに発見しました
ただし、次のエラー メッセージが表示されます (これはよく知られています) 。
やろうとする
それから私は見る
ただし、そこにファイルがあります
mpi - MPIプログラムを単一のシステムで実行できますか、それともクラスターでのみ実行する必要がありますか?
大学でPelicanHPCを使用してクラスター化されたネットワークにアクセスできます。InではさまざまなMPIプログラムを実行していますが、自宅では他のMPIプログラムの作成/使用を練習したいと考えています。自分のシステムでMPIプログラムを実行する方法はありますか?
(私はUbuntu Jauntyに取り組んでいます)