問題タブ [mpi4py]
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.
python - しばらく生成した後の mpi4py のエラー、デバッグ方法
これはインターネット上のいくつかの質問に似ていますが、このコードはすぐにエラーを返すのではなく、しばらくの間機能しているようです。
複数の MPI プロセスを生成するコードを実行しています。各プロセスはループを作成し、その中で bcast と scatter を使用してデータを送信し、それらのプロセスからデータを収集します。これにより、アルゴリズムが実行され、データが保存されます。次に、スポーンされた通信から切断し、次のループで別のスポーン セットを作成します。これは数分間機能し、約 300 個のファイルの後、これを吐き出します。
これをローカル マシン (単一ノード) でテストしているため、最終展開には複数のノードがあり、それぞれがそのノード内で独自の mpi プロセスを生成します。これがローカル マシンで複数のノードをテストする際の問題であり、HPC で正常に動作するのか、それともより深刻なエラーなのかを把握しようとしています。
どうすればこれをデバッグできますか? 詳細モードなど、MPI が何をしようとしているのかを出力したり、MPI を監視したりする方法はありますか?
python - PyPy を使用して mpi4py の `setup.py build` を実行できません
OpenMPI で mpi4py ライブラリを使用して、分散メモリ プログラムを開発しています。これまでのところ、バニラの Python 2.7 (CPython) を使用しています。
mpi4py プロジェクト ページによると、mpi4py は「PyPy 2.0 以降」に対応しています。
Fedora 22 のインストールで、PyPy 2.4.0 を次のようにインストールしました。
sudo dnf install pypy pypy-devel
次に、virtualenv を作成し、次のようにアクティブ化しました。
virtualenv env -p $(which pypy) && . env/bin/activate
次に、pipでmpi4pyをインストールしようとしました:
pip install mpi4py
しかし、次のエラーが表示されます。
ただし、通常の CPython を使用する場合は、この同じ一連の手順が問題なく機能します。私は PyPy のニュアンスにあまり詳しくありません。ここで明らかな何かが欠けていますか?
(注: OpenMPI はsudo dnf -y install openmpi openmpi-devel
F22 にインストール済みです)
python - mpi4py - 通信ブロックを回避する方法
私は MPI コードを使用したことがあり、概念の基本的な考え方はいくつかありますが、自分で MPI 開発を行ったことはありません。Pythonコードのいくつかを並列化することから始めています。ここに私がやろうとしていることのスニペットがあります:
私はコードを実行します
問題は、ループ分解によってプロシージャーのループのサイズが等しくならない場合があることです。たとえば、nt=21 で 2 つの proc を使用すると、proc 0 がループします。
そしてproc 1ループオーバー:
したがって、it=20 の場合、proc 0 は、何もしていない proc 1 からの通知を待機し続けます。明らかに、nt%np=0 を持たない nt と np の組み合わせでは、この問題が発生します。
このような場合、どのように通信を設定するのが良いでしょうか?
ありがとう!
python - mpi4py を使用して並列化された Python スクリプトをプロファイリングする
main_parallel.pyというpython
スクリプトを使用しています。フォームmpi4py
を使用して時間を測定できますが、cProfile に似たプロファイルを作成するにはどうすればよいですか? コードの各部分の呼び出し回数を見るのが好きです。cProfile はシリアル コード専用なので使用できません。time
cli
ありがとう!
python - MPICH2 と mpi4y の違い
mpich2 と mpi4py の違いは何ですか? Raspbian クラスターに MPICH2 をインストールしました。mpi4py も必要ですか?
python - mpi4py を使用したセグメンテーション違反
mpi4py を使用して、処理タスクをコアのクラスターに分散しています。私のコードは次のようになります。
これにより、次のエラーが返されます。
このエラーは、格納されているデータall_data1
の配列が Python の配列の最大サイズを超えていることを意味していると思います。
私は次のように、より小さな部分でそれをやってみました:
しかし、これは次のエラーを返しています。
続いて、理解不能なパスのような情報と最終メッセージが大量に続きます。
これは、使用しているプロセッサの数に関係なく発生するようです。
recv
C での同様の質問の場合、解決策は、呼び出しの引数が解析される方法を微妙に変更しているようです。Python では構文が異なるため、このエラーが表示される理由と修正方法を明確にしていただけると幸いです。