問題タブ [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 - Pythonでの並列実行の一貫したアサート?
並列で実行される python コードでは、少なくとも 1 つのプロセッサで失敗したアサートはすべてのプロセッサを中止する必要があるように思えます。
1) エラー メッセージが明確に表示されている (スタック トレースを使用)
2) 残りのプロセッサが永遠に待機し続けるわけではありません。
ただし、これは標準の assert が行うことではありません。
この質問は、プロセッサー 0 でのアサートが失敗した場合に停止しない mpirun で実行されている python スクリプトで既に尋ねられてい ます が、私は答えに満足していません。comm.Abort() 関数を使用することをお勧めしますが、これは上記の 2) にしか答えません。
だから私は疑問に思っていました:並列コード(mpi4pyなど)用の標準の「アサート」機能はありますか、それともその目的のために独自のアサートを作成する必要がありますか?
ありがとう!
編集 - これが私の試みです(クラス内ですが、外部にある可能性があります)。これは確実に改善できます:
python-2.7 - macports mpi4pyのインストールは機能しましたが、インポートできません「mpi4pyという名前のモジュールはありません」
Macports から py27-mpi4py を OS X Yosemite 10.10 システムにダウンロードしました。このステップは機能しているように見えました。端末出力:
Pythonでmpi4pyをインポートしようとすると、見つかりません。これは、インストールはうまくいったのに、python パスを設定するのを忘れていたということですか? Web 上の多くの投稿に目を通しましたが、この手順に役立つガイドが見つかりませんでした。
私はmpiとmacportsが初めてです。私が試すことができる提案があれば、非常に感謝しています。よろしくお願いします、J.
python - MPI4PY - while ループが一部のランクでしか終了しないのはなぜですか?
映画のフレームを作成するために、いくつかのコードを並列化しました。終了条件に達したにもかかわらず、最終フレームを作成するランクを除いて、すべてのランクが while ループを終了します。また、while ループの後に CW.Barrier() を追加すると、最終フレームのみが作成されることがわかりました。それが存在しない場合は、最後から 2 番目のフレームで停止します。
python - mpi4py - プロセス自身のコミュニケーターを取得する
現在、プロセスを異なるグループにグループ化する mpi4py プロジェクトに取り組んでいます。次に、これらのグループをそれぞれのコミュニケーターに割り当てます。これらの手順は、プロセス 0 によって実行されます。
ここでの問題は、他のプロセスがどのコミュニケーターに属しているかをどのように見つけることができるかということです。
グループのサイズが異なることに注意してください。たとえば、グループ 1 には 5 つのプロセスが含まれ、グループ 2 には 3 つのプロセスが含まれます。では、プロセス 4 (グループ 1 内) がグループ 1 からコミュニケーターを取得するにはどうすればよいでしょうか。
python - send 関数によるブロードキャストと、recv によるさまざまなソースからのメッセージの受信
ルートコンプがそれ自体を含む3つのコンプにデータを送信し、このコンプから計算されたデータを受信した後、マスター/スレーブプログラムを作成しようとしています。データは送信できますが、受信できません。
非ルートコンプでisendを試します。root がメッセージを受信しない理由がわかりません。
python - mpi4py: ライブラリがロードされていません: /usr/local/lib/libmpi.1.dylib
mpi4pyでpythonを使用しようとしています。ただし、from mpi4py import MPI
python 環境で実行すると、次のエラーが発生します。
指定されたパス ( /usr/local/lib/
) には、必要なファイルのバージョンであると思われるものがありますlibmpi.12.dylib
。mpi4py のソース コードを調べたところ、このファイルが有効であることがわかりましたが、何らかの理由で mpi4py (具体的には MPI.so) がまだ .1 を使用しようとしています。バージョン。
表示されるエラー メッセージmpirun
は、mpiexec
、 を使用して実行するか、端末の Python セッションで import コマンドを入力するだけで発生します (最後のエラー メッセージは、ここにコピーしたエラー メッセージを生成した方法です)。
これについて何か助けていただければ幸いです。関連するすべてのパッケージとコードを再インストールおよび/または更新しようとしましたが、問題は解決しませんでした。
--- 更新 --- 必死になって名前を変更しようlibmpi.12.dylib
とlibmpi.1.dylib
しましたが、少なくとも今のところは機能しました。誰かがハック以外のソリューションを持っている場合、私はまだハック以外のソリューションに興味があります。
python - MPI、fortran マスターと Python ワーカー間の相互通信?
Fortran プログラム (マスターとして) と Python プログラム (スレーブとして) の間で MPI と通信したいと考えています。以下のテストを書いたのですが、スレーブ側から親コミュニケータを取得できませんでした。
これに関する助けがあれば大歓迎です!
Fortran (マスター側)
Python (スレーブ側)
python - 「for」ループを高速化する
このコードを大規模な 3D データセットで実行しようとしています。目標は、他のすべてのグリッド ポイントに対する各グリッド ポイントの時間相関 (軸 0) を計算することです。私は以下のコードのように考えました: 2 つのループ、各次元に 1 つずつ。これは小さなデータセットでは問題ありませんが、現在はより大きな解像度に移行しており、実行に数日かかっています。
標準のpythonライブラリにしかアクセスできないことを念頭に置いて、このコードの高速化/最適化について誰かアドバイスできますか(mpi4pyはありません!)?
correlation
関数はpandas
、2 つの時系列間の相関係数を計算するために使用します。
ありがとう