|
|
@@ -1,103 +1,80 @@ |
|
|
# GPUCodeForces |
|
|
|
|
|
|
|
|
|
|
|
1. 评测数据集生成挑战赛项目 |
|
|
|
|
|
|
|
|
|
|
|
- **目标:** 建立一个专门用来测试GPU性能的数据集。数据集里的内容(即“样本”)可以从流行的工具和模型库中获取:PyTorch, PaddlePaddle, TensorFlow, Jax, MMCV, Transformers 等。 |
|
|
|
|
|
- **评估规则:** 进入评价数据集数量最多的前 12 名 |
|
|
|
|
|
-**评测资源:**MXC500单卡 |
|
|
|
|
|
- **项目价值:** 形成标准的 GPU 评测数据集和评价方法 |
|
|
|
|
|
- **参赛资格:** |
|
|
|
|
|
只要你至少成功贡献了1个样本(即你的提交经过审核后并被选入“GPU CodeForces”数据集),就可以参赛。 |
|
|
|
|
|
|
|
|
|
|
|
#### 📤 提交要求及评分规则 |
|
|
|
|
|
|
|
|
|
|
|
- 每位选手按一个数据集(JSON 格式)提交,一个完整的GPU CUDA数据集需要包含以下几个部分: |
|
|
|
|
|
1. 数据集样本描述: 清晰地阐述问题背景、输入、输出和预期功能。 |
|
|
|
|
|
2. 输入数据生成函数: 用于生成各种规模和特性的输入数据的代码。 |
|
|
|
|
|
3. 标准GT输出生函数 : 用于生成给定输入数据的正确输出,通常是Numpy-CPU实现,或原torch/paddle/tensorflow实现。 |
|
|
|
|
|
4. 性能评估指标: 明确评估CUDA解决方案性能的标准(执行时间、吞吐量、内存带宽) |
|
|
|
|
|
-数据集样本示例: |
|
|
|
|
|
1.样本描述 |
|
|
|
|
|
● 题目名称: 矩阵乘法 |
|
|
|
|
|
● 背景: 矩阵乘法是科学计算、机器学习和图形学中的基本操作。优化其在GPU上的性能是CUDA编程中的一个核心挑战。 |
|
|
|
|
|
● 任务: 给定两个矩阵A和B,计算它们的乘积C = A * B。 |
|
|
|
|
|
2.输入数据生成函数 |
|
|
|
|
|
编写一个脚本,根据给定的 M,K,N 参数,生成两个随机填充的浮点数矩阵A和B |
|
|
|
|
|
import numpy as np |
|
|
|
|
|
|
|
|
|
|
|
def generate_matrix_multiplication_data(M, K, N): |
|
|
|
|
|
""" |
|
|
|
|
|
生成矩阵乘法问题的输入数据。 |
|
|
|
|
|
Args: |
|
|
|
|
|
M, K, N: 矩阵A (M x K) 和矩阵B (K x N) 的维度。 |
|
|
|
|
|
Returns: |
|
|
|
|
|
tuple: (matrix_a, matrix_b) |
|
|
|
|
|
""" |
|
|
|
|
|
matrix_a = np.random.uniform(-100.0, 100.0, (M, K)).astype(np.float32) |
|
|
|
|
|
matrix_b = np.random.uniform(-100.0, 100.0, (K, N)).astype(np.float32) |
|
|
|
|
|
return matrix_a, matrix_b |
|
|
|
|
|
|
|
|
|
|
|
# 示例用法 |
|
|
|
|
|
# M, K, N = 1024, 512, 256 |
|
|
|
|
|
# A, B = generate_matrix_multiplication_data(M, K, N) |
|
|
|
|
|
# print(f"Matrix A shape: {A.shape}") |
|
|
|
|
|
# print(f"Matrix B shape: {B.shape}") |
|
|
|
|
|
|
|
|
|
|
|
3.输入数据生成函数 |
|
|
|
|
|
编写一个函数,接收输入的矩阵A和B,使用CPU计算出它们的乘积C |
|
|
|
|
|
import numpy as np |
|
|
|
|
|
|
|
|
|
|
|
def cpu_matrix_multiplication(matrix_a, matrix_b): |
|
|
|
|
|
""" |
|
|
|
|
|
使用CPU计算矩阵乘法。 |
|
|
|
|
|
Args: |
|
|
|
|
|
matrix_a: 矩阵A (M x K) |
|
|
|
|
|
matrix_b: 矩阵B (K x N) |
|
|
|
|
|
Returns: |
|
|
|
|
|
numpy.ndarray: 矩阵C (M x N) |
|
|
|
|
|
""" |
|
|
|
|
|
return np.dot(matrix_a, matrix_b) |
|
|
|
|
|
|
|
|
|
|
|
# 示例用法 |
|
|
|
|
|
# A, B = generate_matrix_multiplication_data(1024, 512, 256) |
|
|
|
|
|
# C_ref = cpu_matrix_multiplication(A, B) |
|
|
|
|
|
# print(f"Reference C shape: {C_ref.shape}") |
|
|
|
|
|
|
|
|
|
|
|
4. 输入数据生成函数 |
|
|
|
|
|
● 主要指标: GPU执行时间 (CUDA Kernel Execution Time)。 |
|
|
|
|
|
● 次要指标: 内存带宽利用率、TFLOPS (如果适用)。 |
|
|
|
|
|
● 评判标准: |
|
|
|
|
|
● 正确性: CUDA解决方案的输出与标准输出的误差应在可接受的浮点误差范围内(例如,np.allclose 容忍度)。 |
|
|
|
|
|
● 性能: 相同输入规模下,CUDA解决方案的执行时间越短越好。我们将提供基准测试环境和计时工具。 |
|
|
|
|
|
● 计时示例 (伪代码/说明):在CUDA代码中,使用 cudaEvent_t 进行精确计时: |
|
|
|
|
|
cudaEvent_t start, stop; |
|
|
|
|
|
cudaEventCreate(&start); |
|
|
|
|
|
cudaEventCreate(&stop); |
|
|
|
|
|
|
|
|
|
|
|
cudaEventRecord(start, 0); |
|
|
|
|
|
// Call your CUDA kernel here |
|
|
|
|
|
my_cuda_kernel<<<blocks, threads>>>(d_A, d_B, d_C, M, K, N); |
|
|
|
|
|
cudaEventRecord(stop, 0); |
|
|
|
|
|
cudaEventSynchronize(stop); |
|
|
|
|
|
|
|
|
|
|
|
float milliseconds = 0; |
|
|
|
|
|
cudaEventElapsedTime(&milliseconds, start, stop); |
|
|
|
|
|
|
|
|
|
|
|
*若仍有疑问,请详见《评测数据集生成挑战赛样本和要求说明》。 |
|
|
|
|
|
- **接受数量:**提交经过审核后并被选入数据集的样本总数 |
|
|
|
|
|
- **评分方式:** |
|
|
|
|
|
- 标准 GT 输出生成函数(Numpy-CPU / 原始框架实现):+2 分 |
|
|
|
|
|
- CUDA 性能评估指标: |
|
|
|
|
|
- 执行时间(GPU跑完整个任务的耗时):+5 分 |
|
|
|
|
|
- 吞吐量(GPU单位时间内处理数据的量):+4 分 |
|
|
|
|
|
- 内存带宽(GPU读写的速度):+3 分 |
|
|
|
|
|
- (加分项)提供提示语(prompt)让大模型(LLM)生成对应 CUDA 代码,并且这份生成的代码也能提供上述的性能指标,则该提交样本也能得到对应分数。 |
|
|
|
|
|
|
|
|
|
|
|
#### 🏆 排名机制 |
|
|
|
|
|
|
|
|
|
|
|
1. 按“被选入样本的总数”从高到低排序 |
|
|
|
|
|
|
|
|
# 评测数据集生成挑战赛(GPU Benchmark Dataset Challenge) |
|
|
|
|
|
|
|
|
|
|
|
欢迎参加 **评测数据集生成挑战赛** 📊! |
|
|
|
|
|
本比赛旨在构建一个标准化、可用于 GPU 性能测试的评测数据集,帮助开发者更高效地比较不同硬件和框架的性能表现。 |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## 🧠 比赛背景简介 |
|
|
|
|
|
|
|
|
|
|
|
在 AI 模型开发和部署中,**GPU 性能评测**是一个非常重要的环节。 |
|
|
|
|
|
不同 GPU、不同深度学习框架(如 PyTorch、TensorFlow、PaddlePaddle 等)在运行相同任务时,速度、吞吐量、内存占用等表现差异很大。 |
|
|
|
|
|
本次挑战赛希望通过社区的力量,**构建一个标准化、带权重的评测数据集**,让 GPU 性能比较更加科学、公正。 |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## 🎯 比赛目标 |
|
|
|
|
|
|
|
|
|
|
|
- 从 **PyTorch、PaddlePaddle、TensorFlow、Jax、MMCV、Transformers** 等框架中收集并生成评测样本。 |
|
|
|
|
|
- 为每个样本提供**标准输出**和**性能指标**,确保结果可复现。 |
|
|
|
|
|
- 最终形成 **GPU CodeForces** 数据集和评价方法。 |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## 📥 如何参与提交? |
|
|
|
|
|
|
|
|
|
|
|
### ✅ 参赛资格 |
|
|
|
|
|
- 你提交的样本中,**至少有 1 个样本被评审通过并正式整合到“GPU CodeForces” 数据集**,即可算作有效参赛。 |
|
|
|
|
|
|
|
|
|
|
|
### 📦 提交内容 |
|
|
|
|
|
- **一个 JSON 格式的数据集文件**(详细格式请参考《评测数据集生成挑战赛样本和要求说明》)。 |
|
|
|
|
|
- 每个数据集需包含: |
|
|
|
|
|
1. **测试样本**(代码或数据) |
|
|
|
|
|
2. **标准 GT(Ground Truth)输出生成函数**(基于 CPU/Numpy 或原始框架) |
|
|
|
|
|
3. **CUDA 性能评估指标**(执行时间、吞吐量、内存带宽) |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## 📈 评分规则 |
|
|
|
|
|
|
|
|
|
|
|
### 📊 基础得分 |
|
|
|
|
|
| 内容 | 分值 | |
|
|
|
|
|
|------|------| |
|
|
|
|
|
| 提供标准 GT 输出生成函数(Numpy-CPU / 原始框架实现) | +2 分 | |
|
|
|
|
|
| CUDA 执行时间评估 | +5 分 | |
|
|
|
|
|
| CUDA 吞吐量评估 | +4 分 | |
|
|
|
|
|
| CUDA 内存带宽评估 | +3 分 | |
|
|
|
|
|
|
|
|
|
|
|
### ✨ 加分项 |
|
|
|
|
|
| 内容 | 分值 | |
|
|
|
|
|
|------|------| |
|
|
|
|
|
| 提供 Prompt 让 LLM 生成对应的 CUDA 代码,并同样进行性能评价 | 额外加分 | |
|
|
|
|
|
|
|
|
|
|
|
> **接受数量** = 提交并被评审通过的样本总数 |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## 🏅 排名机制 |
|
|
|
|
|
|
|
|
|
|
|
1. **优先按接受数量从高到低排序** |
|
|
2. 若数量相同: |
|
|
2. 若数量相同: |
|
|
- 比较所有样本的总分数之和,总分数高者优先 |
|
|
|
|
|
- 若仍相同,比加分项分数高者优先 |
|
|
|
|
|
|
|
|
- 比较总评分高者优先 |
|
|
|
|
|
- 若仍相同,比加分项得分高者优先 |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## 📚 术语解释(适合小白) |
|
|
|
|
|
|
|
|
|
|
|
- **评测数据集**:用来测试 GPU 性能的一组标准化样本,包括代码、输入数据和预期结果。 |
|
|
|
|
|
- **GT(Ground Truth)**:标准参考答案或结果,用来验证程序运行是否正确。 |
|
|
|
|
|
- **吞吐量(Throughput)**:每秒钟能处理的数据量,越高表示 GPU 处理能力越强。 |
|
|
|
|
|
- **内存带宽(Memory Bandwidth)**:单位时间内 GPU 内存与计算核心之间的数据传输速度。 |
|
|
|
|
|
- **Prompt**:引导大语言模型(LLM)生成代码或内容的提示词。 |
|
|
|
|
|
- **LLM**:Large Language Model,大语言模型,如 ChatGPT、LLaMA 等。 |
|
|
|
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
|
|
|
## 📬 联系与帮助 |
|
|
|
|
|
|
|
|
--- |
|
|
|
|
|
|
|
|
如需更多信息或格式说明,请查看官方文档或在本仓库提交 Issue 进行讨论。 |
|
|
|
|
|
祝你挑战成功,贡献出高质量的 GPU 评测数据集!🚀 |