CUDA Tools 常用命令总结与记录 (需要细化)
以下是对 CUDA Toolkit 中常用工具和命令的详细总结,涵盖编译器、调试器、性能分析工具、GPU管理工具等核心组件:
一、编译器工具:nvcc
nvcc
是 NVIDIA CUDA 编译器,用于编译 .cu
文件生成可执行文件或中间代码。
常用命令与参数
-
基本编译
nvcc -o output_file input_file.cu
-
指定计算能力(Architecture)
nvcc -arch=compute_XX -code=sm_XX input_file.cu # 例如:compute_61(PTX)和 sm_61(二进制)
-
生成中间文件
nvcc --ptx input_file.cu # 生成 PTX 中间代码 nvcc --cubin input_file.cu # 生成二进制 cubin 文件
-
优化选项
nvcc -O3 input_file.cu # 最高优化级别 nvcc -G input_file.cu # 生成调试信息 nvcc -lineinfo input_file.cu # 生成cuda-gdb和profiler 友好的信息(sourec-sass 更精确)
-
多 GPU 架构支持(Fatbin)
nvcc -gencode arch=compute_XX,code=sm_XX -gencode arch=compute_YY,code=sm_YY input_file.cu
二、性能分析工具
1. Nsight Systems (nsys)
- 基本分析
nsys profile --stats=true ./my_cuda_program
- 生成时间线报告
nsys profile -o output.qdrep ./my_cuda_program
- 指定采样频率
nsys profile --sample=cpu --frequency=1000 ./my_cuda_program
2. Nsight Compute (ncu)
- 分析内核性能
ncu --set full ./my_cuda_program
- 导出报告
ncu -o profile.ncu-rep ./my_cuda_program
三、调试工具
1. CUDA-GDB
- 启动调试
cuda-gdb ./my_cuda_program
- 常用命令
(cuda-gdb) break kernel_name # 在内核函数设置断点 (cuda-gdb) info cuda threads # 查看线程状态 (cuda-gdb) cuda thread # 切换线程上下文
2. Compute-Sanitizer
compute-sanitizer tool=memcheck ./my_cuda_program // Memory access checking
compute-sanitizer tool=racecheck ./my_cuda_program // Shared memory hazard checking
compute-sanitizer tool=synccheck ./my_cuda_program // Synchronization checking
compute-sanitizer tool=initcheck./my_cuda_program // Global memory initialization checking
四、GPU 管理工具
1. nvidia-smi
- 监控 GPU 状态
nvidia-smi # 显示 GPU 基本信息 nvidia-smi -l 1 # 每秒刷新一次 nvidia-smi -q # 显示详细信息
- 控制 GPU 行为
nvidia-smi -i 0 -pm 1 # 启用持久模式(GPU 0) nvidia-smi -i 0 -e 0 # 关闭 ECC(需权限) nvidia-smi --gpu-reset # 重置 GPU
五、CUDA Samples
CUDA Toolkit 包含大量示例代码,通常位于 /usr/local/cuda/samples
或 C:\ProgramData\NVIDIA Corporation\CUDA Samples
。
-
编译所有示例:
cd /path/to/samples make
-
运行示例:
./bin/x86_64/linux/release/deviceQuery # 查询 GPU 信息
六、环境变量
- GPU 设备分配:
export CUDA_VISIBLE_DEVICES=0,1 # 仅使用 GPU 0 和 1
- 强制同步执行(调试用):
export CUDA_LAUNCH_BLOCKING=1
- 指定默认计算能力:
export CUDAFLAGS="-arch=sm_70"
七、版本管理
- 查看 CUDA 版本:
nvcc --version cat /usr/local/cuda/version.txt
- 切换 CUDA 版本:
sudo update-alternatives --config cuda # 如果已安装多个版本
八、常见问题
-
检查 CUDA 安装是否成功:
nvidia-smi && nvcc --version
-
多架构兼容性:
- 使用
-arch=compute_XX -code=sm_XX
确保代码兼容目标 GPU。
- 使用
-
性能瓶颈分析:
- 使用
Nsight Systems
查看时间线,Nsight Compute
分析内核瓶颈。
- 使用
掌握这些工具和命令,可以高效完成 CUDA 程序的开发、调试和优化。建议结合官方文档进一步学习特定场景的高级用法。