Optimize 17 GPU operators for MetaX C500 competition
Performance results:
1 SpMM: 26.85x (float4 vectorization + row parallelism)
2 Scan: 2.68x (warp shuffle + thread coarsening)
3 FFT: 1.42x (view_as_real zero-copy)
4 Flash Attention: 1.31x (baddbmm fused scaling)
5 Self-Attention: 1.27x (baddbmm fused scaling)
6 MatMul+GELU: 1.11x (cuBLAS + fused bias+GELU kernel)
7 Scatter Add: 1.01x (expand_as zero-copy)
8 RMSNorm: 2.77x (fused CUDA kernel + float4)
9 RoPE: 4.76x (fused rotation kernel)
10 GroupNorm: 1.00x (PyTorch native)
11 TopK: 0.96x (PyTorch native)
12 CrossEntropy: 3.86x (fused log-softmax + NLL kernel)
13 SiLU: 1.00x (PyTorch native)
14 Softmax: 1.00x (PyTorch native)
15 LayerNorm: 1.35x (fused kernel + float4 + Welford)
16 BiasAdd: 2.03x (float4 vectorized kernel)
17 Dropout: 3.02x (PyTorch native F.dropout)
8/17 operators achieved 2x+ speedup All operators pass precision validation
在 AI 模型开发和部署中,GPU 性能评测是一个非常重要的环节。不同 GPU、不同深度学习框架(如 PyTorch、TensorFlow、PaddlePaddle 等)在运行相同任务时,速度、吞吐量、内存占用等表现差异很大。本次挑战赛希望通过社区的力量,构建一个标准化、带权重的评测数据集,让 GPU 性能比较更加科学、公正。
子赛题一、评测数据集生成挑战赛
欢迎参加 评测数据集生成挑战赛 📊! 本比赛旨在构建一个标准化、可用于 GPU 性能测试的评测数据集,帮助开发者更高效地比较不同硬件和框架的性能表现。
💻 比赛背景简介
在 AI 模型开发和部署中,GPU 性能评测是一个非常重要的环节。 不同 GPU、不同深度学习框架(如 PyTorch、TensorFlow、PaddlePaddle 等)在运行相同任务时,速度、吞吐量、内存占用等表现差异很大。 本次挑战赛希望通过社区的力量,构建一个标准化、带权重的评测数据集,让 GPU 性能比较更加科学、公正。
🎯 比赛目标
初次了解本类比赛的小伙伴可以查看以下两份文档,希望帮助你快速入门和上手: 赛题入门、代码解读。
📥 参赛流程
一句话概括:进入GPUCodeForces赛事首页,完成一份成功合并到仓库内的提交即为参赛成功!时间自由,方法自由,只要有灵感就可以动手开code~
🌰举个栗子
做好了准备工作,就可以开始尽情发挥,去寻找算子亦或是优化算子。在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赛题解读
为了测试代码最终的跑通结果,需要使用规定的GPU。在模力方舟平台上准备了大家此次需要的算力资源,使用免费的算力券购买实例,接着便可以在云端实例上进行代码修改和测试。
相关算力券的领取方式请见算力平台使用说明、算力券兑换发放和兑换。
代码测试运行没有问题后,便可以准备提交了(记得将所有必要文件保存到提交文件夹)。提交流程如下,全程使用git:
对git与远程仓库操作的疑问可以点击how-to-contribute.md查看详情。
顺利提交后的代码还只在你自己fork的仓库下,还需要和主仓库合并才能真正让管理员看到你的代码。
fork仓库(你自己的仓库)与主仓库之间关系如下:
进入自己的仓库,点击上方选项栏:
提交后便能看到自己的PR记录了,在对应记录的评论区会有测试结果的告知,请留意查看~
🌳一份完整的提交流程如上,期待各位自由发挥,赛出风采与水平!
⏺如仍有疑问,请点击提交流程演示视频
⭐审核流程
✅ 参赛资格
⚠️注意事项
-–相近优化:即指同一份参赛用例在优化后加速比没有提升或更低的用例提交
🏅 竞赛排名机制
📈 评分规则
📊 基础得分
✨ 加分项
📚 术语解释
📬 联系与帮助
如需更多信息或格式说明,请查看官方文档或在本仓库提交想法进行讨论,或直接在交流群内与主办团队进行沟通。
祝各位挑战成功,贡献出高质量的 GPU 评测数据集!🚀
FAQ
第一季FAQ参考