lapjv - незаконная инструкция (ядро сброшено)

Я читал, что ошибка в недопустимой инструкции (сбрасывается ядро) может быть связана с некоторыми проблемами с компьютером или версиями.

Однако мой случай странный, потому что у меня есть два сценария - один сценарий-пустышка для проверки функции, а другой - мой настоящий сценарий. Странно то, что это работает для моего фиктивного скрипта (минимальная стоимость и все рассчитано правильно, скрипт выполнен без ошибок и т. Д.). Но когда я пытался выполнить функцию в моем реальном скрипте, он выдает ошибку "Недопустимая инструкция (core dumped)".

Я проверил, что в обоих случаях я использовал квадратную матрицу класса "numpy.ndarray", а элементы имеют класс "numpy.float64" для обоих. Единственное отличие состоит в том, что фиктивная матрица представляет собой квадратную матрицу 4x4, в то время как фактическая квадратная матрица имеет размер 200 на 200. Я попытался уменьшить размер примерно до 50 на 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 ответа

Я исправил это, переустановив новую среду. Теперь я использую Anaconda вместо Python 3.6.3

Перенаправляю вас по этой ссылке https://forums.developer.nvidia.com/t/illegal-instruction-core-dumped/165488 . установка numpy==1.19.4 решил мою проблему.

Другие вопросы по тегам