当前位置: 首页 > news >正文

CUDA Tools 常用命令总结与记录 (需要细化)

以下是对 CUDA Toolkit 中常用工具和命令的详细总结,涵盖编译器、调试器、性能分析工具、GPU管理工具等核心组件:


一、编译器工具:nvcc

nvcc 是 NVIDIA CUDA 编译器,用于编译 .cu 文件生成可执行文件或中间代码。

常用命令与参数

  1. 基本编译

    nvcc -o output_file input_file.cu
    
  2. 指定计算能力(Architecture)

    nvcc -arch=compute_XX -code=sm_XX input_file.cu  # 例如:compute_61(PTX)和 sm_61(二进制)
    
  3. 生成中间文件

    nvcc --ptx input_file.cu        # 生成 PTX 中间代码
    nvcc --cubin input_file.cu      # 生成二进制 cubin 文件
    
  4. 优化选项

    nvcc -O3 input_file.cu         # 最高优化级别
    nvcc -G input_file.cu          # 生成调试信息
    nvcc -lineinfo input_file.cu  # 生成cuda-gdb和profiler 友好的信息(sourec-sass 更精确) 
    
  5. 多 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/samplesC:\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  # 如果已安装多个版本
    

八、常见问题

  1. 检查 CUDA 安装是否成功

    nvidia-smi && nvcc --version
    
  2. 多架构兼容性

    • 使用 -arch=compute_XX -code=sm_XX 确保代码兼容目标 GPU。
  3. 性能瓶颈分析

    • 使用 Nsight Systems 查看时间线,Nsight Compute 分析内核瓶颈。

掌握这些工具和命令,可以高效完成 CUDA 程序的开发、调试和优化。建议结合官方文档进一步学习特定场景的高级用法。

相关文章:

  • ESP32-S3上跑通红外重复码发送(7)
  • 复习JUC的总结笔记
  • 使用AOP完成添加日志
  • 文件系统基础
  • P1113 杂务-拓扑排序
  • gulp方法
  • Linux——firewalld防火墙(笔记)
  • 关于一对多关系(即E-R图中1:n)中的界面展示优化和数据库设计
  • 可以直接本地使用的Python环境可以调用的AI大模型归纳整理(AI辅助)
  • Linux学习——信号量
  • 编程技能:调试04,逐语句命令
  • JavaScript数据类型简介
  • [Java]反射、String类补充
  • SICAR程序标准功能块 FB1512 “Robot_kuka_FB“
  • 02、Yarn的安装理念及如何破解依赖管理困境
  • Photoshop安装与配置--简单攻略版
  • 【教程】DVWA靶场渗透
  • 【无标题】微信开发者工具编译运行没问题,真机调试报错:Component is not found in path “wx://not-found“.
  • JavaScript 中的同步与异步:从单线程到事件循环
  • 睡前小故事数据集分享
  • 一周观展|上海,一系列特展大展渐次呈现
  • 纪念沈渭滨︱在恩师沈渭滨老师指导下走上学术研究之路
  • 五一假期出行预订进入高潮:酒店搜索热度翻倍,“请4休11”拼假带动长线游
  • 成了“一日顶流”又能如何?
  • 观察|美军在菲律宾部署新导弹,试图继续构建“导弹链”
  • 思南读书会500期了,这是上海最具温度的阅读文化样本