GPU kernels dataset
收藏arXiv2025-05-07 更新2025-05-09 收录
下载链接:
https://github.com/Scientific-Computing-Lab/ParallelCodeEstimation
下载链接
链接失效反馈官方服务:
资源简介:
本研究构建了一个包含340个GPU内核的平衡数据集,这些内核来自HeCBench基准测试,并使用CUDA和OpenMP编写。数据集的创建过程包括对HeCBench代码进行基准测试,并从实际GPU剖析中获得真实标签。该数据集旨在帮助解决高性能计算中GPU性能预测的问题,无需依赖硬件执行时间剖析。
This study develops a balanced dataset comprising 340 GPU kernels sourced from the HeCBench benchmark suite, which are implemented using CUDA and OpenMP. The dataset construction process involves benchmarking the HeCBench code and acquiring ground truth labels from actual GPU profiling. This dataset is designed to address the challenge of GPU performance prediction in high-performance computing (HPC) without relying on hardware execution time profiling.
提供机构:
美国弗吉尼亚理工学院 (Virginia Tech, USA)
创建时间:
2025-05-07
原始信息汇总
Modified HeCBench for Roofline Analysis 数据集概述
数据集背景
- 基于HeCBench基准测试集的修改版本,用于收集CUDA和OpenMP代码的Roofline性能数据
- 使用CMake构建系统替代原autohecbench.py脚本,便于编译器切换和构建选项管理
目标代码统计
- CUDA代码:
- 可构建目标: 445/491 (90%)
- 跳过构建目标: 46/491 (由于MPI需求、依赖缺失或执行错误)
- OpenMP代码:
- 可构建目标: 303/320 (94.6%)
- 跳过构建目标: 17/320 (由于MPI需求或构建依赖缺失)
构建流程
- 通过
runBuild.sh脚本生成Makefile并启动构建过程 - 默认使用
clang++和clang编译器 - 需手动设置
runBuild.sh中的编译器/选项
常见构建问题
- 头文件包含顺序问题
- 文件类型识别错误
- 缺失头文件/预处理器定义
- 需解压的源文件
- 链接库缺失
- 包含目录顺序问题
数据收集流程
- 使用
gatherData.py脚本收集Roofline基准测试数据 - 使用NVIDIA Nsight Compute (
ncu)分析每个可执行文件的内核 - 输出CSV格式的性能数据文件
roofline-data.csv
内核提取流程
- 使用
simpleScrapeKernels.py脚本提取内核名称 - 生成JSON格式的输出文件
simple-scraped-kernels.json - 包含每个可执行文件的所有源文件内容
数据集生成
- 使用Jupyter Notebook处理提取的内核数据
- 生成修剪后的数据集文件:
simple-scraped-kernels-CUDA-pruned.jsonsimple-scraped-kernels-OMP-pruned.json
- 创建零样本推理数据集
zero-shot-inference-data.jsonl
数据集可视化
visualizeGatheredData-withLaunchData.ipynbvisualizeAndPruntScrapedKernels.ipynb
限制
- 仅分析每个内核的前两次调用
- 部分程序因内存分配问题可能无法运行
原始HeCBench基准测试集信息
- 包含多种异构计算基准测试:
- CUDA
- HIP
- SYCL/DPC++
- OpenMP-4.5目标卸载
- 覆盖多个应用领域:
- 汽车
- 带宽
- 生物信息
- 计算机视觉
- 密码学
- 数据压缩
- 金融
- 地理科学
- 图计算
- 机器学习
- 数学运算
- 随机数生成
- 搜索算法
- 信号处理
- 模拟
- 排序
- 机器人
搜集汇总
数据集介绍

构建方式
GPU kernels dataset的构建基于HeCBench基准测试套件中的340个平衡样本,涵盖CUDA和OpenMP两种编程模型。通过NVIDIA RTX 3080硬件平台对每个内核进行性能剖析,捕获单精度浮点、双精度浮点及整数运算的吞吐量等关键指标,结合内存带宽数据计算出算术强度(AI),最终依据Roofline模型将内核分类为计算受限(CB)或带宽受限(BB)。为确保数据质量,研究团队通过令牌数截断和样本均衡化处理,消除了长代码输入和类别偏差对模型评估的影响。
特点
该数据集的核心特点在于其严格的平衡性和多维度标注。340个样本均匀覆盖CUDA/OpenMP语言和CB/BB类别,每个样本附带硬件规格、内核调用参数及完整的源代码。独特的Roofline标签源自实测性能数据而非模拟,为LLM的静态性能预测提供了可靠基准。数据预处理中采用的8e3令牌截断策略,既保留了代码语义完整性,又适配了主流LLM的上下文窗口限制,凸显了工程严谨性。
使用方法
该数据集专为评估LLM在GPU性能预测中的能力设计,支持四种实验范式:基于剖析数据的基准测试、零样本源代码分类、少样本示例学习及微调实验。使用者可通过提供内核源代码和硬件参数,测试LLM对计算/带宽受限性的判断准确率。公开的代码库包含标准化的提示模板和评估指标(准确率、F1值、MCC),便于复现论文中的零样本/少样本实验,或扩展用于新型提示策略的验证。
背景与挑战
背景概述
GPU kernels dataset由Gregory Bolet等研究人员于2025年创建,旨在探索大型语言模型(LLMs)在预测并行GPU代码性能方面的潜力。该数据集包含340个平衡的GPU内核,源自HeCBench基准测试,涵盖CUDA和OpenMP两种编程模型,并通过实际GPU性能分析获得真实标签。研究核心问题聚焦于LLMs是否能在无需硬件支持的情况下,准确预测GPU内核是计算受限(compute-bound)还是带宽受限(bandwidth-bound)。这一研究为高性能计算(HPC)领域提供了一种新型静态分析方法,显著降低了依赖硬件剖析的成本和复杂性,推动了LLMs在代码性能优化中的应用。
当前挑战
GPU kernels dataset面临的主要挑战包括:1) 领域问题挑战:准确预测GPU内核性能需解决代码语义与硬件特性之间的复杂映射关系,尤其是在缺乏运行时剖析数据时,LLMs需从源代码中推断算术强度(Arithmetic Intensity)等关键指标。2) 构建过程挑战:数据集的平衡性处理尤为关键,需通过剪裁长源代码和剔除冗余带宽受限样本以避免偏差;同时,不同GPU架构的性能差异使得跨硬件泛化成为难点,当前数据仅基于NVIDIA RTX 3080的剖析结果,限制了模型的普适性。此外,微调LLMs所需的数据量远超现有规模,导致模型易陷入过度偏向某一分类的困境。
常用场景
经典使用场景
GPU kernels数据集在并行计算和高性能计算(HPC)领域中被广泛用于评估和分析GPU内核的性能特性。该数据集包含了340个平衡的CUDA和OpenMP GPU内核,这些内核来自HeCBench基准测试套件,并附带了通过实际GPU性能分析获得的真实标签。研究人员利用该数据集来验证大型语言模型(LLMs)在预测GPU内核性能时的准确性,特别是在无需实际硬件执行的情况下,判断内核是计算受限(compute-bound)还是带宽受限(bandwidth-bound)。
解决学术问题
该数据集解决了高性能计算中一个关键的学术问题:如何在不依赖实际硬件分析的情况下,静态预测GPU内核的性能瓶颈。通过将问题建模为基于Roofline模型的分类任务,数据集为研究LLMs在性能预测中的潜力提供了基准。其意义在于为硬件无关的性能分析开辟了新途径,减少了开发人员对昂贵GPU资源的依赖,同时为LLMs在HPC优化中的应用奠定了基础。
衍生相关工作
该数据集衍生了一系列经典研究工作,包括LLMs在GPU性能预测中的扩展应用,如基于提示工程(prompt engineering)的零样本和少样本学习方法。相关研究还探索了如何通过微调LLMs提升分类准确性,以及结合链式推理(chain-of-thought)技术改进模型对Roofline模型的理解。此外,数据集启发了对静态代码分析与动态性能预测结合的新方法,推动了HPC领域工具链的创新。
以上内容由遇见数据集搜集并总结生成



