注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
yinxx的个人空间 https://home.eeworld.com.cn/space-uid-987926.html [收藏] [复制] [分享] [RSS]
日志

【玄铁杯第三届RISC-V应用创新大赛】怎么才能使torch正常运作呢?

已有 325 次阅读2023-10-30 16:58

上次做到网络修复后,继续在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,大家说说我该怎么做呢?
 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章