我之前记得mega-nerf要求的cuda版本是大于11.3,我手头只有一台服务器符合,就只在那上面安了。昨天一看似乎只要>=11.1了,这样一来我手头的服务器就都可以用了。或者我有什么细节没记清,还有什么要求导致我之前只在一台服务器上安mega-nerf?不记得了,之前也没有做笔记,这次就边安变做个笔记吧。
1,这是台新服务器,所以先安装anaconda,过程不赘述,看链接就好。
如何在Linux服务器上安装Anaconda(超详细)「建议收藏」 - 腾讯云开发者社区-腾讯云
安装完之后记得source ~/.bashrc,不然conda -V会显示找不到conda命令。
2,下载
git clone https://github.com/cmusatyalab/mega-nerf.git
注意environment中的pytorch安装时对cuda有版本要求,在安装环境时通过nvcc -V命令查看cuda版本是否正确,更改服务器cuda版本的链接[2]
查看显卡驱动对应的cuda版本如[1]
在这个服务器上我准备安装cuda版本为11.3,对应的gcc版本应为9.3以上,这里选择安装版本为11,参考链接[3]
更新cmake版本,用cmake --version查看cmake版本。
安装过程参考[4],在进行./config的时候报错
由于缺少openssl引起,看了一下source安装比较麻烦,参考[5]直接用apt-get安装。
经历了这么多,下午4点半了,终于开始安装环境了。似乎还不行看到Solving environment半天没动,我才想起来,我cuda还没安。
2022年11月9日19:26:05,cuda安装出现了问题,希望早点出成果,目前先暂停,有时间再安。
11.18,我回来了。Mega-NeRF我怀疑是他给的代码就有问题,结果老是复现不出来,明明是按照他的步骤走的。可他有什么必要挖个坑呢?或许就是我菜吧,为了不让进度太难看,有个可以给别人看的东西,采用B计划:用他给的数据集验证我的想法。最终肯定要回归到使用自己数据集的方法上来,只是可能要涉及到对作者给的代码本身上的修改,这个不能轻易达成。这个代码到底能不能复现出来,似乎有一个人复现出来了,也不能确定,应该要联系他才能更好吧。
cuda运行sh XXX 的时候出现
Existing package manager installation of the driver found. It is strongly │
│ recommended that you remove this before continuing.
选择continue后,程序中止,出现信息
Failed to verify gcc version. See log at /tmp/cuda-installer.log for details.
按照[7]中建议,使用--override命令,成功安装cuda。可参考[2]中方法,选择安装位置。
此时开始按照mega-nerf建议进行安装,输入命令
conda env create -f environment.yml
出现报错
ResolvePackageNotFound:
- libstdcxx-ng==9.3.0=hd4cf53a_17
- __glibc[version='>=2.17']
- libgcc-ng==9.3.0=h5101ec6_17
- __glibc[version='>=2.17']
出现了版本号问题,这个问题我之前也遇到过,我记得原因似乎是生成环境文件的时候系统不同[6]。按照他的建议把出问题的包的详细信息去掉,依然报错。
UnsatisfiableError: The following specifications were found to be in conflict:
- _libgcc_mutex==0.1=main
- tensorboard-data-server==0.6.0=py39h3da14fd_0 -> libgcc-ng[version='>=9.3.0'] -> _libgcc_mutex==0.1=conda_forge
执行命令conda update conda后,开始安装环境。
环境安装的异常顺利,等了大概20分钟安装完成,完全想象不出我之前配这个环境是怎么配了一个多星期的。
既然安了mega-nerf环境,接下来顺手把mega-nerf-viewer环境[8]也安装完吧(这个才是主要目的)。
git clone代码,并按照指示安装,出现错误。
gcc: fatal error: cannot execute ‘cc1plus’: execvp: No such file or directory
参考[9]确定原因为GCC与G++版本不匹配,参考[10]升级g++版本后,再次cmake ..出现错误
error: #error -- unsupported GNU version! gcc versions later than 10 are
not supported! The nvcc flag '-allow-unsupported-compiler' can be used to
override this version check; however, using an unsupported host compiler
may cause compilation failure or incorrect run time execution. Use at your
own risk.
根据[11]可知是由gcc与g++版本太高出的问题。尝试了他提供的命令方法,不行。还是要采用软链接的方式。
再次cmake ..出现错误
Could NOT find GLEW (missing: GLEW_INCLUDE_DIRS GLEW_LIBRARIES)
参考我之前的经验[12]安装glfw。这篇文章有点小错误,需要读者自己改正。
再参考[13]安装libtorch。
看错了,原来是GLEW,参考[14]
运行cmake ..出现报错
Could not find a package configuration file provided by "Torch" with any of
the following names:
TorchConfig.cmake
torch-config.cmake
按照[15]提供方法解决问题。
继续运行cmake .. 报错
CMake Error at /home/group/lxl/3rdparty/libtorch/libtorch/share/cmake/Caffe2/public/cuda.cmake:185 (message):
PyTorch requires cuDNN 7 and above.
参考[16],结合[2]中的安装流程可知是在
cp /home/zb/cuda/tem/cuda/include/cudnn.h /home/zb/cuda/cuda-8.0/include/
时没有把cudnn_version.h拷过去,复制过去后成功运行,有个小warning,不碍事。
cmake成功后,进行make,报错
/usr/include/c++/10/chrono:428:27: internal compiler error: Segmentation fault 428 | _S_gcd(intmax_t __m, intmax_t __n) noexcept
查看[17]可知,这是10.3版本自有的一个bug,通过[10]中的方法,将gcc和g++版本改为9后解决。(下次装的时候或许可以按照他推荐的版本来装,这样遇到的错误会少一点,我因为gcc版本这个问题放了好多错。)
更改gcc版本后成功make。运行命令
./mega-nerf-viewer $DATASET_PATH/rubble/octree/octree-rubble-pixsfm-8.npz --model_path $DATASET_PATH/rubble/model/rubble-pixsfm-8.pt
出现报错
GLX: Failed to create context: GLXBadFBConfigSegmentation fault (core dumped)
按照[18]中的说法,似乎是关于显卡设置的问题。通过远程服务器无法显示画面,我是直接在服务器上接显示器搞定的(→_→)。
完结撒花(冷知识,这个梗来自来自《樱花庄的宠物女孩》)
参考资料:
[1]:Release Notes :: CUDA Toolkit Documentation
[2]:非root用户在linux下安装多个版本的CUDA和cuDNN(cuda 8、cuda 10.1 等)_随性拂尘倾心的博客-CSDN博客[3]:Ubuntu升级GCC版本_quxuexi的博客-CSDN博客_ubuntu升级gcc
[4]:cmake 升级_梦醒时分1218的博客-CSDN博客_cmake 升级
[5]:openssl安装与使用_WuYuJun's blog的博客-CSDN博客_openssl
[6]:Conda导入环境时 ResolvePackageNotFound错误_哦啦哦啦!的博客-CSDN博客
[7]:Linux安装CUDA GCC版本不兼容_氵文大师的博客-CSDN博客
[8]:GitHub - cmusatyalab/mega-nerf-viewer
[9]:gcc: error trying to exec 'cc1plus': execvp: no such file or directory - mydebug - 博客园
[10]:Linux下升级gcc/g++版本_运妙心藏的博客-CSDN博客
[11]:unsupported GNU version! gcc versions later than 6 are not supported!_littlehaes的博客-CSDN博客[12]:01 ubuntu 安装 glfw_魔尊moon的博客-CSDN博客
[13]:Ubuntu18.04 配置 LibTorch_john_bh的博客-CSDN博客
[14]:Package | 解决Could NOT find GLEW (missing: GLEW_INCLUDE_DIRS GLEW_LIBRARIES)_1LOVESJohnny的博客-CSDN博客
[15]:Could not find a package configuration file provided by "Torch" with any of the following names: · Issue #12449 · pytorch/pytorch · GitHub
[16]:高版本cudnn(cudnn8以上版本)下编译spconv的问题和解决方法_dawn_chen123的博客-CSDN博客_pytorch requires cudnn 7 and above.
[17]:nccl errors after moving to gcc 10.3.0 · Issue #494 · NVIDIA/nccl · GitHub
[18]:Cuda_assert: unknown error · Issue #6 · cmusatyalab/mega-nerf-viewer · GitHub