fbcunn在Ubuntu 14.04下安装可能出现的问题以及解决方法
发布日期:2022-02-25 00:55:14 浏览次数:42 分类:技术文章

本文共 3518 字,大约阅读时间需要 11 分钟。

fbcunn在Ubuntu 14.04下安装可能出现的问题以及解决方法

在Ubuntu 14.04环境下,按照官网 安装fbcunn,,可能会出现不少的问题,在这我将分享我所遇到的一些问题以及解决过程,希望能帮到和我一样遇到类似问题的朋友。

一、安装CUDA与Torch

因为我在安装fbcunn时已经使用了一段时间的Torch,按照官网 的步骤安装CUDA与Torch应该没什么大的问题,如若在这一步遇到问题,可另行百度或谷歌,
在此就不赘述CUDA与Torch的安装过程。

二、安装folly,fbthrift,thpp,fblualib

按照官网 ,可用以下命令进行安装
curl -sk https://raw.githubusercontent.com/soumith/fblualib/master/install_all.sh
|
bash -e
但貌似该安装文件install_all.sh已经过时,安装的版本对不上,soumith更新了另一个版本的 ,链接如下
 
 
可以将其下载到本地执行。虽然是soumith对install_all.sh进行了更新,但仍可能会出现以下问题。

(1)libboost-all-dev用apt-get无法安装

可先用apt-get安装aptitude,然后使用aptitude安装libboost-all-dev
sudo apt-get install aptitude
sudo aptitude install libboost-all-dev

(2)Invalid gtest-1.7.0.zip

查看thpp中的build.sh文件,可以看出没有下载到有效的gtest-1.7.0.zip,于是我尝试在windows中用迅雷下载gtest-1.7.0.zip,确实能下载到gtest-1.7.0.zip,网上还要另一种解决方案,是用curl命令下载以下链接 中的文件,并改名gtest-1.7.0.zip,下载完后,将gtest-1.7.0.zip移动到与build.sh所在的文件夹中,并注释掉build.sh中用于删除和重新下载getst-1.7.0.zip的两行代码。

三、安装fbcunn

(1) No LuaRocks module found for fb.torch.async_rng

当执行完安装教程中安装fbcunn的第三步
git clone https://github.com/facebook/fbnn.git && ( cd fbnn && luarocks make rocks/fbnn-scm-1.rockspec )
我尝试require一下fbnn,确认fbnn是否正确安装
然而并没有,问题出现在安装fblualib时没有把fblualib中的torch加上,解决这个问题可参考 中ixaxaar的回答。
下载最新版的fblualib,因为v1.0版的fblualib中的torch没有rockspec文件夹,可以将最新版的fblualib中的torch的rockspec文件夹移到v1.0中,同时对torch中的AsyncRNG.cpp和fblualib的build.sh文件作相应的修改,然后重新运行build.sh文件,成功安装fblualib后,重新安装fbnn。
git clone https://github.com/facebook/fblualib.git
echo 'extern "C" int luaopen_fb_torch_async_rng(lua_State* L) {
LUAOPEN(L);}' >> ./AsyncRNG.cpp

(2)error:‘make_unique’ is not a member of ‘std’

当执行完安装教程中安装fbcunn的第四步安装fbcunn时
git clone https://github.com/facebook/fbcunn.git && ( cd fbcunn && luarocks make rocks/fbcunn-scm-1.rockspec )
会出现error:‘make_unique’ is not a member of ‘std’,同时也给出了解决的提示,就是用folly替换掉std,
GlobalAsyncCopier.cpp
进入到fbcunn文件夹,重新运行命令即可
luarocks make rocks/fbcunn-scm-1.rockspec

(3)Segmentation fault (core dumped)

当fbcunn安装完后,尝试require fbcunn,确认是否正确安装,这时可能会出现
Segmentationfault (core dumped)或直接出现错误undefined symbol:_ZN8facebook12deeplearning5torch30initTemporalConvolutionTBCCudaEP9lua_State。
若出现Segmentationfault (core dumped),我们需要查出运行过程中出现了什么错误,这时可使用gdb来debug,若还没安装,可使用apt-get进行安装。
这时,很可能cuda_ext.so中出现错误undefined symbol:_ZN8facebook12deeplearning5torch30initTemporalConvolutionTBCCudaEP9lua_State。

(4)cuda_ext.so:undefined symbol:_ZN8facebook12deeplearning5torch30initTemporalConvolutionTBCCudaEP9lua_State

这时可使用c++filt来查出undefined symbol的定义形式
c++filt_ZN8facebook12deeplearning5torch30initTemporalConvolutionTBCCudaEP9lua_State
然后进入到src文件夹,使用grep命令查看该函数是在哪些文件中定义的
grep -irn initTemporalConvolutionTBCCuda
在InitCuda.cpp和
TemporalConvolutionTBCHost.cpp中有
initTemporalConvolutionTBCCuda的定义,查看一下fbcunn的CMakeFile,找到cuda_ext的编译的依赖,可见里面有InitCuda.cpp而没有TemporalConvolutionTBCHost.cpp
在CMakeFile相应位置加入TemporalConvolutionTBCHost.cpp后重新运行命令
luarocks make rocks/fbcunn-scm-1.rockspec

(5)cuda_ext.so:undefined symbol:_ZN8facebook12deeplearning5torch6detail38runTemporalConvolutionTBC_updateOutputEP8THCStateRKNS_4cuda12DeviceTensorIfLi3EiNS5_16DefaultPtrTraitsEEESA_SA_RKNS6_IfLi1EiS7_EE

当解决(4)之后,可能会再出现
undefined symbol,
同理,与(4)相似的解决方法
在CMakeFile相应位置加入TemporalConvolutionTBC.cu后重新运行命令
luarocks make rocks/fbcunn-scm-1.rockspec

(6)torch_fb_fbcunn_batch_norm.so:undefined symbol: _ZN3fLI7FLAGS_vE

当解决(4)(5)之后,可能还会出现undefined symbol,同理,与(4)相似的解决方法
在CMakeFile相应位置加入链接库glog后重新运行命令
luarocks make rocks/fbcunn-scm-1.rockspec

结语

以上是我安装时遇到的问题以及一步一步的解决方法,朋友们可以参考里面的操作,直接跳过我所遇到的错误。至此,在我的环境中已经成功安装好fbcunn,若朋友们安装时遇到了其他问题,可提出来一起探讨。

转载地址:https://blog.csdn.net/qq_30198143/article/details/76563119 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Webview内嵌在ScrollView中的底部空白和滑动冲突
下一篇:求个PMCAFF邀请码?

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月16日 08时11分31秒