私はWindows HPCクラスタ上でPythonスクリプトを実行しています。スクリプト内の関数は、multiprocessing
パッケージのstarmap
を使用して、特定の計算集約型プロセスを並列化します。HPCクラスタでのPythonマルチプロセッシングの使用
私は、単一の非クラスタマシンでスクリプトを実行すると、予想されるスピードブーストが得られます。ノードにログインしてスクリプトをローカルで実行すると、予想される速度向上が得られます。ただし、ジョブマネージャがスクリプトを実行すると、multiprocessing
からの速度向上が完全に緩和されるか、時には2倍遅くなることもあります。 starmap
関数が呼び出されたときにメモリページングが発生していることがわかりました。これは、Pythonのmultiprocessing
の性質、すなわち、別のPythonインタプリタが各コアに対して開始されるという事実と関係していると考えられます。
コンソールから1つのノードから正常に実行されたため、HPC_CREATECONSOLE=True
でスクリプトを実行しようとしましたが、役に立たなくなりました。
multiprocessing
を使用するPythonスクリプトを実行する際に使用する必要があるジョブマネージャ内の設定はありますか? multiprocessing
はHPCクラスタには不適切ですか?