繁体   English   中英

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

[英]Why does numba's parallel=True make this computation 3 times slower?

这样做时:

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 range 而不是 range:

from numba import jit, prange

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

然后需要 1.8 秒而不是 5.4 秒:并行化工作。

暂无
暂无

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

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