lapjv-非法指令(核心已转储)

时间:2018-07-19 08:35:08

标签: python operating-system cpu system-requirements

我已阅读到非法指令(核心转储)错误可能是由于某些计算机问题或版本问题所致。

但是,我的情况很奇怪,因为我有两个脚本-一个用于测试功能的伪脚本,另一个是我的实际脚本。奇怪的是,它适用于我的虚拟脚本(最低成本和正确计算的所有内容,无错误执行的脚本等)。但是,当我尝试在实际脚本中执行该功能时,它将引发一个非法指令(核心转储)错误。

我已经检查过,在两种情况下,我都输入了类'numpy.ndarray'的方阵,并且两个元素都属于类'numpy.float64'。 唯一的区别是虚拟矩阵是4x4的正方形矩阵,而实际的正方形矩阵的大小是200 x200。我尝试将大小减小到大约50 x 50,只是为了测试并查看是否出了问题,但是仍然抛出相同的结果错误。

任何建议,我们将不胜感激,谢谢!

import numpy as np
from lapjv import lapjv

a=np.array([[5.34,3.04,2.04,8.02],
    [7.0,9.34,2.5,6.43],
    [6.,4.43,5.2,7.45],
    [5.34,7.42,7.43,8.44]])

print(type(a))
print(type(a[0]))
print(type(a[0][0]))


row_ind, col_ind, _ =lapjv(a)
print(row_ind)
print(col_ind)

这将返回:

class 'numpy.ndarray'  
class 'numpy.ndarray'  
class 'numpy.float64'  
[2 3 1 0]  
[3 2 0 1]

在命令行上。 (一切正常)。

但是对于我的实际代码:

from lapjv import lapjv
import numpy as np

<some code here>
if(len(qDes)<len(dbDes)):
    #pad rows
    padRows=np.zeros((diff,len(dbDes)),np.int64)
    print(len(padRows))
    print(len(padRows[0]))
    newCostMat=np.r_[costMatNP,padRows]

elif(len(qDes)>len(dbDes)):
    #padCols
    padCols=np.zeros((len(qDes),diff),np.int64)
    newCostMat=np.c_[costMatNP,padCols]

else:
    #no padding
    newCostMat=costMatNP

print(len(newCostMat[0]))
print(len(newCostMat))

print(type(newCostMat))
print(type(newCostMat[0]))
print(type(newCostMat[0][0]))

#jonker-volgenant algorithm
row_ind,col_ind, _=lapjv(newCostMat)

返回:

3  
201  
201  
201  
class 'numpy.ndarray'  
class 'numpy.ndarray'  
class 'numpy.float64'  
Illegal instruction (core dumped)  

2 个答案:

答案 0 :(得分:0)

我通过重新安装新环境来修复它。现在我将Anaconda与Python 3.6.3结合使用

答案 1 :(得分:0)

将您重定向到此链接 https://forums.developer.nvidia.com/t/illegal-instruction-core-dumped/165488。安装 numpy==1.19.4 解决了我的问题。