关于tx2上import torch导致Segmentation fault(core dumped)的一种解决方案

环境:tx2(dji manifold)+jetpack4.4+cuda10.2+pytorch1.7

错误复现:

import torch
Segmentation fault (core dumped)

网上有朋友说先import cv2再import torch,但是这个方法好像只是针对于很早的一个版本的torch有效。

import cv2
import torch
Traceback (most recent call last):
File “”, line 1, in
File “/home/dji/.local/lib/python3.6/site-packages/torch/init.py”, line 190, in
from torch.C import *
ImportError: /home/dji/.local/lib/python3.6/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: sgesdd

使用gdb调试的结果如下,不过这个报错我看不懂,是在网上搜资料时对照别人的解决方案做的。

(gdb) r -c “import torch”
Starting program: /usr/bin/python3 -c “import torch”
[Thread debugging using libthread_db enabled]
Using host libthread_db library “/lib/aarch64-linux-gnu/libthread_db.so.1”.

我之前同时配置了两台可以正常运行torch的妙算,放假回家后通过ssh远程连接妙算进行调试,结果有一台的torch环境突然给崩溃了。在网上搜索了很多资料都没有找到可行和有效的解决方案。开虚拟环境和删除torch再重新安装torch都没用。
于是我去nvidia的论坛提问,技术小哥哥第一次告诉我可能是blas版本的问题,和他核对了一下blas的版本都是0.2.20+ds-4之后排除了这个原因。他还告诉我可能是python的pip库有冲突,当时除了这个方法就只有刷机了,于是我一个一个的对照两个妙算的python库版本,最后发现两个妙算只有scipy的版本不一样,将scipy删除之后错误就解决了。

分析:由于妙算(tx2)是arm架构,如果直接使用pip安装scipy会安装上一个十分奇怪的版本,有可能不是自己手动安的而是在安装别的库的时候他给自动加进去了scipy导致这个隐蔽的错误。Arm上的scipy安装还是需要从源码自己编译的。不要图方便直接用pip安装。

你可能感兴趣的:(python,linux,bug,pip)