JetsonNano上的非法指令(核心转储)错误
对不起,如果我的描述冗长乏味,但我想给你最重要的细节来解决我的问题。最近,我终于买了一个 Jetson Nano 开发工具包,它有 4Gb 的 RAM,为了获得我认为的对象检测的最佳配置,我遵循了 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 月。摘要本指南的内容如下:
- 1:用于 Jetson Nano 的 microSD 中的 Flash Jetson Pack 4.2 .img(我的是 32GB 'A' 级)
- 2:一旦插入到 Nano 板上,配置 Ubuntu 18.04 并完全摆脱 Libreoffice 以获得更多可用空间
- 3:步骤#5:安装系统级依赖(包括cmake、python3和nano编辑器)
- 4:更新CMake(没有任何错误)
- 5:安装OpenCV系统级依赖和其他开发依赖
- 6:在你的 Jetson Nano 上设置 Python 虚拟环境(成功安装了 virtualenv 和 virtualenvwrapper 没有错误,包括使用 nano 的 bash 文件版本)
- 7:使用python 3创建virtaul env并安装protobuf和libprotobuf以获得更高效的Tensorflow。安装成功。花了一个小时才完成,这是正常的
- 8:这里有一个令人头疼的问题:在这个环境中安装 numpy 和 cython 并检查它导入 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
然后我进行了一个实验,我使用 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,idk 哪个版本在 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导致此错误,请告诉我。请帮忙!
回答
“非法指令”可能是由于 getauxval(AT_HWCAP) 中最近的更改,尝试在 getauxval 失败的情况下从 /sys/devices 读取 cpuid 信息。(OpenBLAS PR 2952 和 3004)
在启动 python 之前导出 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/
- Tried OPENBLAS_CORETYPE=AARCH64 on Jetson Nano - worked like a charm.