gpt4 book ai didi

python - 为什么 numba 的 parallel=True 会使这个计算慢 3 倍?

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:04 28 4
gpt4 key购买 nike

执行此操作时:

import numpy as np
from numba import jit

@jit
def doit(A, Q, n):
for i in range(len(Q)):
Q[i] = np.sum(A[i:i+n] <= A[i+n])

A = np.random.random(1000*1000)
n = 5000
Q = np.zeros(len(A)-n)
doit(A, Q, n)

运行时间在我的电脑上大约需要 5.4 秒。

我尝试使用 numba 的并行化功能:

@jit(parallel=True)
def doit(A, Q, n):
for i in range(len(Q)):
Q[i] = np.sum(A[i:i+n] <= A[i+n])

相反,它需要 17 秒。

为什么 numba 的 parallel=True 使这个计算速度慢了 3 倍而不是更快?

最佳答案

我刚刚找到答案:缺少一个字符:p范围而不是范围:

from numba import jit, prange

@jit(parallel=True)
def doit(A, Q, n):
for i in prange(len(Q)):
...

然后它需要 1.8 秒而不是 5.4 秒:并行化成功了。

关于python - 为什么 numba 的 parallel=True 会使这个计算慢 3 倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53170588/

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