重いシンボリック計算 (多くの複数のシンボリック積分) を含むコードがあります。また、8 コア CPU コンピューター (18 GB RAM) と小さな 32 CPU クラスターの両方にアクセスできます。限られた時間内にクラスターを使用して別の教授の研究室に行くよりも、教授の 8 コア PC にとどまることを好みますが、SMP システムで動作するかどうかわからないため、並行するものを探していますSMPとクラスターの両方で使用できるPythonのツールであり、もちろん、あるシステムのコードを他のシステムで使用するために簡単かつ最小限の労力で変更できることを好みます。
これまでのところ、Parallel Python (PP) が私のニーズに有望であることがわかりましたが、最近、MPI も同じことを行うと言いました (pyMPI または MPI4py)。Web 上ではこれについてほとんど議論されていないように見えるため、これを承認できませんでした。ここでのみ、MPI (pyMPI または MPI4py の両方) がクラスターでのみ使用可能であると述べられています。
「Parallel Python」が私の唯一の選択肢ですか、それとも MPI ベースのソリューションを喜んで使用できますか? 私のニーズにとってどちらがより有望ですか?
PS。それらのどれも非常に包括的なドキュメントを持っていないようですので、並列計算の初心者を助けることができる公式Webサイト以外へのリンクを知っていれば、回答でそれらについても言及していただければ幸いです:)
編集します。
私のコードには 2 つのループがあり、外側のループは、前のステップで計算された値に応じて各ステップが反復メソッド (再帰的なソリューション)であるため、並列化できません。外側のループには内側のループと、内側のループの結果全体に依存する3 つの追加の方程式が含まれています。ただし、内側のループ(各ステップで計算可能な 12 個の方程式のうち 9 個を含む) は安全に並列化できます。すべての 3*3 方程式は互いに独立しており、前のステップにのみ依存します。私の方程式はすべて、それぞれが多くの複数のシンボリック積分を含んでいるため、計算量が非常に多くなります。一見、内側のループの 9 つの方程式を両方とも並列化できます。これらの 9 つの方程式のそれぞれの積分計算を個別に行い、内側のループと一緒に他の 3 つの方程式のすべての積分を並列化します。私の必要性をよりよく理解するのに役立つ場合は、ここで私のコードを見つけることができます。それはSageMath内に書かれています。