Python Numba:双重释放或损坏(!prev)中止(内核转储)
我正在尝试使用numba来加速下面的函数Python Numba:双重释放或损坏(!prev)中止(内核转储),python,numpy,numba,Python,Numpy,Numba,我正在尝试使用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
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
当我尝试使用find_reg
函数时,我得到以下错误跟踪
double free or corruption (!prev)
Aborted (core dumped)
我的numba版本是0.48.0
如何解决此问题?不确定代码产生错误的原因。相关错误帖子如下:
import numpy as np
from numba import jit
import itertools
@jit(nopython=True, parallel=True)
def find_reg_numba(states):
states_sum = np.sum(states, axis=1)
# Find indexes satisfying condition using np.where as described https://www.geeksforgeeks.org/numpy-where-in-python/
indexes = np.where((states_sum > 0) & (states_sum < 5))
return states[indexes]
def generate_states(size):
# size is a natural number
states = np.array(list(map(list, itertools.product([0., 1.], repeat = size))))
return states
结果
for size in range(10):
s = generate_states(size)
r = find_reg_numba(s)
print(f'Size: {size}\n Result: \n{r}')
Size: 0
Result:
[]
Size: 1
Result:
[[1.]]
Size: 2
Result:
[[0. 1.]
[1. 0.]
[1. 1.]]
Size: 3
Result:
[[0. 0. 1.]
[0. 1. 0.]
[0. 1. 1.]
[1. 0. 0.]
[1. 0. 1.]
[1. 1. 0.]
[1. 1. 1.]]
Size: 4
Result:
[[0. 0. 0. 1.]
[0. 0. 1. 0.]
[0. 0. 1. 1.]
[0. 1. 0. 0.]
[0. 1. 0. 1.]
[0. 1. 1. 0.]
[0. 1. 1. 1.]
[1. 0. 0. 0.]
[1. 0. 0. 1.]
[1. 0. 1. 0.]
[1. 0. 1. 1.]
[1. 1. 0. 0.]
[1. 1. 0. 1.]
[1. 1. 1. 0.]
[1. 1. 1. 1.]]
Size: 5
Result:
[[0. 0. 0. 0. 1.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 1. 1.]
[0. 0. 1. 0. 0.]
[0. 0. 1. 0. 1.]
[0. 0. 1. 1. 0.]
[0. 0. 1. 1. 1.]
[0. 1. 0. 0. 0.]
[0. 1. 0. 0. 1.]
[0. 1. 0. 1. 0.]
[0. 1. 0. 1. 1.]
[0. 1. 1. 0. 0.]
[0. 1. 1. 0. 1.]
[0. 1. 1. 1. 0.]
[0. 1. 1. 1. 1.]
[1. 0. 0. 0. 0.]
[1. 0. 0. 0. 1.]
[1. 0. 0. 1. 0.]
[1. 0. 0. 1. 1.]
[1. 0. 1. 0. 0.]
[1. 0. 1. 0. 1.]
[1. 0. 1. 1. 0.]
[1. 0. 1. 1. 1.]
[1. 1. 0. 0. 0.]
[1. 1. 0. 0. 1.]
[1. 1. 0. 1. 0.]
[1. 1. 0. 1. 1.]
[1. 1. 1. 0. 0.]
[1. 1. 1. 0. 1.]
[1. 1. 1. 1. 0.]]
Size: 6
Result:
[[0. 0. 0. 0. 0. 1.]
[0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1. 1.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0. 1.]
[0. 0. 0. 1. 1. 0.]
[0. 0. 0. 1. 1. 1.]
[0. 0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0. 1.]
[0. 0. 1. 0. 1. 0.]
[0. 0. 1. 0. 1. 1.]
[0. 0. 1. 1. 0. 0.]
[0. 0. 1. 1. 0. 1.]
[0. 0. 1. 1. 1. 0.]
[0. 0. 1. 1. 1. 1.]
[0. 1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 1.]
[0. 1. 0. 0. 1. 0.]
[0. 1. 0. 0. 1. 1.]
[0. 1. 0. 1. 0. 0.]
[0. 1. 0. 1. 0. 1.]
[0. 1. 0. 1. 1. 0.]
[0. 1. 0. 1. 1. 1.]
[0. 1. 1. 0. 0. 0.]
[0. 1. 1. 0. 0. 1.]
[0. 1. 1. 0. 1. 0.]
[0. 1. 1. 0. 1. 1.]
[0. 1. 1. 1. 0. 0.]
[0. 1. 1. 1. 0. 1.]
[0. 1. 1. 1. 1. 0.]
[1. 0. 0. 0. 0. 0.]
[1. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 1. 0.]
[1. 0. 0. 0. 1. 1.]
[1. 0. 0. 1. 0. 0.]
[1. 0. 0. 1. 0. 1.]
[1. 0. 0. 1. 1. 0.]
[1. 0. 0. 1. 1. 1.]
[1. 0. 1. 0. 0. 0.]
[1. 0. 1. 0. 0. 1.]
[1. 0. 1. 0. 1. 0.]
[1. 0. 1. 0. 1. 1.]
[1. 0. 1. 1. 0. 0.]
[1. 0. 1. 1. 0. 1.]
[1. 0. 1. 1. 1. 0.]
[1. 1. 0. 0. 0. 0.]
[1. 1. 0. 0. 0. 1.]
[1. 1. 0. 0. 1. 0.]
[1. 1. 0. 0. 1. 1.]
[1. 1. 0. 1. 0. 0.]
[1. 1. 0. 1. 0. 1.]
[1. 1. 0. 1. 1. 0.]
[1. 1. 1. 0. 0. 0.]
[1. 1. 1. 0. 0. 1.]
[1. 1. 1. 0. 1. 0.]
[1. 1. 1. 1. 0. 0.]]
Size: 7
Result:
[[0. 0. 0. 0. 0. 0. 1.]
[0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 1. 1.]
[0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 1. 0. 1.]
[0. 0. 0. 0. 1. 1. 0.]
[0. 0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 1.]
[0. 0. 0. 1. 0. 1. 0.]
[0. 0. 0. 1. 0. 1. 1.]
[0. 0. 0. 1. 1. 0. 0.]
[0. 0. 0. 1. 1. 0. 1.]
[0. 0. 0. 1. 1. 1. 0.]
[0. 0. 0. 1. 1. 1. 1.]
[0. 0. 1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 1.]
[0. 0. 1. 0. 0. 1. 0.]
[0. 0. 1. 0. 0. 1. 1.]
[0. 0. 1. 0. 1. 0. 0.]
[0. 0. 1. 0. 1. 0. 1.]
[0. 0. 1. 0. 1. 1. 0.]
[0. 0. 1. 0. 1. 1. 1.]
[0. 0. 1. 1. 0. 0. 0.]
[0. 0. 1. 1. 0. 0. 1.]
[0. 0. 1. 1. 0. 1. 0.]
[0. 0. 1. 1. 0. 1. 1.]
[0. 0. 1. 1. 1. 0. 0.]
[0. 0. 1. 1. 1. 0. 1.]
[0. 0. 1. 1. 1. 1. 0.]
[0. 1. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 1.]
[0. 1. 0. 0. 0. 1. 0.]
[0. 1. 0. 0. 0. 1. 1.]
[0. 1. 0. 0. 1. 0. 0.]
[0. 1. 0. 0. 1. 0. 1.]
[0. 1. 0. 0. 1. 1. 0.]
[0. 1. 0. 0. 1. 1. 1.]
[0. 1. 0. 1. 0. 0. 0.]
[0. 1. 0. 1. 0. 0. 1.]
[0. 1. 0. 1. 0. 1. 0.]
[0. 1. 0. 1. 0. 1. 1.]
[0. 1. 0. 1. 1. 0. 0.]
[0. 1. 0. 1. 1. 0. 1.]
[0. 1. 0. 1. 1. 1. 0.]
[0. 1. 1. 0. 0. 0. 0.]
[0. 1. 1. 0. 0. 0. 1.]
[0. 1. 1. 0. 0. 1. 0.]
[0. 1. 1. 0. 0. 1. 1.]
[0. 1. 1. 0. 1. 0. 0.]
[0. 1. 1. 0. 1. 0. 1.]
[0. 1. 1. 0. 1. 1. 0.]
[0. 1. 1. 1. 0. 0. 0.]
[0. 1. 1. 1. 0. 0. 1.]
[0. 1. 1. 1. 0. 1. 0.]
[0. 1. 1. 1. 1. 0. 0.]
[1. 0. 0. 0. 0. 0. 0.]
[1. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 1. 0.]
[1. 0. 0. 0. 0. 1. 1.]
[1. 0. 0. 0. 1. 0. 0.]
[1. 0. 0. 0. 1. 0. 1.]
[1. 0. 0. 0. 1. 1. 0.]
[1. 0. 0. 0. 1. 1. 1.]
[1. 0. 0. 1. 0. 0. 0.]
[1. 0. 0. 1. 0. 0. 1.]
[1. 0. 0. 1. 0. 1. 0.]
[1. 0. 0. 1. 0. 1. 1.]
[1. 0. 0. 1. 1. 0. 0.]
[1. 0. 0. 1. 1. 0. 1.]
[1. 0. 0. 1. 1. 1. 0.]
[1. 0. 1. 0. 0. 0. 0.]
[1. 0. 1. 0. 0. 0. 1.]
[1. 0. 1. 0. 0. 1. 0.]
[1. 0. 1. 0. 0. 1. 1.]
[1. 0. 1. 0. 1. 0. 0.]
[1. 0. 1. 0. 1. 0. 1.]
[1. 0. 1. 0. 1. 1. 0.]
[1. 0. 1. 1. 0. 0. 0.]
[1. 0. 1. 1. 0. 0. 1.]
[1. 0. 1. 1. 0. 1. 0.]
[1. 0. 1. 1. 1. 0. 0.]
[1. 1. 0. 0. 0. 0. 0.]
[1. 1. 0. 0. 0. 0. 1.]
[1. 1. 0. 0. 0. 1. 0.]
[1. 1. 0. 0. 0. 1. 1.]
[1. 1. 0. 0. 1. 0. 0.]
[1. 1. 0. 0. 1. 0. 1.]
[1. 1. 0. 0. 1. 1. 0.]
[1. 1. 0. 1. 0. 0. 0.]
[1. 1. 0. 1. 0. 0. 1.]
[1. 1. 0. 1. 0. 1. 0.]
[1. 1. 0. 1. 1. 0. 0.]
[1. 1. 1. 0. 0. 0. 0.]
[1. 1. 1. 0. 0. 0. 1.]
[1. 1. 1. 0. 0. 1. 0.]
[1. 1. 1. 0. 1. 0. 0.]
[1. 1. 1. 1. 0. 0. 0.]]
Size: 8
Result:
[[0. 0. 0. ... 0. 0. 1.]
[0. 0. 0. ... 0. 1. 0.]
[0. 0. 0. ... 0. 1. 1.]
...
[1. 1. 1. ... 1. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]]
Size: 9
Result:
[[0. 0. 0. ... 0. 0. 1.]
[0. 0. 0. ... 0. 1. 0.]
[0. 0. 0. ... 0. 1. 1.]
...
[1. 1. 1. ... 0. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]]
您有
reg=[];reg=[]
。您想要:reg=[];注册表大小=[]
。另外,find_reg_numba
不会返回任何内容。你想要:return reg,reg\u size
?我已经编辑了我的代码,我只想要reg
,因为reg\u size
可以稍后计算。奇怪的是,你的大多数代码运行正常,但偶尔我会得到:错误双重释放或损坏(!prev)repl进程意外死亡:信号:中止(内核转储)
。在非Numba版本中不会发生这种情况(即不使用装饰器)。对于所有运行,我都会得到双重释放或损坏(!prev)分段错误(内核转储)
。我的numba版本是0.48.0
。
Size: 0
Result:
[]
Size: 1
Result:
[[1.]]
Size: 2
Result:
[[0. 1.]
[1. 0.]
[1. 1.]]
Size: 3
Result:
[[0. 0. 1.]
[0. 1. 0.]
[0. 1. 1.]
[1. 0. 0.]
[1. 0. 1.]
[1. 1. 0.]
[1. 1. 1.]]
Size: 4
Result:
[[0. 0. 0. 1.]
[0. 0. 1. 0.]
[0. 0. 1. 1.]
[0. 1. 0. 0.]
[0. 1. 0. 1.]
[0. 1. 1. 0.]
[0. 1. 1. 1.]
[1. 0. 0. 0.]
[1. 0. 0. 1.]
[1. 0. 1. 0.]
[1. 0. 1. 1.]
[1. 1. 0. 0.]
[1. 1. 0. 1.]
[1. 1. 1. 0.]
[1. 1. 1. 1.]]
Size: 5
Result:
[[0. 0. 0. 0. 1.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 1. 1.]
[0. 0. 1. 0. 0.]
[0. 0. 1. 0. 1.]
[0. 0. 1. 1. 0.]
[0. 0. 1. 1. 1.]
[0. 1. 0. 0. 0.]
[0. 1. 0. 0. 1.]
[0. 1. 0. 1. 0.]
[0. 1. 0. 1. 1.]
[0. 1. 1. 0. 0.]
[0. 1. 1. 0. 1.]
[0. 1. 1. 1. 0.]
[0. 1. 1. 1. 1.]
[1. 0. 0. 0. 0.]
[1. 0. 0. 0. 1.]
[1. 0. 0. 1. 0.]
[1. 0. 0. 1. 1.]
[1. 0. 1. 0. 0.]
[1. 0. 1. 0. 1.]
[1. 0. 1. 1. 0.]
[1. 0. 1. 1. 1.]
[1. 1. 0. 0. 0.]
[1. 1. 0. 0. 1.]
[1. 1. 0. 1. 0.]
[1. 1. 0. 1. 1.]
[1. 1. 1. 0. 0.]
[1. 1. 1. 0. 1.]
[1. 1. 1. 1. 0.]]
Size: 6
Result:
[[0. 0. 0. 0. 0. 1.]
[0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1. 1.]
[0. 0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0. 1.]
[0. 0. 0. 1. 1. 0.]
[0. 0. 0. 1. 1. 1.]
[0. 0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0. 1.]
[0. 0. 1. 0. 1. 0.]
[0. 0. 1. 0. 1. 1.]
[0. 0. 1. 1. 0. 0.]
[0. 0. 1. 1. 0. 1.]
[0. 0. 1. 1. 1. 0.]
[0. 0. 1. 1. 1. 1.]
[0. 1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 1.]
[0. 1. 0. 0. 1. 0.]
[0. 1. 0. 0. 1. 1.]
[0. 1. 0. 1. 0. 0.]
[0. 1. 0. 1. 0. 1.]
[0. 1. 0. 1. 1. 0.]
[0. 1. 0. 1. 1. 1.]
[0. 1. 1. 0. 0. 0.]
[0. 1. 1. 0. 0. 1.]
[0. 1. 1. 0. 1. 0.]
[0. 1. 1. 0. 1. 1.]
[0. 1. 1. 1. 0. 0.]
[0. 1. 1. 1. 0. 1.]
[0. 1. 1. 1. 1. 0.]
[1. 0. 0. 0. 0. 0.]
[1. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 1. 0.]
[1. 0. 0. 0. 1. 1.]
[1. 0. 0. 1. 0. 0.]
[1. 0. 0. 1. 0. 1.]
[1. 0. 0. 1. 1. 0.]
[1. 0. 0. 1. 1. 1.]
[1. 0. 1. 0. 0. 0.]
[1. 0. 1. 0. 0. 1.]
[1. 0. 1. 0. 1. 0.]
[1. 0. 1. 0. 1. 1.]
[1. 0. 1. 1. 0. 0.]
[1. 0. 1. 1. 0. 1.]
[1. 0. 1. 1. 1. 0.]
[1. 1. 0. 0. 0. 0.]
[1. 1. 0. 0. 0. 1.]
[1. 1. 0. 0. 1. 0.]
[1. 1. 0. 0. 1. 1.]
[1. 1. 0. 1. 0. 0.]
[1. 1. 0. 1. 0. 1.]
[1. 1. 0. 1. 1. 0.]
[1. 1. 1. 0. 0. 0.]
[1. 1. 1. 0. 0. 1.]
[1. 1. 1. 0. 1. 0.]
[1. 1. 1. 1. 0. 0.]]
Size: 7
Result:
[[0. 0. 0. 0. 0. 0. 1.]
[0. 0. 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 1. 1.]
[0. 0. 0. 0. 1. 0. 0.]
[0. 0. 0. 0. 1. 0. 1.]
[0. 0. 0. 0. 1. 1. 0.]
[0. 0. 0. 0. 1. 1. 1.]
[0. 0. 0. 1. 0. 0. 0.]
[0. 0. 0. 1. 0. 0. 1.]
[0. 0. 0. 1. 0. 1. 0.]
[0. 0. 0. 1. 0. 1. 1.]
[0. 0. 0. 1. 1. 0. 0.]
[0. 0. 0. 1. 1. 0. 1.]
[0. 0. 0. 1. 1. 1. 0.]
[0. 0. 0. 1. 1. 1. 1.]
[0. 0. 1. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 1.]
[0. 0. 1. 0. 0. 1. 0.]
[0. 0. 1. 0. 0. 1. 1.]
[0. 0. 1. 0. 1. 0. 0.]
[0. 0. 1. 0. 1. 0. 1.]
[0. 0. 1. 0. 1. 1. 0.]
[0. 0. 1. 0. 1. 1. 1.]
[0. 0. 1. 1. 0. 0. 0.]
[0. 0. 1. 1. 0. 0. 1.]
[0. 0. 1. 1. 0. 1. 0.]
[0. 0. 1. 1. 0. 1. 1.]
[0. 0. 1. 1. 1. 0. 0.]
[0. 0. 1. 1. 1. 0. 1.]
[0. 0. 1. 1. 1. 1. 0.]
[0. 1. 0. 0. 0. 0. 0.]
[0. 1. 0. 0. 0. 0. 1.]
[0. 1. 0. 0. 0. 1. 0.]
[0. 1. 0. 0. 0. 1. 1.]
[0. 1. 0. 0. 1. 0. 0.]
[0. 1. 0. 0. 1. 0. 1.]
[0. 1. 0. 0. 1. 1. 0.]
[0. 1. 0. 0. 1. 1. 1.]
[0. 1. 0. 1. 0. 0. 0.]
[0. 1. 0. 1. 0. 0. 1.]
[0. 1. 0. 1. 0. 1. 0.]
[0. 1. 0. 1. 0. 1. 1.]
[0. 1. 0. 1. 1. 0. 0.]
[0. 1. 0. 1. 1. 0. 1.]
[0. 1. 0. 1. 1. 1. 0.]
[0. 1. 1. 0. 0. 0. 0.]
[0. 1. 1. 0. 0. 0. 1.]
[0. 1. 1. 0. 0. 1. 0.]
[0. 1. 1. 0. 0. 1. 1.]
[0. 1. 1. 0. 1. 0. 0.]
[0. 1. 1. 0. 1. 0. 1.]
[0. 1. 1. 0. 1. 1. 0.]
[0. 1. 1. 1. 0. 0. 0.]
[0. 1. 1. 1. 0. 0. 1.]
[0. 1. 1. 1. 0. 1. 0.]
[0. 1. 1. 1. 1. 0. 0.]
[1. 0. 0. 0. 0. 0. 0.]
[1. 0. 0. 0. 0. 0. 1.]
[1. 0. 0. 0. 0. 1. 0.]
[1. 0. 0. 0. 0. 1. 1.]
[1. 0. 0. 0. 1. 0. 0.]
[1. 0. 0. 0. 1. 0. 1.]
[1. 0. 0. 0. 1. 1. 0.]
[1. 0. 0. 0. 1. 1. 1.]
[1. 0. 0. 1. 0. 0. 0.]
[1. 0. 0. 1. 0. 0. 1.]
[1. 0. 0. 1. 0. 1. 0.]
[1. 0. 0. 1. 0. 1. 1.]
[1. 0. 0. 1. 1. 0. 0.]
[1. 0. 0. 1. 1. 0. 1.]
[1. 0. 0. 1. 1. 1. 0.]
[1. 0. 1. 0. 0. 0. 0.]
[1. 0. 1. 0. 0. 0. 1.]
[1. 0. 1. 0. 0. 1. 0.]
[1. 0. 1. 0. 0. 1. 1.]
[1. 0. 1. 0. 1. 0. 0.]
[1. 0. 1. 0. 1. 0. 1.]
[1. 0. 1. 0. 1. 1. 0.]
[1. 0. 1. 1. 0. 0. 0.]
[1. 0. 1. 1. 0. 0. 1.]
[1. 0. 1. 1. 0. 1. 0.]
[1. 0. 1. 1. 1. 0. 0.]
[1. 1. 0. 0. 0. 0. 0.]
[1. 1. 0. 0. 0. 0. 1.]
[1. 1. 0. 0. 0. 1. 0.]
[1. 1. 0. 0. 0. 1. 1.]
[1. 1. 0. 0. 1. 0. 0.]
[1. 1. 0. 0. 1. 0. 1.]
[1. 1. 0. 0. 1. 1. 0.]
[1. 1. 0. 1. 0. 0. 0.]
[1. 1. 0. 1. 0. 0. 1.]
[1. 1. 0. 1. 0. 1. 0.]
[1. 1. 0. 1. 1. 0. 0.]
[1. 1. 1. 0. 0. 0. 0.]
[1. 1. 1. 0. 0. 0. 1.]
[1. 1. 1. 0. 0. 1. 0.]
[1. 1. 1. 0. 1. 0. 0.]
[1. 1. 1. 1. 0. 0. 0.]]
Size: 8
Result:
[[0. 0. 0. ... 0. 0. 1.]
[0. 0. 0. ... 0. 1. 0.]
[0. 0. 0. ... 0. 1. 1.]
...
[1. 1. 1. ... 1. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]]
Size: 9
Result:
[[0. 0. 0. ... 0. 0. 1.]
[0. 0. 0. ... 0. 1. 0.]
[0. 0. 0. ... 0. 1. 1.]
...
[1. 1. 1. ... 0. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]]