上次做到网络修复后,继续在python下尝试运行import torch但是依然报错了,后来找了很多网上的资料,发现还是不能很好的解决问题。
这里就不贴图片了。后来打算从源码开始进行构建,于是从github中clone了对应的blis源文件,但是在构建过程中出现了一些小问题,不过也是我第一次遇到的问题。
因为缺少的是libblis.so.3
而直接用源码build出来的是libblis.so.4版本,一时间不知如何是好?
想过通过软连接的方式让系统能够识别,但是查资料说这样做,不能正确的链接,于是放弃了。
随后通过 git checkout 0.8.1进行分支的切换,按道理这个是提供libblis.so.3的?
但是build的过程中,竟然不能自动生成config.mk文件,导致不能后续执行configutre 以及 make命令?
于是打算从源码看看0.9.0与0.8.1之间有什么区别,特别是那个config文件,通过比较发现,0.9.0中确实添加了一些新的函数,但是最初想,难道把这些函数复制到0.8.0里面就可以了吗?
好在在差资料的过程中,说有一个so_version这个文件,里面的数字决定生成什么版本的libblis.so,果然通过修改这个文件,最终正确生成了libblis.so.3
并且
export LD_LIBRARY_PATH=/usr/local/lib/libblis.so.3:$LD_LIBRARY_PATH
Update the ld.so.conf file: You can add a directory of shared libraries to the ld.so.conf file to allow all environments to access them. For example, to add a directory to the ld.so.conf file in Ubuntu, you can create a new file in /etc/ld.so.conf.d/ called .conf and add a line per directory of shared libraries (*.so files). Then, reload the list of system-wide library paths using the following command:
sudo ldconfig
以为这样就可以正确运行了,那是大错特错了!
./configure --prefix=/mnt/libblis --enable-cblas --enable-threading=openmp
后面但我导入torch的时候
依然提示错误,希望通过这个命令查看依赖情况:python -m torch.utils.collect_env
然并无乱用
libtorch_cpu.so: undefined symbol: cblas_cdotc_sub
于是安装相关的库
sudo apt-get install libopenblas-dev
find / -name libblas.so
/usr/lib/riscv64-linux-gnu/blis-openmp/libblas.so
/usr/lib/riscv64-linux-gnu/openblas-pthread/libblas.so
/usr/lib/riscv64-linux-gnu/libblas.so
(env) root@lpi4a:/mnt/numactl# find / -name libopenblas.so
/usr/lib/riscv64-linux-gnu/libopenblas.so
/usr/lib/riscv64-linux-gnu/openblas-pthread/libopenblas.so
那么这个符号是在ibblas.so中,还是在libopenblas.so中?如何查询呢?
要确定符号cblas_cdotc_sub在libblas.so还是libopenblas.so中,您可以使用以下命令:
nm -D /path/to/libblas.so | grep cblas_cdotc_sub 或者
nm -D /path/to/libopenblas.so | grep cblas_cdotc_sub
请将/path/to/libblas.so或/path/to/libopenblas.so替换为blas库的实际路径。
命令nm -D用于列出共享库中的符号。grep cblas_cdotc_sub用于过滤包含cblas_cdotc_sub的行。
如果上述命令的输出中包含cblas_cdotc_sub符号,则表示该符号在对应的blas库中定义。否则,这意味着该符号可能不存在于该库中。
但是我执行这些命令后,发现依然没有解决这个问题,所以我目前卡住了,有大佬说让我从源码构建torch,或者重新安装一下torch,大家说说我该怎么做呢?