繁体   English   中英

并行计算的性能低于 Python 中的无并行计算

[英]Performance of Parallel computing is lower than No parallel computing in Python

我只是写了一个在 Numba 上处理列表和并行的示例,如下所示:Parallel 和 No Parallel:

平行

@njit(parallel=True)
def evaluate():
  n = 1000000
  a = [0]*n
  sum = 0
  for i in prange(n):
    a[i] = i*i
  for i in prange(n):
    sum += a[i]
  return sum

无并行

def evaluate2():
  n = 1000000
  a = [0]*n
  sum = 0
  for i in range(n):
    a[i] = i*i
  for i in range(n):
    sum += a[i]
  return sum

并比较评估时间

t.tic()
print(evaluate())
t.toc()

结果:333332833333500000 经过的时间是 0.233338 秒。

t.tic()
print(evaluate2())
t.toc()

结果:333332833333500000 经过的时间是 0.195136 秒。

完整代码可以从 Colab 获得

答案是操作的数量仍然很少。 当我将 n 更改为 100,000,000 时,性能发生了显着变化。

我还没有在 Numba 中尝试过。 但是,当 CPU 用作非并行处理器并且 GPU 用于并行处理时,这恰好发生在 Matlab 或其他编程语言中。 处理小数据时,CPU处理速度超过GPU,并行计算无用。 只有当处理数据大小超过一定值时,并行处理才有效。 有一些基准可以向您展示并行处理何时有效。 我读过论文,他们在代码中放置了开关,用于在处理过程中在 CPU 和 GPU 之间进行选择。 用一个大数组尝试相同的代码并比较结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM