一、环境说明

本文适用于:

  • 麒麟 Linux Advanced Server V10
  • CentOS / RHEL 系系统
  • x86_64 架构
  • NVIDIA 显卡(RTX3090 等)
  • CUDA11.8
  • PyTorch + 3DGS + COLMAP 环境

本人环境:

项目 版本
系统 Kylin Linux Advanced Server V10
架构 x86_64
GPU RTX3090
CUDA 11.8
Python 3.8
Torch 2.3.0+cu118

二、检查显卡驱动

首先确认 NVIDIA 驱动是否正常。

执行:

nvidia-smi

正常会显示类似:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 580.xx.xx    Driver Version: 580.xx.xx    CUDA Version: 13.0 |
+-----------------------------------------------------------------------------+

三、卸载旧 CUDA(重要)

1. 删除环境变量

编辑:

vim ~/.bashrc

删除旧 CUDA:

export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH

保存退出:

Esc
:wq

刷新:

source ~/.bashrc

2. 删除旧 CUDA 文件

查看:

ls /usr/local/ | grep cuda

删除:

rm -rf /usr/local/cuda*

检查 rpm 包,执行:

rpm -qa | grep cuda

如果还有 CUDA rpm,可以继续删:

rpm -e 包名

但很多 runfile 安装其实不会出现在 rpm。
理想状态应该是:

项目 状态
nvidia-smi 能用
nvcc 找不到
/usr/local/cuda* 没有
~/.bashrc 无 cuda12.4

3. 检查是否删除成功

执行:

nvcc -V

如果提示:

bash: nvcc: 未找到命令

说明旧 CUDA 已删除。


四、下载 CUDA11.8

进入目录:

mkdir -p /root/project
cd /root/project

下载 CUDA11.8:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run

如果没有 wget:

yum install -y wget

五、赋予执行权限

chmod +x cuda_11.8.0_520.61.05_linux.run

六、解决 CUDA 解压失败问题

若不报错,使用下面指令安装使用

sudo sh cuda_11.8.0_520.61.05_linux.run

但很多麒麟系统会出现:

Extraction failed.
Ensure there is enough space in /tmp

解决方法:

1. 创建临时目录

mkdir -p /root/tmp
chmod 777 /root/tmp

2. 使用 TMPDIR 安装

TMPDIR=/root/tmp sh cuda_11.8.0_520.61.05_linux.run

七、安装 CUDA11.8

进入安装界面后:

1. 接受协议

看到:

Do you accept the above EULA?

输入:

accept

2. 安装选项

推荐选择:

[ ] Driver
[X] CUDA Toolkit 11.8
[ ] CUDA Demo Suite 11.8
[ ] CUDA Documentation 11.8

重点:

取消 Driver

因为系统已经有 NVIDIA 驱动。

安装完成后会显示:

Toolkit: Installed in /usr/local/cuda-11.8/

说明安装成功。


八、配置环境变量

编辑:

vim ~/.bashrc

删除旧的环境变量,比如:

export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH

添加:

export CUDA_HOME=/usr/local/cuda-11.8
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

保存退出:

Esc
:wq

刷新环境变量:

source ~/.bashrc

九、验证 CUDA

1. 查看 nvcc

nvcc -V

正常输出:

Cuda compilation tools, release 11.8

再看:

echo $CUDA_HOME

应该显示:

/usr/local/cuda-11.8

检查软链接

执行:

ls -l /usr/local/cuda

如果没有 /usr/local/cuda,可以手动创建:

ln -s /usr/local/cuda-11.8 /usr/local/cuda

2. 查看路径

which nvcc

正常输出:

/usr/local/cuda-11.8/bin/nvcc

3. 查看驱动

nvidia-smi

正常显示 GPU 即可。


十、安装 Conda 环境

创建环境:

conda create -n gs python=3.8 -y

激活:

conda activate gs

十一、安装 PyTorch cu118

推荐版本:

pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu118

十二、验证 Torch GPU

执行:

python -c "import torch; print(torch.__version__); print(torch.version.cuda); print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0)); print(torch.cuda.get_device_capability(0))"

正常输出:

2.3.0+cu118
11.8
True
NVIDIA GeForce RTX 3090
(8, 6)

十三、安装 3DGS 子模块

创建并进入:

cd /root/project/gaussian

在当前文件夹解压gaussian-splatting-full.tar.gz(麒麟linux系统部署3dgs源码见另一篇文章),得到gaussian-splatting,进入:

cd /root/project/gaussian/gaussian-splatting

安装 ninja:

pip install ninja

1. 安装 simple-knn

清理缓存

rm -rf submodules/simple-knn/build
rm -rf ~/.cache/torch_extensions

编译环境变量

export CUDA_HOME=/usr/local/cuda-11.8
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
export TORCH_CUDA_ARCH_LIST="8.6"

麒麟 Linux crypt.h 问题解决

很多麒麟系统会报:

fatal error: crypt.h: No such file or directory

解决:

yum install -y libxcrypt-devel

查看:

ls -l /usr/include/crypt.h

如果存在:

/usr/include/crypt.h

执行:

cp /usr/include/crypt.h /root/miniconda3/envs/gs/include/python3.8/

这是麒麟 Linux 最有效的解决方式。


编译 simple-knn

pip install -v --no-build-isolation submodules/simple-knn

2. 安装 diff-gaussian-rasterization

rm -rf submodules/diff-gaussian-rasterization/build
rm -rf ~/.cache/torch_extensions

pip install -v --no-build-isolation submodules/diff-gaussian-rasterization

十四、运行 3DGS

特征提取(麒麟linux编译colmap见另一篇文章):

python convert.py -s ./data/project1

训练:

python train.py -s data/project1 -m output/project1

十五、常见问题汇总

1. nvcc 找不到

执行:

source ~/.bashrc

检查:

which nvcc

2. libcudart.so.12 找不到

原因:

之前按 CUDA12 编译过扩展

解决:

重新编译:

pip uninstall diff-gaussian-rasterization simple-knn -y

重新安装。


3. Error compiling objects for extension

一般是:

  • GCC 问题
  • crypt.h 缺失
  • CUDA_HOME 错误
  • torch CUDA 版本不匹配

4. 查看 GCC 版本

gcc --version
g++ --version

推荐:

GCC 7~11

十六、推荐版本组合

软件 推荐版本
CUDA 11.8
Torch 2.3.0+cu118
Python 3.8
GCC 7~11
GPU RTX3090

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐