私はipyparallelとjupyterノートブックで分散処理を行う方法を理解しようとしているので、いくつかのテストを行い、奇妙な結果を得ました。ipyparallel奇妙なオーバーヘッド動作
from ipyparallel import Client
%px import numpy as np
rc = Client()
dview = rc[:]
bview = rc.load_balanced_view()
print(len(dview))
print(len(bview))
data = [np.random.rand(10000)] * 4
%time np.sin(data)
%%time #45.7ms
results = dview.map(np.sin, data)
results.get()
%%time #110ms
dview.push({'data': data})
%px results = np.sin(data)
results
%%time #4.9ms
results = np.sin(data)
results
%%time #93ms
results = bview.map(np.sin, data)
results.get()
オーバーヘッドの問題は何ですか? タスクI/Oはこのケースではバインドされていますか? 私はより大きな配列を試しましたが、並列処理をしなくてもより良い時間を得ました。
アドバイスをいただきありがとうございます。
ローカルマシンで実行されています。ノードは同じマシン上で実行されている単なるエンジンです。 –
しかし、IpyparallelはまだZeroMQプロトコルを使用しています。理論的には、MPIを使用して速度を上げることができます。 –