gpt4 book ai didi

python - 如何在 numpy/ipython.parallel 中进行分布式矩阵乘法?

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:34 27 4
gpt4 key购买 nike

我看到了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))

为什么教程使用直接 View ?如何使用负载平衡 View 来实现这一点?

我做了一些基准测试来尝试弄清楚它的性能如何。

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 )

结果非常糟糕(蓝色是并行,绿色是串行):

matrix multiplication benchmark

最佳答案

这根本不是一个值得的负担。首先,您正在进行向量乘法,而不是真正的矩阵到矩阵乘法。尝试说,哦 10000x10000 矩阵。如果您有多个核心,我认为您可能会开始看到一些差异。

关于python - 如何在 numpy/ipython.parallel 中进行分布式矩阵乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26965916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com