H100 服务器 CUDA + PyTorch 环境速配指南
想在全新的 Ubuntu-24.04 + H100 机器上“第一天就跑通 GPU 代码”?
📚 基本概念速读
名称 | 定义 | 省流 |
---|---|---|
CUDA | NVIDIA 的并行计算平台 + 运行时/驱动 + C/C++ 扩展(带 __global__ /__device__ 等关键字)。 |
GPU 编程底座 |
PyTorch | 流行的深度学习框架,支持动态图,torch.Tensor 可在 GPU 上做张量运算。 |
DL 里最火的“积木” |
Wheel (.whl ) |
Python 的二进制打包格式,包含编译好的扩展。带 +cu124 表示内置 CUDA‐12.4。 |
“pip 装包”的快递盒 |
nvcc |
CUDA C/C++ 编译器前端,.cu → PTX/SASS,可指定 -arch=sm_xx 。 |
编译 .cu |
nvdisasm |
PTX/SASS 反汇编工具,用来看编译后指令。 | 拆快递看指令 |
Compute Sanitizer | GPU 版 “Valgrind”,检测越界、数据竞争等。 | GPU 内存查错 |
conda / mamba |
包/环境管理器,用独立前缀隔离 Python & 依赖,避免系统污染。 | 独立小房间 |
pip |
Python 官方包管理器,配 --index-url 拉特定 wheel;需在虚拟环境或 conda env 下用。 |
安装 Python 包 |
省流:CUDA = GPU 底座;PyTorch = AI 积木;wheel = 打好车的包;nvcc/nvdisasm/sanitizer
= 编译/查看/查错工具;conda/pip = 装包管家。
📄 .cu 文件到底是什么?
.cu
是 NVIDIA CUDA 源文件默认扩展名,可同时放 CPU 端 C/C++ 代码和 GPU 端 kernel:
- CPU 端(Host)代码:普通 C/C++ 语句,由主机 CPU 执行。
- GPU 端(Device)代码:用
__global__
/__device__
/__host__
关键字标注的函数或<<<grid,block>>>
启动的 kernel,将被编译为 PTX/SASS 在 GPU 上跑。
为什么单独用 .cu
? - 让 nvcc
识别文件需要“双重编译”:CPU 端交给主机编译器,GPU 端生成 PTX/SASS。
- 一个文件里即可 cudaMalloc/cudaMemcpy
及定义 kernel,方便小项目/快速实验。
常见编译方式: 1
2
3
4
5
6# 直接生成可执行
nvcc vec_add.cu -o vec_add
# 先生成对象,再由 g++ 链接
nvcc -c my_kernel.cu -o my_kernel.o
g++ host_main.cpp my_kernel.o -lcudart -L/usr/local/cuda/lib64
特性 | .c/.cpp | .cu |
---|---|---|
写 CPU 代码 | ✅ | ✅ |
写 GPU kernel | ❌ | ✅ |
编译器 | gcc/clang | nvcc(内部仍调 gcc/clang 处理 Host 部分) |
关键字 | 无 | __global__ __device__ 等 |
启动 kernel | ❌ | kernel<<<grid,block>>>(...) |
省流:.cu = 普通 C/C++ + GPU kernel
,只要用 nvcc
就能编译运行。
🖥️ 1 系统信息
组件 | 版本 |
---|---|
OS | Ubuntu 24.04.2 LTS (x86-64) |
GPU | NVIDIA H100 PCIe |
驱动 | 570.133.20 |
目标 CUDA | 12.6 (系统 Runtime) 12.4 (PyTorch wheel 内置) |
🔧 2 安装 CUDA 工具链
1 | # 1) 添加官方仓库 |
验证版本 1
2nvcc --version && nvdisasm --version && compute-sanitizer --version
nvidia-smi | head -5
📦 3 Conda 环境隔离
- 安装 Miniforge
1
2
3wget -O Miniforge3.sh https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3.sh -b -p $HOME/miniforge
eval "$($HOME/miniforge/bin/conda shell.zsh hook)" - 把缓存/临时目录挪到大分区(假设
/opt/ext
空间充足)1
2
3
4
5
6
7sudo mkdir -p /opt/ext/conda_pkgs /opt/ext/tmp && \
sudo chown -R $USER:$USER /opt/ext/conda_pkgs /opt/ext/tmp
# ~/.condarc
printf "pkgs_dirs:\n - /opt/ext/conda_pkgs\n" > ~/.condarc
# ~/.zshrc
echo 'export TMPDIR=/opt/ext/tmp' >> ~/.zshrc && source ~/.zshrc - 创建 GPU 环境
1
2conda create -n gpu python=3.11 -y
conda activate gpu
🔥 4 安装 GPU 版 PyTorch(CUDA-12.4 wheel)
1 | python -m pip install --upgrade pip |
注意
• 轮子名必须带+cu124
,否则是 CPU 版。
•--no-cache-dir
省磁盘。
快速验证 1
2
3
4
5
6python - <<'PY'
import torch, torchvision
print(torch.__version__, torch.version.cuda, torch.cuda.is_available())
print(torchvision.__version__)
PY
# ➜ 2.6.0+cu124 12.4 True
📝 5 生成环境日志
1 | python projects/gpu_fuzz/gen/collect_env.py \ |
重点确认: 1
2
3PyTorch version: 2.6.0+cu124
CUDA runtime version: 12.6.85
Is CUDA available: True
详细解读(常见疑问都在这里): -
PyTorch version: 2.6.0+cu124
—— 2.6.0 是框架版本;+cu124
表示它自带 CUDA-12.4 编译产物(cuDNN/cuBLAS 等)。 -Is debug build: False
—— 官方 Release 版(True 时为带断言的调试版,速度慢)。 -CUDA used to build PyTorch: 12.4
—— wheel 内置的编译 CUDA 版本;与系统runtime 12.6
向下兼容即可。 -OS / GCC / Clang / CMake
—— 编译本地 C++/CUDA 扩展时要用到的工具链版本,记录可复现性。 -Python version: 3.11.x (conda-forge)
—— 确认与你的虚拟环境一致,便于后续pip install
ABI 兼容。 -Is CUDA available: True
——torch.cuda.is_available()
结果,若 False 请先查驱动 / 环境变量。 -CUDA runtime version: 12.6.85
—— 驱动自带的libcuda.so
runtime 版本,只要 ≥ wheel 内的 12.4 即 OK。 -CUDA_MODULE_LOADING: LAZY
—— 默认懒加载 PTX,可减少启动时延;如需即时插桩可设EAGER
。 -GPU 0: NVIDIA H100 PCIe
—— 检测到的物理 GPU,与预期硬件相符。 -cuDNN/cuBLAS/cuFFT/…
—— 列表展示 wheel 自带的具体子库版本,用于排查 “库不匹配” 问题。 -CPU:
及后续 —— 主机硬件与漏洞缓解信息,可忽略;仅在编译器优化或虚拟化环境排错时有用。省流:三行打勾 + 驱动≥CUDA + GPU 型号正确 = 环境健康。
🛠️ 6 最小 CUDA 样例验证
- 编译
1
2cd projects/gpu_learn
nvcc vec_add.cu -o vec_add -O2 - 运行 & Sanitizer
1
2./vec_add # → [vec_add] PASS
compute-sanitizer --tool memcheck ./vec_add # → ERROR SUMMARY: 0 errors
📸 7 版本自检截图清单
nvcc --version
nvidia-smi
(前 5 行)
nvdisasm --version
(可选)
compute-sanitizer --version
projects/gpu_learn/log/env.txt
(前 24 行)
全部放入 gpu_learn/log/
即完成 Day-1 验收。
⚠️ 8 关键注意事项速览
事项 | 说明 |
---|---|
GPU 轮子 | torch …+cuXXX 必须与目标 CUDA 一致;纯版本号 = CPU 轮子 |
驱动 ≥ CUDA | 驱动 570 支持 CUDA 12.x,无需额外系统级 Runtime |
独立包目录 | pkgs_dirs & TMPDIR 指向大分区,避免 / 爆盘 |
PEP 668 | 系统 Python 禁止 pip,务必用 Conda/venv |
Sanitizer 延迟加载 | CUDA_MODULE_LOADING=LAZY 已在 env.txt 中展示 |
至此,阶段 0 / Day-1 环境就绪,接下来可愉快开发 CUDA/PyTorch 应用 🚀