NVBench:简化CUDA内核基准测试的强大工具

NVBench:简化CUDA内核基准测试的强大工具

nvbenchCUDA Kernel Benchmarking Library项目地址:https://gitcode.com/gh_mirrors/nv/nvbench

项目介绍

NVBench 是一个专为简化 CUDA 内核基准测试而设计的 C++17 库。它提供了一套强大的工具,帮助开发者轻松地对 CUDA 内核进行性能测试和优化。无论是参数扫描、运行时定制,还是多种测量类型和输出格式,NVBench 都能满足你的需求。

项目技术分析

核心功能

  • 参数扫描:NVBench 提供了一个灵活的“轴”系统,可以探索内核的配置空间。参数可以是动态的数字或字符串,也可以是静态类型。
  • 运行时定制:通过丰富的命令行接口,用户可以重新定义参数轴、选择 CUDA 设备、锁定 GPU 时钟、更改输出格式等。
  • 吞吐量计算:自动计算并报告元素吞吐量(元素/秒)和全局内存带宽使用情况(字节/秒和设备峰值带宽的百分比)。
  • 多种输出格式:支持 Markdown 和 CSV 输出格式。
  • 手动计时模式:允许在基准测试实现中显式地开始和停止计时。
  • 多种测量类型:包括冷测量和批量测量,分别报告 GPU 和 CPU 时间。

支持的编译器和工具

  • CMake > 2.23.1
  • CUDA Toolkit + nvcc: 11.1 -> 12.4
  • g++: 7 -> 12
  • clang++: 9 -> 18
  • cl.exe: 2019 -> 2022 (19.29, 29.39)
  • 头文件支持 C++17 -> C++20

项目及技术应用场景

NVBench 适用于以下场景:

  • CUDA 内核性能优化:通过详细的基准测试数据,帮助开发者优化 CUDA 内核的性能。
  • 回归测试:确保在代码变更后,CUDA 内核的性能不会下降。
  • 参数调优:通过参数扫描功能,找到最佳的配置参数组合。
  • 性能分析:提供多种测量类型和输出格式,帮助开发者深入分析 CUDA 内核的性能瓶颈。

项目特点

  • 灵活性:强大的参数扫描和运行时定制功能,满足各种复杂的基准测试需求。
  • 易用性:只需几行 CUDA C++ 代码,即可创建一个基本的内核基准测试。
  • 多功能性:支持多种测量类型和输出格式,适应不同的分析需求。
  • 开源社区支持:欢迎开发者贡献代码,共同完善 NVBench。

快速开始

最小基准测试

只需几行 CUDA C++ 代码,即可创建一个基本的内核基准测试:

void my_benchmark(nvbench::state& state) {
  state.exec([](nvbench::launch& launch) {
    my_kernel<<<num_blocks, 256, 0, launch.get_stream()>>>();
  });
}
NVBENCH_BENCH(my_benchmark);

命令行接口

每个由 NVBench 生成的基准测试可执行文件都提供了一组丰富的命令行选项,用于在运行时配置基准测试执行。

示例

NVBench 提供了多个示例,展示了各种功能和用例,包括:

  • 运行时和编译时参数扫描
  • 枚举和编译时常量整数参数轴
  • 报告元素/秒和字节/秒吞吐量统计
  • 跳过基准测试配置
  • 在特定流上进行基准测试
  • 手动计时

构建示例

mkdir -p build
cd build
cmake -DNVBench_ENABLE_EXAMPLES=ON -DCMAKE_CUDA_ARCHITECTURES=70 .. && make

贡献

欢迎开发者贡献代码!查看 issue board 获取当前问题,特别是标记为 good first issue 的问题,适合首次贡献者。

许可证

NVBench 采用 Apache 2.0 许可证,并附带 LLVM 例外条款。详细信息请参阅 LICENSE

范围及相关项目

NVBench 专注于测量单个主机端关键区域的 CPU 和 CUDA GPU 执行时间,适用于单个内核的回归测试和参数调优。对于多个应用程序的端到端性能分析,建议使用 NVIDIA Nsight 工具。NVBench 目前不针对 CPU 微基准测试进行优化,未来可能会改变。对于高分辨率的 CPU 基准测试,建议使用 Google Benchmark。

nvbenchCUDA Kernel Benchmarking Library项目地址:https://gitcode.com/gh_mirrors/nv/nvbench

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仰北帅Bobbie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值