pytorch c++部署编译?libtorch库加载报错?

pytorch有几个优点:

(1)强大的python接口,便于实验,比起tensorflow方便

(2)动态图计算,写网络就像写普通的加减乘除表达式一样,灵活组建网络,便于调试,mxnet等frame work也借鉴了这种模式,在这鄙视一下tensorflow,久久不支持动态图,直到去年2.0才效仿了动态图,美其名曰eager execution.

 

pytorch的c++接口也发布了(libtorch),便于c++平台环境和使用条件下的部署,但是,如果你是从官网上直接下载的release版本的话,有可能在你的系统下不能运行,libtorch.so根本就加载不成功,报错(还没到进入main函数就退出(ง •̀_•́)ง),主要原因是,本地的gcc版本太低,glibc版本低.

那么,两种方法解决:

(1)升级gcc版本:

pytorch实际是推荐最低编译要求是gcc4.9,但我的gcc版本是4.8.5

推荐使用scl方式升级,不会影响原有的系统和gcc,而且方便升级,例如:

yum install centos-release-scl -y

yum install devtoolset-3-toolchain -y // 此处是升级到gcc4.9.2

升级成功后,执行如下命令,切换gcc版本:

scl enable devtoolset-3 bash // 切换到4.9.2

但是我试了,libtorch.so还是加载失败,索性升级到5.3.1,问题解决:

yum install centos-release-scl -y

yum install devtoolset-4-toolchain -y // 此处是升级到gcc5.3.1

scl enable devtoolset-4 bash // 切换到5.3.1

(2)改用gcc4.8.5编译:

有时候,升级gcc的话,也比较不方便,即便是scl方式升级,因为生产环境的gcc都是4.8.5,不方便scl enable切换,那么我们可以直接用gcc4.8.5,从pytorch源码编译libtorch.

编译详见文档:https://github.com/pytorch/pytorch/blob/master/docs/libtorch.rst

 

 

你可能感兴趣的:(pytorch研究与应用,pytorch,libtorch,加载,报错,gcc,c++)