Ошибка недопустимой инструкции (дамп ядра) на Jetson Nano

Извините, если мое описание длинное и скучное, но я хочу предоставить вам наиболее важные детали для решения моей проблемы. Недавно я купил комплект разработчика Jetson Nano с 4 Гб ОЗУ, и, чтобы получить, как я считаю, лучшую конфигурацию для обнаружения объектов, я следую этому руководству, сделанному Адрианом Роузброком из Pyimagesearch:

https://www.pyimagesearch.com/2020/03/25/how-to-configure-your-nvidia-jetson-nano-for-computer-vision-and-deep-learning/ Дата: март 2020 г. Краткое изложение этого руководства:

  • 1: Flash Jetson Pack 4.2 .img внутри microSD для Jetson Nano (у меня 32 ГБ класса A)
  • 2: После установки на плату Nano настройте Ubuntu 18.04 и полностью избавьтесь от Libreoffice, чтобы получить больше доступного места.
  • 3: Шаг №5: Установите зависимости на уровне системы (включая cmake, python3 и редактор nano)
  • 4: Обновить CMake (без ошибок)
  • 5. Установка зависимостей системного уровня OpenCV и других зависимостей разработки.
  • 6. Настройте виртуальные среды Python на вашем Jetson Nano (успешно установлены virtualenv и virtualenvwrapper без ошибок, включая версию файла bash с nano)
  • 7. Создайте virtaul env с помощью python 3 и установите protobuf и libprotobuf, чтобы получить более эффективный Tensorflow. Успешно установлен. На то, чтобы закончить, потребовался час, это нормально
  • 8: А вот и проблема: установите numpy и cython внутри этого env и проверьте, импортируя библиотеку numpy. Когда я пытаюсь сделать этот шаг, я получаю: Нелегальная инструкция (ядро сброшено), как вы можете видеть на изображении: [Ошибка с Python3.6.9 ]: https://i.stack.imgur.com/rAZhm.png

Я сказал, что все равно продолжим этот урок:

  • 9: Установите Scipy v1.3.3: все в порядке с первыми тремя строками, но когда мне нужно использовать python для выполнения файла stup.py, снова появляется ОН (не клоун). [Не могу выполнить эту строку]: https://i.stack.imgur.com/wFmnt.jpg

Затем я провел эксперимент, я создал этот p2cv4 env с Python 2, установил numpy и протестировал его: [С Python 2]: https://i.stack.imgur.com/zCWif.png

Я могу выйти (), когда захочу, и выполнить другие строки, использующие python. Итак, я пришел к выводу, что это проблема версии python. Когда я хочу выполнить какой-либо код Python, терминал завершает программу сбросом ядра, apt-get или pip НЕ показывают никаких ошибок. И я хочу использовать python 3, потому что когда-нибудь в будущем для пакета или библиотеки потребуется python 3.

Для python 3 последняя версия для Jetson Nano - 3.6.9, и idk, какая версия была активна в марте 2020 года, как та, которую использовал Адриан в то время.

В других сообщениях я читал, что этот SIGILL появляется, когда версия пакета или библиотеки, такая как Numpy of TF, больше не совместима с конкретным старым или маломощным процессором, как в этих сообщениях: Недопустимая аппаратная инструкция при попытке импортировать тензорный поток, https://github.com/numpy/numpy/issues/9532

Поэтому я хочу перейти на более старую версию Python, например 3.6.5 или 3.5, но я не могу найти четких шагов для этого в Ubuntu. Я думаю, что это исправит эту ошибку, и позвольте мне продолжить настройку Jetson Nano.

В руководстве pyimageseach используется Python 3.6, но он не указывает, последняя версия - 3.6.9 или другая. Если эту ошибку вызывает не Python, дайте мне знать. Помогите, пожалуйста!


person RedEye    schedule 08.01.2021    source источник
comment
Вообще говоря, ошибка недопустимой инструкции обычно возникает при попытке запустить что-то, скомпилированное для архитектуры 1 CPU, на платформе с другой архитектурой. Архитектуры даже не должны сильно отличаться; Я видел, что это происходило, когда архитектуры ЦП были немного разными версиями x86-64.   -  person jjramsey    schedule 08.01.2021
comment
Jetson Nano поставляется с четырехъядерным процессором ARM Cortex-A57 MPCore, и это то же самое, что показано в его руководстве. Может ли версия python изменить так много конфигураций, которые хорошо работали в прошлом? Потому что он тоже использует 3.6, но не знаю, 3.6.9 (как у меня)   -  person RedEye    schedule 08.01.2021


Ответы (6)


У меня была такая же проблема, следуя тому же руководству. Кстати, в этом сценарии numpy отлично работал в python, когда НЕ в virtualenv. GDB указал на проблему в libopenblas.

Мое решение заключалось в том, чтобы начать с нуля со свежего образа jetson-nano-4gb-jp441-sd-card-image.zip и повторить это руководство без использования virtualenv. Скорее всего, вы единственный разработчик этого Nano и можете жить без virtualenv.

Я успешно следовал этим руководствам: https://qengineering.eu/install-opencv-4.5-on-jetson-nano.html

Пропустите части virtualenv https://www.pyimagesearch.com/2019/05/06/getting-started-with-the-nvidia-jetson-nano/

Я обнаружил, что это также необходимо на данном этапе: ..установите официальный Jetson Nano TensorFlow от ..

ln -s /usr/include/locale.h /usr/include/xlocale.h

Как только я сделал эту символическую ссылку, я смог продолжить остальную часть руководства (за исключением virtualenv), и мне удалось не сломать numpy.

Это не идеально, но я надеюсь, что это поможет.

person doommonkey    schedule 09.01.2021

«Недопустимая инструкция» может быть связана с недавним изменением в getauxval (AT_HWCAP), попыткой чтения информации cpuid из / sys / devices в случае, если getauxval не удалось. (PRs 2952 и 3004 OpenBLAS)

export OPENBLAS_CORETYPE = ARMV8 (или другое оборудование) перед запуском python, мы надеемся, это обойдется. Например:

OPENBLAS_CORETYPE=ARMV8 python

Если вы хотите сделать этот экспорт постоянным, вам следует открыть файл .bashrc, набрав на терминале:

nano ~/.bashrc

После этого просто добавьте export OPENBLAS_CORETYPE = ARMV8 в конец вашего файла .bashrc, сохраните / выйдите и перезагрузите вашу систему:

export OPENBLAS_CORETYPE=ARMV8

подробнее смотрите:

https://github.com/numpy/numpy/issues/18131 https://www.reddit.com/r/JetsonNano/comments/ktcyoh/illegal_instructioncore_on_dumped_dumped_ а>

person Vladimir Simoes da Luz Junior    schedule 05.02.2021
comment
это сработало для меня, и это должен быть принятый ответ! - person Hoa Vu; 25.04.2021
comment
это сработало без дополнительных шагов, должен быть принятый ответ +1 - person buttonpol; 06.05.2021
comment
Пробовал OPENBLAS_CORETYPE = AARCH64 на Jetson Nano - сработало как шарм. - person viddik13; 23.06.2021
comment
Это работает и на моем jetson nano 2GB, спаситель! - person astroflyer; 17.07.2021

Я считаю, что это ошибка модели Jetson Nano B01.

Вчера я понял, что моя модель Nano отличается от той, которую Адриан показывает в своем руководстве (A02).

Спасибо doommonkey за то, что вы привели меня к другому руководству, которое в значительной степени похоже на руководство pyimagesearch и более недавнее (декабрь 2020 г.), я очень ценю это.

Я протестирую его сегодня, и смогу ли я построить свой opencv для работы, включая Tensorflow. Думаю, это наполовину решенная проблема.

Жаль, что virtualenv выдает эту ужасную ошибку для python 3.6.9. Это конкретная модель. Я тоже пробовал с модулем venv, и он даже не может установить numpy, поэтому на данный момент нет виртуального env

person RedEye    schedule 11.01.2021

Нет, вы не можете использовать virtualenv:

  1. удалите все numpy ref в пакетах сайтов VE (Vritual Environement),
  2. обновить numpy
  3. связать папку numpy с VE numpy.

Предполагая, что ваш virtualenv называется ML:

1)

cd ~/.virtualenvs/ML/lib/python3.6/site-packages 
sudo rm -r numpy*
#outside VE:
deactivate
sudo pip install --upgrade numpy
#find path to numpy usig pysearchmethod :
#use pip uninstall numpy, and answer NO, but note. path
sudo pip uninstall numpy
#gives me /home/pierre/.local/lib/python3.6/site-packages/numpy
cd ~/.virtualenvs/ML/lib/python3.6/site-packages
ln -s /home/pierre/.local/lib/python3.6/site-packages/numpy numpy

Тогда вы можете проверить это:

workon ML
python -c 'import numpy'

Если вы получили информацию, связанную с разрешением на /.cache/pip, вы можете попробовать изменить разрешение для папки:

sudo chown -R $USER ~/.cache/pip

Если это по-прежнему не работает, попробуйте удалить numpy на компьютере, а затем повторно установить его:

sudo pip uninstall numpy
#Yousof
pip install -U numpy --no-cache-dir --no-binary numpy

затем вернитесь к шагам 1- ›3. Это сработало для меня.

++

person pierre tardif    schedule 23.01.2021

Попробуйте это, у меня это сработало. Я тестировал его в среде pyenv с python 3.7.9 и gcc-8.4 на Jetson nano (самая первая версия). Просто помните, поскольку он компилирует все, это займет намного больше времени, чем просто загрузка двоичных файлов. (из-за --no-binary)

python3 -m pip install -U numpy --no-cache-dir --no-binary numpy

Вы можете обновить свой gcc, потому что gcc по умолчанию - 7. Я не уверен, работает ли он с gcc-7.

sudo apt install gcc-8 g++-8
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-8 /usr/bin/gcc

sudo rm /usr/bin/g++
sudo ln -s /usr/bin/g++-8 /usr/bin/g++

Теперь для подтверждения вы можете проверить версию с помощью

gcc --version
g++ --version
person Yousof    schedule 18.01.2021

Установка правильной версии numpy помогла мне решить эту проблему. Всякий раз, когда я импортировал torch, cv2 или torchvision, я получал сообщение об ошибке "Недопустимая инструкция (дамп ядра)". Используйте команду pip install numpy==1.19.4 , и я надеюсь, что ошибка исчезнет.

person Aishwarya Patil    schedule 04.05.2021