Skip to content

InfiniTensor/Learning-CUDA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Learning-CUDA

本项目为 2025 年夏季 InfiniTensor 大模型与人工智能系统训练营 CUDA 方向专业阶段的作业系统。

📁 项目结构

learning-CUDA/
├── Makefile
├── README
├── src
│   └── kernels.cu
└── tester
    ├── tester.o
    └── utils.h

环境配置

如果你使用的是训练营提供的服务器,则该步骤可直接跳过。

请确保系统已安装以下工具:

  1. CUDA Toolkit(版本11.0及以上):
  2. GNU Make
    • 验证安装:运行make --version(大多数Linux/macOS已预装)。

🧠 作业

作业一共有两题。需实现 src/kernels.cu 中给定的 2 个 CUDA 函数

  1. kthLargest

实现 CUDA 的 kthLargest 函数。给定一个连续的输入数组和非负数 k,返回该数组中第 k 大的数。该函数需支持 int 和 float 两种类型的输入。具体边界处理和一些条件可见文件中的注释。

  1. flashAttention

实现 Flash Attention 算子。需支持 causal masking 和 GQA。具体行为与 torch.nn.functional.scaled_dot_product_attention 保持一致。接口未提供的参数所代表的功能无需支持和实现。该函数需支持 float。

注意事项

  1. 禁止抄袭与舞弊,包括抄袭其他学员的代码和开源实现。可以讨论和参考思路,但禁止直接看/抄代码。一经发现,成绩作废并失去进入项目阶段和后续实习与推荐等资格;
  2. 两个题目都禁止使用任何库函数来直接实现关键功能;
  3. 主要计算均需在 GPU 上实现;如有一些信息和程序准备性质的(例如元信息计算/转换、资源准备等)则可以在 CPU/Host 上进行;
  4. 代码风格不限,但需保持一致;
  5. 需进行适当的代码注释解释重要部分;

🛠️ 编译与运行

代码编译与运行可以使用提供的 Makefile 十分简便的实现。

构建与运行指令

使用Makefile简化构建流程,以下命令需在项目根目录(即 Makefile 所在的目录)执行:

默认:构建并运行测试(非 verbose 模式)

直接在命令行使用 make 指令编译代码并执行测试,输出简洁结果。

构建并运行测试(verbose 模式)

直接在命令行使用 make VERBOSE=true 指令编译代码并执行测试,输出包括执行时间在内的结果。

📬 有疑问?

可以在群里直接询问助教!

Good luck and happy coding! 🚀

About

2025夏季训练营CUDA方向项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published