EternalX2000
2021-11-25 19:09
采纳率: 0%
浏览 19

numba无法并行计算报错,求解答

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
from numba import njit, prange
import numpy as np
from time import time

@njit(parallel=True)
def func(x):
    su = 0
    for i in prange(10000):
        for j in prange(1000):
            su = su + i - j + 1 / (x[j]+1)
    return i
start=time()
a=func(np.arange(1000))
end=time()
print('Running time:'+str(end-start)+'s')
print(a)

运行结果及报错内容

Failed in nopython mode pipeline (step: convert to parfors)
Use of reduction variable 'su' other than in a supported reduction function is not permitted.
File "D:\python\final_project\test2.py", line 13, in
a=func(np.arange(1000))

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • CSDN专家-陈畅didphp 2021-11-26 15:09

    现在用的 numba 是什么版本?不行换低一个版本号的 numba 试试

    评论
    解决 无用
    打赏 举报
  • from numba import njit, prange
    import numpy as np
    from time import time
    
    
    @njit()
    def func(x):
        su=0
        for i in prange(10000):
            for j in prange(1000):
                su = su + i - j + 1 / (x[j] + 1)
        return su
    
    
    start = time()
    
    a = func(np.arange(1000))
    print(a)
    end = time()
    print('Running time:' + str(end - start) + 's')
    

    parallel=True
    

    删除就可以运行了

    img


    有帮助请采纳

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题