以前に MPI (および Fortran :)) を介して並列計算を使用したことがあります。IPython の並列機能を使用したいと思います。
私の質問は、 http://ipython.org/ipython-doc/dev/parallel/asyncresult.htmlに触発された、次のコードのパフォーマンスの低下に関連しています。
from IPython.parallel import Client
import numpy as np
_procs = Client()
print 'engines #', len(_procs)
dv = _procs.direct_view()
X = np.linspace(0,100)
add = lambda a,b: a+b
sq = lambda x: x*x
%timeit reduce(add, map(sq, X))
%timeit reduce(add, dv.map(sq, X))
1 つのプロセッサの結果は次のとおりです。
10000 loops, best of 3: 43 µs per loop
100 loops, best of 3: 4.77 ms per loop
結果が正常に見えるかどうか教えていただけますか? もしそうなら、なぜ計算時間にこれほど大きな違いがあるのでしょうか?
よろしく、フラビエン。