阅读英语版本: English.
ECE408 是伊利诺伊大学厄巴纳-香槟分校提供的一个很好的课程,主要学习 CUDA。但是,对于没有在 UIUC 就读的学生来说,要跟进实验和项目可能比较困难,因为需要访问特定的计算资源。
这个项目旨在使用你自己的本地环境(GPU,系统等)更容易地学习 ECE408 的教材。它提供了该课程关键作业的实现,这样你就可以获得手工操练 CUDA 的经验。
ECE408 课程表: https://wiki.illinois.edu/wiki/display/ECE408/Class+Schedule
ECE408 实验和项目: https://wiki.illinois.edu/wiki/display/ECE408/Labs+and+Project
完成这个项目后,你将:
- 获得实际的 CUDA 编程经验
即使没有访问 UIUC 的特定基础设施,你也可以对 ECE408 的关键概念获得动手实践。如果课程内容有任何不清楚或遗漏的地方,请让我知道 - 我很高兴补充更多细节以涵盖完整的课程。
这是一个包含单独 ECE408 CUDA 实验和项目文件夹的仓库。
要运行它们,请执行以下步骤:
-
在本地克隆此仓库,可以使用 git clone 或从 GitHub 下载 zip 文件并提取。
-
每个实验和项目都有一个 CMake 文件用于编译。进入子文件夹,创建一个构建目录,并运行 cmake .. 命令生成 Makefile。
-
使用 make 命令编译和生成可执行文件。
以下是英文版的里程碑项目和实验的单独解释:
-
项目代码在 mini-dnn/GPU_conv_baseline.cu 中。这是一个基础的 CUDA 卷积层实现。
-
你需要修改这个文件,并利用学到的 CUDA 优化技术来加速卷积计算,比如共享内存,循环展开等。
-
你可以逐步优化,每次实现一个技术。测试并记录速度提升。
-
目标是尽可能最大程度地提高卷积层的执行速度,达到峰值性能。
-
在 GitHub 上提交你的优化代码,以便与他人的结果进行比较。
-
每个实验都有一个单独的文件夹,其中包含代码模板。
-
你需要编辑指定的文件,并根据实验要求完成代码。
-
这些实验涵盖了各种 CUDA 编程方面,比如内存、线程等。
-
运行 'run_datasets' 以验证正确的实现。
有 1 个设备支持 CUDA
设备 0 名称:NVIDIA GeForce RTX 4090
- 计算能力:8.9
- 最大全局内存大小:25756696576
- 最大常量内存大小:65536
- 每个线程块的最大共享内存大小:49152
- 最大线程块维度:1024 x 1024 x 64
- 最大网格维度:2147483647 x 65535 x 65535
- Warp 大小:32
结果显示我的系统有 1 个 GPU(NVIDIA GeForce RTX 4090)可用于 CUDA 计算,具有 24GB 内存和计算能力 8.9。
GPU 最多可以支持 1024 x 1024 x 64 个线程的线程块,以及非常大的网格维度进行并行处理。
这个输出证明我的 GPU 设置已正确配置为运行 CUDA 程序和神经网络训练。