目 录CONTENT

文章目录

CUDA命令大全

~梓
2025-04-29 / 0 评论 / 0 点赞 / 13 阅读 / 0 字
温馨提示:
本文最后更新于2025-04-29,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一、CUDA 编译器工具(nvcc

nvcc 是 CUDA 程序的主要编译器,用于编译 .cu 源文件和混合编译 C/C++ 代码。

常用命令与选项:

# 基本编译命令
nvcc source.cu -o output               # 编译单个 CUDA 源文件
nvcc source.cu host_code.cpp -o output  # 混合编译 CUDA 和 C++ 代码

# 编译选项
--arch=compute_XX                       # 指定 GPU 架构(XX 为算力,如 75、86)
--code=sm_XX                            # 生成对应架构的二进制代码
-g                                       # 开启调试信息(配合 gdb 调试)
-G                                       # 生成未优化的调试代码
-O0/-O1/-O2/-O3                         # 优化等级(默认 O2)
-lcudart                                # 链接 CUDA 运行时库(通常自动链接)
-lcublas                                # 链接 cuBLAS 库(需手动指定第三方库)
--ptx                                     # 生成 PTX 中间代码(用于分析)
--cubin                                   # 生成二进制 Cubin 文件
--keep                                    # 保留临时文件(调试用)
--device-debug                            # 启用设备端调试(需配合调试工具)

二、GPU 状态监控工具(nvidia-smi

nvidia-smi(NVIDIA System Management Interface)用于查看 GPU 硬件状态、内存使用、进程占用等。

常用命令与选项:

nvidia-smi                                  # 实时监控摘要
nvidia-smi --list-gpus                      # 列出所有 GPU 设备信息
nvidia-smi --memory-usage                   # 显示内存使用情况
nvidia-smi --pid                            # 显示占用 GPU 的进程 PID
nvidia-smi -l 5                             # 每 5 秒刷新一次监控信息
nvidia-smi -f output.csv                    # 将结果保存到 CSV 文件
nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total --format=csv
                                        # 自定义查询指标并输出为 CSV

三、性能分析工具

1. nvprof(NVIDIA Profiler)

用于分析 CUDA 内核(Kernel)和主机代码的性能,统计执行时间、内存带宽、指令效率等。

nvprof ./your_program                      # 分析程序并输出摘要
nvprof --print-gpu-trace ./your_program     # 打印 GPU 内核执行轨迹
nvprof --metrics all ./your_program         # 收集所有可用性能指标
nvprof --events kernel_execution_time ./your_program
                                        # 单独监控内核执行时间
nvprof --csv -o profile.csv ./your_program  # 输出为 CSV 格式便于分析

2. nsight-systemsnsight-compute

新一代性能分析工具(命令行版本):

nsight-systems -o profile_sys ./your_program  # 系统级性能分析(CPU+GPU 交互)
nsight-compute -o profile_comp ./your_program # GPU 内核细粒度分析(寄存器、缓存等)

四、调试工具

1. cuda-gdb

CUDA 专用调试器,用于调试设备端代码(Kernel):

cuda-gdb ./your_program                     # 启动调试器
(cuda-gdb) run                              # 运行程序
(cuda-gdb) break kernel_function            # 在 Kernel 函数处设置断点
(cuda-gdb) cuda thread 1 0 0                # 切换到指定 GPU 线程(网格/块/线程索引)

2. nvdisasm

反汇编 CUDA 二进制代码(Cubin/PTX):

nvdisasm cubin_file.cubin                    # 反汇编 Cubin 文件
nvdisasm -ptx ptx_file.ptx                   # 显示 PTX 代码细节

五、目标文件与库工具

1. cuobjdump

查看 CUDA 目标文件(.o)或库文件的信息:

cuobjdump -section .text your_object.o      # 显示内核的汇编代码
cuobjdump -all your_object.o                # 显示所有节(Section)信息

2. fatbinary

处理多架构的 FatBinary 文件:

fatbinary -create arch1.cubin arch2.cubin -o fatbin.cubin  # 合并多个 Cubin
fatbinary -extract -arch sm_XX fatbin.cubin -o single.cubin # 提取指定架构的 Cubin

六、其他实用工具

1. nvtx(NVIDIA Tools Extension)

在代码中插入性能分析标记(需配合 nvprofnsight):

#include <nvtx3/nvtx.h>
nvtxRangeId_t range = nvtxRangeStartA("MyKernel");  // 标记代码段开始
// 内核调用或计算代码
nvtxRangeEnd(range);                                // 标记结束

2. cuda-memcheck

检测 GPU 内存错误(如越界访问、未初始化内存):

cuda-memcheck ./your_program                        # 启用内存检查

总结

  • 编译调试:以 nvcc 为核心,配合 cuda-gdbcuobjdump
  • 性能分析nvprof 用于基础分析,nsight 系列用于深入优化。
  • 状态监控nvidia-smi 是实时监控 GPU 状态的必备工具。
  • 高级工具nvtx 用于自定义标记,fatbinary 用于多架构兼容。

更多细节可通过命令的帮助文档查看(如 nvcc --helpnvidia-smi --help),或参考 CUDA Toolkit 官方文档

0

评论区