【发布时间】:2020-02-13 12:16:40
【问题描述】:
我正在尝试使用 numba 加速以下功能。
import numpy as np
from numba import jit, prange
@jit(nopython=True, parallel=True)
def find_reg_numba(states):
reg = []
states_sum = np.sum(states, axis=1)
for i in prange(states.shape[0]):
if states_sum[i] > 0 and states_sum[i] < 5:
reg.append(states[i])
return reg
states 是使用以下函数生成的
def generate_states(size):
# size is a natural number
states = np.array(list(map(list, itertools.product([0., 1.], repeat = size))))
return states
当我尝试使用find_reg 函数时,我得到以下错误跟踪。
double free or corruption (!prev)
Aborted (core dumped)
我的 numba 版本是0.48.0。
如何解决这个问题?
【问题讨论】:
-
你有
reg = []; reg = []。你想要:reg = []; reg_size = []。find_reg_numba也不返回任何东西。你想要:return reg, reg_size? -
我已经编辑了我的代码,我只想要
reg,因为reg_size可以稍后计算。 -
奇怪的是,大多数代码运行都可以,但偶尔我会得到:错误
double free or corruption (!prev) repl process died unexpectedly: signal: aborted (core dumped)。这在非 Numba 版本中不会发生(即不使用装饰器)。 -
我得到
double free or corruption (!prev)Segmentation fault (core dumped)的所有运行。我的 numba 版本是0.48.0。