首页 > 解决方案 > Jetson Nano 上的非法指令(核心转储)错误

问题描述

对不起,如果我的描述很长而且很无聊,但我想给你最重要的细节来解决我的问题。最近,我终于买了一个带有 4Gb RAM 的 Jetson Nano 开发人员套件!为了获得我认为的最佳对象检测配置,我正在遵循 Pyimagesearch 的 Adrian Rosebrock 制作的本指南:

https://www.pyimagesearch.com/2020/03/25/how-to-configure-your-nvidia-jetson-nano-for-computer-vision-and-deep-learning/日期:2020 年 3 月。总结本指南的内容如下:

我说,好吧,让我们继续这个教程:

然后我进行了一个实验,我使用 Python 2 创建了这个“p2cv4”环境,安装了 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,并且知道哪个版本在 2020 年 3 月当前处于活动状态,就像 Adrian 当时使用的那个

在其他帖子中,我读到当像 TF 的 Numpy 这样的包或库版本对特定的旧的或低功耗的 CPU 不再友好时,就会出现这个 SIGILL,就像在这篇文章中一样: 尝试导入 tensorflow 时的非法硬件指令https:// github.com/numpy/numpy/issues/9532

所以我想降级到较旧的 python 版本,如 3.6.5 或 3.5,但我在 Ubuntu 中找不到明确的步骤。我认为这将解决这个错误,让我继续在 Jetson Nano 上进行配置。

pyimageseach 指南使用 Python 3.6,但它没有指定是最后一个 3.6.9 还是其他版本。如果不是 python 导致此错误,请告诉我。请帮忙!

标签: pythonnvidia-jetson-nano

解决方案


“非法指令”可能是由于最近对 getauxval(AT_HWCAP) 的更改。

在 getauxval 未成功的情况下尝试从 /sys/devices 读取 cpuid 信息。(OpenBLAS PR 2952 和 3004)

在启动 python 之前 export OPENBLAS_CORETYPE=ARMV8 (或任何实际硬件)应该有望解决这个问题。例如:

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_dumped_error_on_jetson/


推荐阅读