4、环境搭建:安装NVIDIA驱动与CUDA Toolkit
好,咱们正式开始动手了。
这一章,说白了就是搭积木。你得先把地基打牢,后面那些花里胡哨的性能分析工具才能跑起来。我见过太多人,上来就装Nsight,结果驱动版本不对,折腾一整天——嗯,我自己也踩过这个坑。
4.1 安装NVIDIA驱动
驱动是GPU和操作系统之间的翻译官。没有它,你的显卡就是个摆设。
我个人习惯用runfile方式安装。虽然麻烦点,但可控性最强。具体步骤:
- 先禁用nouveau:
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf - 重启,然后下载对应版本的驱动:
wget https://us.download.nvidia.com/XFree86/Linux-x86_64/550.54.14/NVIDIA-Linux-x86_64-550.54.14.run - 停止图形界面:
sudo systemctl isolate multi-user.target - 执行安装:
sudo sh NVIDIA-Linux-x86_64-550.54.14.run
安装完成后,用nvidia-smi验证。如果能看到GPU列表和驱动版本,恭喜你,第一步走通了。
4.2 安装CUDA Toolkit
驱动装好了,接下来是CUDA Toolkit。它包含了编译器、库文件、调试工具等。
我建议用deb包安装,省心。以Ubuntu 22.04为例:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get install cuda-toolkit-12-4
安装完后,配置环境变量:
export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH
验证安装:nvcc --version。看到版本号就对了。
配置Nsight Systems与Nsight Compute
这两个工具是GPU性能分析的左膀右臂。Nsight Systems看宏观,Nsight Compute看微观。
4.3 Nsight Systems安装与配置
Nsight Systems用来做时间线分析。它能告诉你CPU和GPU分别在干什么,哪里在等待,哪里在浪费。
安装很简单:
sudo apt-get install nsight-systems-2024.1
或者去NVIDIA官网下载tar包,解压就能用。我个人喜欢tar包,因为可以随便挪位置。
基本用法:
nsys profile -o my_profile ./my_cuda_app
运行完后会生成一个.nsys-rep文件。用Nsight Systems GUI打开,就能看到漂亮的火焰图了。
--privileged权限。加上--cap-add=SYS_ADMIN就好了。
4.4 Nsight Compute安装与配置
Nsight Compute是核函数级别的分析工具。它能告诉你每个线程束的利用率、内存带宽、指令吞吐等。
安装:
sudo apt-get install nsight-compute-2024.1
基本用法:
ncu -o my_kernel_profile ./my_cuda_app
输出文件是.ncu-rep,用GUI打开分析。
设置DCGM与Prometheus监控
生产环境里,你不能每次都手动跑profiling。你需要持续监控——DCGM就是干这个的。
4.5 DCGM安装与配置
DCGM(Data Center GPU Manager)是NVIDIA的数据中心GPU管理工具。它能采集GPU的温度、功耗、利用率、显存使用等指标。
安装:
sudo apt-get install datacenter-gpu-manager
启动服务:
sudo systemctl start nvidia-dcgm
sudo systemctl enable nvidia-dcgm
验证:dcgmi discovery --list。能看到所有GPU的信息。
dcgmi config --set -v 100。不过要注意,频率越高,CPU开销也越大。
4.6 Prometheus集成
DCGM本身不带可视化。我们需要Prometheus来拉取数据,Grafana来展示。
首先,安装DCGM Exporter:
git clone https://github.com/NVIDIA/dcgm-exporter.git
cd dcgm-exporter
make
./dcgm-exporter &
然后配置Prometheus的prometheus.yml:
scrape_configs:
- job_name: 'dcgm'
static_configs:
- targets: ['localhost:9400']
重启Prometheus,就能在Grafana里看到GPU监控面板了。
Docker容器化GPU环境配置
最后,咱们聊聊容器化。现在谁还裸机跑啊?Docker + GPU是标配。
4.7 安装NVIDIA Container Toolkit
要让Docker能访问GPU,需要装nvidia-container-toolkit。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
验证:
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi
看到GPU信息,就说明容器化成功了。
4.8 构建性能分析镜像
我习惯把Nsight、DCGM、CUDA Toolkit都打包到一个镜像里。这样到哪都能用。
Dockerfile示例:
FROM nvidia/cuda:12.4.0-devel-ubuntu22.04
RUN apt-get update && apt-get install -y \
nsight-systems-2024.1 \
nsight-compute-2024.1 \
datacenter-gpu-manager \
&& rm -rf /var/lib/apt/lists/*
ENV PATH=/usr/local/cuda/bin:$PATH
ENV LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
CMD ["bash"]
构建:docker build -t gpu-perf-toolkit .
4.9 运行容器并挂载性能分析工具
运行容器时,记得挂载宿主机上的性能分析工具:
docker run --gpus all \
-v /usr/local/cuda:/usr/local/cuda \
-v /opt/nvidia/nsight-systems:/opt/nvidia/nsight-systems \
-v /opt/nvidia/nsight-compute:/opt/nvidia/nsight-compute \
-it gpu-perf-toolkit
这样,容器里就能直接使用nsys和ncu了。
好了,环境搭建就到这里。下一章,咱们开始真正跑性能分析——从第一个profiling命令开始。