BMXNet-V2 building record
2021/3/26
部署别人的项目是真难,配环境配到头秃。以后我有了成果一定也整点难配的环境,一报还一报
这篇博客从时间上来说是乱序呢…
主要的参考文献是Ubuntu上的安装指南,问题是太年久失修了,里面有很多疏漏,所以还要配合BMXNet的README食用。
小小的总结——需要安装的集合
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libatlas-base-dev libopenblas-dev
sudo apt-get install libopencv-dev
mkdir -p ~/utils
wget https://cmake.org/files/v3.12/cmake-3.12.3-Linux-x86_64.tar.gz
tar -zxvf cmake-3.12.3-Linux-x86_64.tar.gz
alias cmake="cmake-3.12.3-Linux-x86_64/bin/cmake"
rm cmake-3.12.3-Linux-x86_64.tar.gz
sudo apt-get install ninja-build
sudo apt-get install doxygen
#最后记得在创建的环境里安装gluoncv
一些稀碎的点
-
用bash命令
pwd
可以查看当前路径。 -
linux下压缩tar.gz格式的命令是
tar -zcvf 目录文件名.tar.gz 目录文件名
,解压命令是tar -zxvf 目录文件名.tar.gz
,里面-zxvf
是什么含义没有追究。 -
sudo vim /etc/login.user.allow
可以增加准入用户。 -
还用到了
curl
,安装步骤参考这篇博客。甚至在装curl
的时候还发生了小插曲,出现了这个错误:
curl: error while loading shared libraries: libcurl.so.4: cannot open shared
解决方法是把缺少的libcurl.so.4
给装回来:
sudo apt-get install libcurl4-openssl-dev
building C++ is hard
总算进行到了cmake .. -G Ninja
的一步了!
首先出现的问题是MKLML下不下来:
这个问题尝试解决了很多次,包括在本地ssh config添加RemoteForward
词条,但是添加了之后服务器也不走我的梯子,梯子流量一直没有变化。非常痛苦。上午(那时候注释掉了RemoteForward
)用学校的网还可以下(虽然很慢),为什么下午删掉build文件夹重新cmake
就下不下来了呢?更不用说一直没有卵用的梯子(为什么设置一样但是我不能通过梯子翻墙呢?甚至连搜索关键词都不知道,找到的都是远不相关的东西)。
2021/3/26-20:41 update:通过设置cmake
代理解决了下载问题:
http_proxy=127.0.0.1:10809 https_proxy=127.0.0.1:10809 cmake .. -G Ninja
我本地端口不能转发服务器包实现翻墙的问题依然存在。
可是下载完MKLML之后很快就出现了一个新的错误,找不到doxygen(本blog写于第一次ninja
失败,删除build文件夹后重新cmake
时,第一次cmake
的时候确实也出现了这个错误,但是当时感觉生成了build文件就没有关系了,所以这可能是最后ninja
失败的诱因(之一??)):
解决方法:
sudo apt-get install doxygen
讲道理,这东西没用过的人怎么知道要提前装啊,tutorial写得实在不详细..(是我 了)
将这次cmake
的log存到了这里。
然后删除build再重新cmake
…这次确实found doxygen了,但是又出现了了新问题(以及其他非常多的重大问题):
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.13") found components: doxygen missing components: dot
查了一下,这个issue提供了原因及解决方法,即使它不是BMXNet的issue:
sudo apt install graphviz
据说会让log变成:
Found Doxygen: /usr/bin/doxygen (found version "1.8.13") found components: doxygen dot
试了一下,确实:
但是这远不是问题的全部,到目前为止,遇到的问题还有:
MKLMK不能保证每次都能下下来(下不下来的情况居多,而且下得贼慢,我真怕它中间断掉)会持续地出Could NOT find MKL (missing: MKL_INCLUDE_DIR MKL_RT_LIBRARY)
的错误,无论能不能下下来MKLMK。这个错误甚至在BMXNet上有自己的issue,里面最后的解决方案是update之后移除了
Make CUDA Great Again
在sxs-eva8
上部署BMX-Net,但是到了下面的ninja
这一步时:
# build the project
mkdir build && cd build
cmake .. -G Ninja
ninja
出现了错误。具体来看,从200+开始的build项目就开始打印不祥的log了,主要还是一些warning,在stackoverflow里查了下,说这种warning potentially produce wrong code而且debug起来会非常痛苦。但是事情到这里还算可以接受,因为从第570个build term开始出现了hard error,直接把build过程给崩掉了(大段的log被顶掉了,现在reproduce error只能出现这些最hard的问题了):
因为上面说找不到/usr/bin/ld:
目录下的-lcuda
,看到**cuda
关键字就想会不会是CUDA出了问题。这个container开通以来一直没有跑过训练,极有可能环境配置有问题,而且/usr/bin/ld
本身又是个二进制文件,这谁懂啊:
所以先解决最简单的问题,看看CUDA是不是健在。
尝试bashnvcc -V
,果然出现了command not find的问题了。所以要设置环境变量,bashsudo vim /etc/profile
(这里sudo权限很重要,不然profile只是个可读文件),在末尾添加:
export PATH=/opt/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/opt/cuda-10.0/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后source /etc/profile
或者重新登一下eva就可以了。
重新测试nvcc -V
,能正确输出log了:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
Driver lives matter
最后不知道为什么就把上面的大BOSS放倒了。
根据tc搜到的结果,这个现象可能是需要老版本的runtime cuda driver package但是新驱动里没有造成的。因此进行:
sudo apt-get install nvidia-367
删除原来的build文件夹,重新cmake
和ninja
,尽管中间又出现了好多warning和failed,但总算没有fatal ones,build成功:
在eva10上的部署
吐了,真是一台服务器一个样…
首先遇到的问题是有很多
/sbin/ldconfig.real: /usr/local/cuda/lib64/libcuinj64.so.10.0 is not a symbolic link
这样的错误(出现在sudo apt-get阶段),似乎是软连接出了问题,没有处理。实在没法处理,出错的软连接实在太多了。
接下来假装那些东西都装好了,直接build,出现了新的状况,后来发现是Cmake版本与CUDA版本mismatch的问题,CUDA 10.0需要Cmake
版本为最新3.12,而eva10上的Cmake
只有3.10(似乎和CUDA 9.x对应),所以先把原来的Cmake
给删掉,再装新的:
sudo apt-get autoremove cmake