我看到了关于如何进行分布式计算的tutorial:
def parallel_dot(dview, A, B):
dview.scatter('A', A)
dview['B'] = B
dview.execute('C = numpy.dot(A, B)')
return dview.gather('C')
np.allclose(parallel_dot(dview, A, B),
np.dot(A, B))
为什么教程使用直接视图?如何使用负载平衡视图实现这一点?
我做了一些基准测试,试图找出它的表现如何。
t1 = []
t2 = []
for ii in range(10, 1000, 10):
A = np.random.rand(10000, ii).astype(np.longdouble).T
B = np.random.rand(10000, 100).astype(np.longdouble)
t_ = time.time()
parallel_dot(dview, A, B).get()
t1.append(time.time() - t_)
t_ = time.time()
np.dot(A, B)
t2.append(time.time() - t_)
plt.plot( range(10, 1000, 10), t1 )
plt.plot( range(10, 1000, 10), t2 )
结果非常糟糕(蓝色是平行的,绿色是连续的):
答案 0 :(得分:1)
这几乎不值得加载。首先,你要做矢量乘法,而不是真正的矩阵到矩阵乘法。试试吧,哦10000x10000矩阵。如果你有多个核心我认为你可能会开始看到一些差异。