如何解决是否可以在nopython并行模式下将numba与numpy sum一起用于for循环内的数组切片,而无需创建竞争条件?
初始条件: 数组数据是一个长度为50000 p的1d numpy数组,它是一个整数,可以在10到300之间变化。
这会导致错误:
from numba import jit,njit,prange
import numpy as np
@njit(parallel=True)
def jitmovavg(data,p):
arr_size=len(data)
mean_array=np.zeros(arr_size-p+1)
for i in prange(len(mean_array)):
mean_array[i]=np.sum(data[i:i+p])/p
return mean_array
这不会导致错误,但是对于大量的p来说很慢:
@njit
def jitmovavg(data,p):
arr_size=len(data)
mean_array=np.zeros(arr_size-p+1)
for i in range(len(mean_array)):
mean_array[i]=np.sum(data[i:i+p])/p
return mean_array
我猜想这与并行循环中的竞争条件有关。有办法解决这个问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。