我之前通过 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))
一个处理器的结果是:
10000 loops, best of 3: 43 µs per loop
100 loops, best of 3: 4.77 ms per loop
你能告诉我结果对你来说是否正常,如果是,为什么计算时间会有如此巨大的差异?
最好的问候,弗拉维恩。