# 子赛题一、评测数据集生成挑战赛

欢迎参加 **评测数据集生成挑战赛** 📊！   本比赛旨在构建一个标准化、可用于 GPU 性能测试的评测数据集，帮助开发者更高效地比较不同硬件和框架的性能表现。

---

## 💻 比赛背景简介

在 AI 模型开发和部署中，**GPU 性能评测**是一个非常重要的环节。   不同 GPU、不同深度学习框架（如 PyTorch、TensorFlow、PaddlePaddle 等）在运行相同任务时，速度、吞吐量、内存占用等表现差异很大。   本次挑战赛希望通过社区的力量，**构建一个标准化、带权重的评测数据集**，让 GPU 性能比较更加科学、公正。

---

## 🎯 比赛目标

*   从 **PyTorch、PaddlePaddle、TensorFlow、Jax、MMCV、Transformers** 等框架中收集并生成评测样本。
    
*   为每个样本提供**标准输出**和**性能指标**，确保结果可复现。
    
*   最终形成 **GPU CodeForces** 数据集和评价方法。

初次了解本类比赛的小伙伴可以查看以下两份文档，希望帮助你快速入门和上手：
[赛题入门](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/tree/main/GPUCodeForces%E8%B5%9B%E9%A2%98%E5%85%A5%E9%97%A8.md)、[代码解读](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/tree/main/GPUCodeForces%E4%BB%A3%E7%A0%81%E8%A7%A3%E8%AF%BB.md)。
    

---

## 📥 参赛流程

  一句话概括：进入[GPUCodeForces赛事首页](https://gitlink.com/ccf-ai-infra/GPUCodeForces)，完成一份成功合并到仓库内的提交即为参赛成功！时间自由，方法自由，只要有灵感就可以动手开code~

   ### 🌰举个栗子

   * 登录or注册自己的Gitlink账号后，进入赛事首页初步查看仓库内的文件内容：

    .
    ├── S1(说明：第一季比赛名称，该目录下文件需选手自建)
    │   ├── issue id 1(选手提交算子前创建的issue对应的id)
    │   │   ├── cudacode.py(必要提交文件)
    │   │   ├── torchcode.py(必要提交文件)
    │   │   ├── run_code.py(必要提交文件)
    │   │   ├── prompt.txt(必要提交文件)
    │   ├── issue id 2
    │   ├── issue id ...
    ├── example(样例提供，供大家上手)
    │   ├── 001-example(文件结构与 issue id x 一致)
    │   ├── 002-example
    ├── images(图片文件夹，参赛选手可忽略)
    ├── FAQ.md(社区收集的问题与解答)
    ├── LICENSE(证书，参赛选手可忽略)
    ├── README.md(赛题baseline)
    ├── how-to-contribute.md(提交指南看这里)

   * 在S1文件夹的文件即为参赛选手需要提交的文件，其余文件夹和文件皆为辅助参赛选手了解比赛、提供思路、排忧解难之用。
   
   * 我们将当前赛题的项目clone到本地电脑上（建议使用git clone + 链接的方式），在S1文件夹下创建一个以自己issue id命名的文件夹，待提交的参赛代码文件都放在这里面。

   ```
    Tips：issue id ≠ issue名称，名称建议为对该算子的概括性描述。创建了issue后，链接末尾处的数字即为issue id。同时，也可以在issue界面的醒目位置查看如"#123"这样的数字标识。
   ```
   * 做好了准备工作，就可以开始尽情发挥，去寻找算子亦或是优化算子。在example文件夹中提供了算子样例，如果想简单上手可以查看该文件夹。虽然有效的算子优化也算一次提交，但我们鼓励大家发现新的算子✨真正与其他选手拉开差距。
     
     🔧简单介绍一下样例代码：

     **example_torchcode.py：** 基准模型（Baseline）。示例提供一个简单的PyTorch模型，只包含一个ReLU激活函数。

     **example_cudacode.py**：优化模型。示例使用PyTorch的load_inline功能直接编译和加载CUDA代码，创建了一个新的模型类，使用自定义CUDA实现替代PyTorch的ReLU。

     **run_code.py**：验证和性能测试脚本。验证自定义CUDA实现与原始PyTorch实现的数值精度一致性，比较两种实现的性能，计算加速比。

     **prompt.txt**：提示词文本。提供类似 “融合算子 CUDA 设计” 的 prompt 编写思路。

     💡如何将一个example变为自己的一份提交，具体的算子优化思路可参考：[GPUCodeForces赛题解读](./GPUCodeForces赛题解读.md)
    
   * 为了测试代码最终的跑通结果，需要使用规定的GPU。在[模力方舟](https://ai.gitee.com/compute)平台上准备了大家此次需要的算力资源，使用免费的算力券购买实例，接着便可以在云端实例上进行代码修改和测试。
     
     相关算力券的领取方式请见[算力平台使用说明](https://ai.gitee.com/docs/compute/container)、[算力券兑换发放和兑换](https://ai.gitee.com/docs/billing/coupons)。
     ```
     Tips：进行云端服务器的实例选择有库存的即可，点击进入后需要确定配置。其余选项保持默认，只需更改镜像处的选择：基础镜像-->CV-CUDA-->PyTorch2.4.0-->Python任意-->maca 3.0.0.5
     ```

   * 代码测试运行没有问题后，便可以准备提交了（记得将所有必要文件保存到提交文件夹）。提交流程如下，全程使用git：
      ```
      # cd到自己克隆到本地的项目路径下，如：C:\Users\Desktop\ODTC AI Infra\GPUCodeForces

      git remote -v      # 检查是否链接到自己的Gitlink仓库
      git checkout -b dev      # 新建一个分支，dev即分支名字可以任取
      git add .      # 将文件的变更操作暂存
      git commit -m "输入你本次提交的目的"      # 目的简洁明了最好
      git push origin dev      # 提交你的修改到分支上
      ```
   
     对git与远程仓库操作的疑问可以点击[how-to-contribute.md](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/tree/main/how-to-contribute.md)查看详情。

   * 顺利提交后的代码还只在你自己fork的仓库下，还需要和主仓库合并才能真正让管理员看到你的代码。

     fork仓库（你自己的仓库）与主仓库之间关系如下：

     ```
     ODTC AI Infra/GPUCodeForces(main)   
     ├── ...
     ├── folders

     your_name/GPUCodeForces(main) # 自己仓库下的main分支内容与主仓库一致
     ├── ...
     ├── folders

     your_name/GPUCodeForces(dev) # dev分支才是你修改后的代码存放处
     ├── ...
     │   ├── your codes
     ├── folders
     ```
    
     进入自己的仓库，点击上方选项栏：
     ```
     合并请求(PR)-->+新建合并请求-->源分支选择dev(名称任取)-->填写下方选框-->标题为自己的issue标题-->描述填请简明扼要，描述内关联自己的issue id(如“fixes #001”)
     ```
    
     提交后便能看到自己的PR记录了，在对应记录的评论区会有测试结果的告知，请留意查看~

  🌳一份完整的提交流程如上，期待各位自由发挥，赛出风采与水平！

  ⏺如仍有疑问，请点击[提交流程演示视频](https://www.bilibili.com/video/BV1CcnTztEfc/)

### ⭐审核流程

*   你提交的PR都会得到回复，大概存在的几种情况如下
    ```
    提交PR-->测试通过✔️-->已合并-->有效提交 ヽ(✿ﾟ▽ﾟ)ノ
    提交PR-->测试通过✔️-->已关闭-->代码重复/相似-->无效提交 (；′⌒`)
    提交PR-->测试失败✖️-->已关闭-->代码不合格-->无效提交 (；′⌒`)
    ```
    也就是说，除了能够自己在算力平台的实例上运行得到算子测算的初步结果外，还可以在这里看到最终的测算结果。这里显示测试通过才能进入后续审核流程，并最终上传至比赛的算子仓库。

### ✅ 参赛资格

*   你提交的PR样本中，**至少有 1 个样本被评审通过并正式整合到“GPU CodeForces” 数据集**，即可算作有效参赛。
    

### ⚠️注意事项

1.  请勿抄袭他人代码或成果
    
2.  请勿恶意提交（如相同算子多次提交、相近优化重复提交）  
    \---相近优化：即指同一份参赛用例在优化后加速比没有提升或更低的用例提交
    
3.  请遵守提交的格式要求、内容规范
    

---

## 🏅 竞赛排名机制

1.  **优先按接受数量从高到低排序作为排名，取前12名。**
    
2.  若接受数量相同：
    
    *   比较总基础评分高者优先
        
    *   若仍相同，比加分项得分高者优先
        

> **接受数量** = 提交并被评审通过的样本总数

> **接受数量相同需要区分排名时如下的评分规则才会生效**

---

## 📈 评分规则

### 📊 基础得分

| 内容 | 分值 |
| --- | --- |
| 提供标准 GT 输出生成函数（Numpy-CPU / 原始框架实现） | +2 分 |
| CUDA 执行时间评估 | +5 分 |
| CUDA 吞吐量评估 | +4 分 |
| CUDA 内存带宽评估 | +3 分 |

### ✨ 加分项

| 内容 | 分值 |
| --- | --- |
| 提供 Prompt 让 LLM 生成对应的 CUDA 代码，并同样进行性能评价 | 额外加分 |

---

## 📚 术语解释

*   **评测数据集**：用来测试 GPU 性能的一组标准化样本，包括代码、输入数据和预期结果。
    
*   **GT（Ground Truth）**：标准参考答案或结果，用来验证程序运行是否正确。
    
*   **吞吐量（Throughput）**：每秒钟能处理的数据量，越高表示 GPU 处理能力越强。
    
*   **内存带宽（Memory Bandwidth）**：单位时间内 GPU 内存与计算核心之间的数据传输速度。
    
*   **Prompt**：引导大语言模型（LLM）生成代码或内容的提示词。
    
*   **LLM**：Large Language Model，大语言模型，如 ChatGPT、LLaMA 等。
    

---

## 📬 联系与帮助

如需更多信息或格式说明，请查看官方文档或在本仓库提交[想法](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/issues/new)进行讨论，或直接在交流群内与主办团队进行沟通。

祝各位挑战成功，贡献出高质量的 GPU 评测数据集！🚀

## FAQ

[第一季FAQ参考](https://gitlink.org.cn/ccf-ai-infra/GPUCodeForces/tree/main/FAQ.md)