問題タブ [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.

0 投票する
1 に答える
765 参照

python - mpi4py: 動的データ処理

のような株式ティッカーを含むベクターがtickers = ['AAPL','XOM','GOOG']あり、「従来の」python プログラムでは、このtickersベクターをループし、 のようなティッカー文字列を 1 つ選択し、株式リターンAAPLを含む csv ファイルをインポートAAPLし、共通関数への入力としてリターンを使用します。最後に、csv ファイルを出力として生成します。4000 を超えるティッカーがあり、各ティッカーに適用する関数の処理に時間がかかります。mpi4pyジョブごとに約 100 個のプロセッサにアクセスできるパッケージを使用して、コンピューター クラスターにアクセスできます。私はPythonでこのmpi をよく理解しています(そして実装できました) :

したがって、この例では、サイズ 8 のデータ ベクトルがあり、各プロセッサ (合計 3 つ) に同じ数のデータ要素を割り当てます。上記の同様の例を使用して、各プロセッサに 1 つの株式ティッカーを割り当て、ティッカーごとに実行する必要がある関数を適用するにはどうすればよいですか? tickersプロセッサが解放されたら、ベクトルに戻っtickerてまだ処理されていないa を処理するように python に伝えるにはどうすればよいですか?

0 投票する
3 に答える
4190 参照

python - マルチプロセッシング プールを mpi4py に適合させる

マルチプロセッシング プールを使用して Python で並列化されたシミュレーションを実行していますが、複数のコアを備えたコンピューターでうまく機能します。ここで、複数のノードを使用してクラスターでプログラムを実行したいと考えています。マルチプロセッシングは分散メモリには適用できないと思います。しかし、mpi4py は良い選択肢のようです。したがって、これらのコードに相当する最も単純な mpi4py は次のとおりです。

0 投票する
2 に答える
1304 参照

python - シリアル python スクリプトから mpi4py アプリケーションを使用する方法

mpi4pyをベースにライブラリを作ってみたのですが、シリアルのpythonコードで使いたいです。

ただし、serial_source.py内には、 parallel_barという関数が存在します。

この質問の動機は、mpi4py を使用して Python でプログラムを最適化する正しい方法を見つけることです。これらのプログラムは必ずしも完全に並列で実行されるようには設計されていません。

0 投票する
1 に答える
365 参照

fedora - FedoraScientific での MPI4PY の使用

最近、含まれているソフトウェアのリストに感銘を受けたので、Fedora Scientific 20 をダウンロードしてインストールしました。私がこのソフトウェアに興味を持ったのは、MPI フレームワークが含まれているためです。mpicc と mpiexec を使用して、単純な C プログラムをコンパイルして実行することができました。ただし、Python コードを使用して MPI4PY を使用して OpenMPI を呼び出すには、いくつかの助けが必要です。

ターミナルプロンプトで、試してみると:

$ /lib64/openmpi/bin/mpiexec -n 2 python3 helloworld.py

トレースバックは、

ImportError: 'mpi4py' という名前のモジュールがありません

引き上げられました。helloworld.py プログラムはオンラインで見つかった例で、6 行目がfrom mpi4py import MPI.

Apper は、Fedora Scientific のインストールの一部として OpenMPI 用の Python2 と Python3 の両方に mpi4py がインストールされていることを示しているため、何が問題なのかわかりません。誰かがこのパッケージの使い方についてアドバイスしてもらえますか?

0 投票する
0 に答える
897 参照

parallel-processing - mpi4py: 内部エラー: 無効なエラー コード 409e0e (リング ID が一致しません)

私はPythonでコーディングしており、mpi4pyを使用していくつかの最適化を並行して行っています。通常の最小二乗法を使用していますが、データが大きすぎて 1 つのプロセッサに収まらないため、他のプロセスを生成するマスター プロセスがあります。これらの子プロセスはそれぞれ、最適化プロセス全体でそれぞれが使用するデータのセクションをインポートします。

最適化に scipy.optimize.minimize を使用しているため、子プロセスは親プロセスから係数の推測を受け取り、二乗誤差 (SSE) の合計を親プロセスに報告し、scipy.optimize.minimize を実行します。繰り返し、SSE の最小値を見つけようとします。最小化関数を反復するたびに、親は新しい係数の推測を子プロセスにブロードキャストし、子プロセスは SSE を再度計算します。子プロセスでは、このアルゴリズムは while ループで設定されます。親プロセスでは、scipy.optimize.minimize を呼び出すだけです。

私に問題を与えている部分では、ネストされた最適化、または最適化内の最適化を行っています。内部最適化は前述の OLS 回帰であり、外部最適化は内部最適化の係数を使用する別の関数を最小化します (OLS 回帰)。

したがって、私の親プロセスには、最小化する 2 つの関数があり、2 番目の関数は最初の関数を呼び出し、2 番目の関数の最適化の反復ごとに新しい最適化を行います。子プロセスには、これら 2 つの最適化のためにネストされた while ループがあります。

うまくいけば、それはすべて理にかなっています。さらに情報が必要な場合は、お知らせください。

親プロセスに関連するコードは次のとおりです。

子プロセスに関連するコードは次のとおりです。

私の問題は、外側の最小化を 1 回繰り返した後、次のエラーが吐き出されることです。

この「リング ID」エラーまたはその修正方法に関する情報を見つけることができませんでした。助けていただければ幸いです。ありがとう!