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

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 程序的开发、调试和优化。建议结合官方文档进一步学习特定场景的高级用法。

http://www.xdnf.cn/news/521.html

相关文章:

  • 路由引入、路由过滤及路由策略
  • C++ 用哈希表封装unordered_set/unordered_map
  • Linux进程概念
  • Day95 | 灵神 | 二叉树 二叉树的垂序遍历
  • U-Boot(Universal Bootloader)简介
  • 不带无线网卡的Linux开发板上网方法
  • 英文论文写作:常用AI工具与【新秀笔目鱼】
  • JAVA的泛型
  • jQuery — 动画和事件
  • SpringBoot学习(过滤器Filter。拦截器Interceptor。全局异常捕获处理器GlobalExceptionHandler)(详细使用教程)
  • 哲学家就餐问题(避免死锁)
  • BootStrap:进阶使用(其二)
  • 计算机网络 实验五 RIP的配置与应用
  • 序列化和反序列化
  • 第9期:文本条件生成(CLIP + Diffusion)详解
  • 基于 Python 的自然语言处理系列(82):Transformer Reinforcement Learning
  • Alan AI - 面向Web的生成式AI SDK
  • 基于C语言实现文件读取
  • Linux 第五讲 --- 权限管理
  • 6.常用控件-QWidget|windowTitle|windowIcon|qrc机制|windowOpacity|cursor(C++)
  • Amlogic S905L3 系列对比:L3A、L3B 与 L3AB 深度解析
  • Unity之如何实现RenderStreaming视频推流
  • 大学英语四级选词填空阅读题和段落匹配解析
  • 【Hot100】54. 螺旋矩阵
  • 2025.04.19-阿里淘天春招算法岗笔试-第一题
  • 金融数学专题6 证券问题与资本利得税
  • Pandas数据统计分析
  • MCS-51单片机汇编语言编程指南
  • ArcPy Mapping 模块基础
  • 3. 进程概念