本项目为 2025 年夏季 InfiniTensor 大模型与人工智能系统训练营 CUDA 方向专业阶段的作业系统。
learning-CUDA/
├── Makefile
├── README
├── src
│ └── kernels.cu
└── tester
├── tester.o
└── utils.h
如果你使用的是训练营提供的服务器,则该步骤可直接跳过。
请确保系统已安装以下工具:
- CUDA Toolkit(版本11.0及以上):
- 验证安装:运行
nvcc --version
。 - 安装:从NVIDIA CUDA Toolkit下载页获取。
- 验证安装:运行
- GNU Make:
- 验证安装:运行
make --version
(大多数Linux/macOS已预装)。
- 验证安装:运行
作业一共有两题。需实现 src/kernels.cu
中给定的 2 个 CUDA 函数 。
- kthLargest
实现 CUDA 的 kthLargest 函数。给定一个连续的输入数组和非负数 k,返回该数组中第 k 大的数。该函数需支持 int 和 float 两种类型的输入。具体边界处理和一些条件可见文件中的注释。
- flashAttention
实现 Flash Attention 算子。需支持 causal masking 和 GQA。具体行为与 torch.nn.functional.scaled_dot_product_attention 保持一致。接口未提供的参数所代表的功能无需支持和实现。该函数需支持 float。
- 禁止抄袭与舞弊,包括抄袭其他学员的代码和开源实现。可以讨论和参考思路,但禁止直接看/抄代码。一经发现,成绩作废并失去进入项目阶段和后续实习与推荐等资格;
- 两个题目都禁止使用任何库函数来直接实现关键功能;
- 主要计算均需在 GPU 上实现;如有一些信息和程序准备性质的(例如元信息计算/转换、资源准备等)则可以在 CPU/Host 上进行;
- 代码风格不限,但需保持一致;
- 需进行适当的代码注释解释重要部分;
代码编译与运行可以使用提供的 Makefile
十分简便的实现。
使用Makefile
简化构建流程,以下命令需在项目根目录(即 Makefile
所在的目录)执行:
直接在命令行使用 make
指令编译代码并执行测试,输出简洁结果。
直接在命令行使用 make VERBOSE=true
指令编译代码并执行测试,输出包括执行时间在内的结果。
可以在群里直接询问助教!
Good luck and happy coding! 🚀