私は以下のPythonプログラムを、クラスターコンピューティング機能で順次バージョンと並列バージョンの両方で試しました。私は明らかに(トップコマンドを使用して)並列プログラムのために開始するプロセスをもっと見ることができました。しかし、私が時間を取ると、それは並列バージョンがより多くの時間を費やしているようです。理由は何でしょうか?私はコードとタイミング情報を添付します。このマルチプロセッシングコードがシリアルより遅いのはなぜですか?
#parallel.py
from multiprocessing import Pool
import numpy
def sqrt(x):
return numpy.sqrt(x)
pool = Pool()
results = pool.map(sqrt, range(100000), chunksize=10)
#seq.py
import numpy
def sqrt(x):
return numpy.sqrt(x)
results = [sqrt(x) for x in range(100000)]
[email protected]$ time python parallel.py > parallel.txt
real 0m1.323s
user 0m2.238s
sys 0m0.243s
[email protected]$ time python seq.py > seq.txt
real 0m0.348s
user 0m0.324s
sys 0m0.024s
MPI!=マルチプロセッシング!このコードを使用しているシステムに関するさらに多くの情報を指定する必要があります。 – Zulan
クラスタには、1つのマスタノードと2つの他の計算ノードがあります。各ノードには6つのコアがあります。並列バージョンではCPU使用率が130%を超えています –
Pythonマルチプロセッシング[複数のノード間で作業を分散しません](https://stackoverflow.com/questions/5181949/using-the-multiprocessing-module-for-cluster-computing) )。 – Zulan