|
| 1 | +# Learning-CUDA |
| 2 | + |
| 3 | +本项目为 2025 年冬季 InfiniTensor 大模型与人工智能系统训练营 CUDA 方向专业阶段的作业与项目系统。 |
| 4 | + |
| 5 | +本页面为 2025 年冬季 InfiniTensor 大模型与人工智能系统训练营 CUDA 方向的项目仓库。 |
| 6 | + |
| 7 | +## 📁 项目结构 |
| 8 | + |
| 9 | +```text |
| 10 | +learning-CUDA/ |
| 11 | +├── 03_nf4_dequant |
| 12 | +│ └── README.md |
| 13 | +├── 04_hadamard_tc |
| 14 | +│ └── README.md |
| 15 | +├── 05_seq_align |
| 16 | +│ └── README.md |
| 17 | +├── 06_photon_sim |
| 18 | +│ └── README.md |
| 19 | +├── 07_trade_planning |
| 20 | +│ └── README.md |
| 21 | +├── 08_bilateral_filter |
| 22 | +│ └── README.md |
| 23 | +├── 09_particle_sim |
| 24 | +│ └── README.md |
| 25 | +├── LICENSE |
| 26 | +└── README.md |
| 27 | +``` |
| 28 | + |
| 29 | +## 🧠 项目阶段信息和简介 |
| 30 | + |
| 31 | +### 关于项目阶段 |
| 32 | +项目阶段相比较于课程阶段的作业会更加 **open-ended (开放式题目)**,不会像作业一样提供测例和标准答案。项目阶段的目标不仅仅是更全面的检验和提升学员对 CUDA 编程的掌握能力,同时还是更全面的检验包括问题分析、方案与系统设计、工具使用和文档能力在内的**综合能力**。能优秀完成项目阶段的学员能具备工业级的开发能力。因此项目阶段的评审会综合和全面的考察和评判。 |
| 33 | + |
| 34 | +### 项目选题是什么? |
| 35 | +项目阶段有多个选题,每个选题的方向和内容可能不尽相同,学员可以根据自己的兴趣进行选择。每位学员需**至少选择一个**选题且欢迎有兴趣和能力的同学同时完成多个选题。如果学员对选题有自己的想法,也欢迎与导师讨论。 |
| 36 | + |
| 37 | +### 项目阶段其他重要信息 |
| 38 | + |
| 39 | + - 项目阶段时间:2026.2.10 - 2026.3.16 |
| 40 | + |
| 41 | + - 项目提交方式:大部分选题与专业阶段作业相同,在官网提交 fork 仓库的链接与 commit 链接。具体提交方式各个选题可能有所不同,具体见项目选题要求。 |
| 42 | + |
| 43 | +### 注意事项 |
| 44 | +1. 最终提交需整理代码:命名方式统一(不限定具体某种风格,全程序统一即可)、代码格式化(无具体某种格式要求,但可以默认使用默认配置的 clang-format)、无测试代码并且关键函数和代码块进行适当的注释。但与其他项目交叉的情况需遵循其他项目的规范; |
| 45 | +2. 取决于具体选题,大体上是以总体性能为评判标准,因此代码的某些功能在适宜的情况下可以在 CPU 上完成,但必须仍有较为显著的部分在 CUDA 上完成。总体性能需超越 CPU 同级别实现; |
| 46 | +3. 如有需要,可以使用合适的 CUDA 官方库。 |
| 47 | +4. 如果选题的提交地址为 `Learning-CUDA` 仓库,则需要 fork `Learning-CUDA` 的 `project` 分支,并在其下对应的选题文件夹中放置自己的代码,即放置路径为 `project` 分支下 `/<选题>/<你的ID>/`。提交方式为 PR。E.g., ID 为 lzm 并且做了 path_finding 的选题,则提交的代码位于 project 分支下 `/path_finding/lzm/`. |
| 48 | + |
| 49 | +需注意,各个选题的基础难度各不相同,在晋级评定时会有影响。同时,是否完成额外目标或进阶优化也会直接影响评定。 |
| 50 | + |
| 51 | + |
| 52 | +## 🌳 环境配置 |
| 53 | + |
| 54 | +### > 英伟达(NVIDIA) |
| 55 | + |
| 56 | +- 如果你使用的是训练营所提供的服务器,遵照英伟达算力文档中的步骤配置好环境即可。 |
| 57 | + |
| 58 | +- 如果为本地或其他环境,请确保系统已安装以下工具: |
| 59 | + |
| 60 | + 1. **CUDA Toolkit**(版本11.0及以上): |
| 61 | + - 验证安装:运行 `nvcc --version`。 |
| 62 | + - 安装:从[NVIDIA CUDA Toolkit下载页](https://developer.nvidia.com/cuda-downloads)获取。 |
| 63 | + 2. **GNU Make**: |
| 64 | + - 验证安装:运行 `make --version`(大多数 Linux/macOS 已预装)。 |
| 65 | + 3. **C++ 版本**: |
| 66 | + - 本次作业在英伟达上默认需支持 C++17 |
| 67 | + |
| 68 | +### > 天数智芯(Iluvatar CoreX) |
| 69 | + |
| 70 | +- 如果你使用的是训练营所提供的服务器,遵照天数 BI-100 算力文档中的步骤配置好环境即可。 |
| 71 | + |
| 72 | +- 对于非训练营所提供的天数算力,请配置标准的天数 GPU 开放环境。本次作业在天数上默认需支持 C++17,且**本次作业的配置不保证能在所有其他天数环境上无修改直接运行**。 |
| 73 | + |
| 74 | +### > 沐曦集成电路(MetaX) |
| 75 | + |
| 76 | +- 如果你使用的是训练营所提供的服务器,遵照沐曦 (C500) 算力文档中的步骤配置好环境即可。 |
| 77 | + - 镜像可以选择 PyTorch 的最新镜像,即 PyTorch 2.8.0, Python 3.1.2,maca 3.3.0.4 |
| 78 | + |
| 79 | +- 对于非训练营所提供的沐曦算力,请配置标准的沐曦 GPU 开放环境。本次作业在沐曦上默认需支持 C++17,且**本次作业的配置不保证能在所有其他沐曦环境上无修改直接运行**。 |
| 80 | + |
| 81 | +### > 摩尔线程(Moore Threads) |
| 82 | + |
| 83 | +- 如果你使用的是训练营所提供的服务器,请先遵照摩尔 (S5000) 算力文档中的步骤配置环境。 |
| 84 | + |
| 85 | + 在此基础上,请确保在 `.bashrc` 中添加了以下环境变量: |
| 86 | + |
| 87 | + ```bash |
| 88 | + export MUSA_ROOT=/usr/local/musa |
| 89 | + export PATH="$MUSA_ROOT/bin:$PATH" |
| 90 | + export LD_LIBRARY_PATH="$MUSA_ROOT/lib:$LD_LIBRARY_PATH" |
| 91 | + export CPLUS_INCLUDE_PATH=/usr/include/c++/11:/usr/include/x86_64-linux-gnu/c++/11 |
| 92 | + ``` |
| 93 | + |
| 94 | +- 对于非训练营所提供的摩尔算力,请配置标准的摩尔 GPU 开放环境。本次作业在摩尔上默认需支持 C++11,且**本次作业的配置不保证能在所有其他摩尔环境上无修改直接运行**。 |
| 95 | + |
| 96 | + |
| 97 | +## 📬 有疑问? |
| 98 | + |
| 99 | +如有任何疑问或不确定的地方,欢迎随时询问导师或助教! |
| 100 | + |
| 101 | +Good luck and happy coding! 🚀 |
0 commit comments