作业hw2
主要围绕 MACA 编程环境的基础使用展开,包括最简单的设备端程序运行、GPU 设备信息查询以及指定设备执行程序。通过 hello.maca,熟悉了 MACA 程序的基本结构和 kernel 启动方式;通过 device_query.maca,学习了如何获取 GPU 设备数量、设备名称、线程与 block 等硬件属性;通过 device_set.maca,掌握了在多设备环境下选择指定 GPU 执行任务的方法。
作业hw5
主要学习 MACA 中默认流、多流以及 event 计时机制的使用。通过默认流程序,可以观察任务在同一 stream 中按顺序执行的行为;通过多流程序,可以理解多个 stream 并发执行 kernel 和数据传输的方式;通过 event 计时版本,可以测量不同执行模式下的耗时差异。实验重点在于理解 stream 与 event 的同步关系,以及多流并行对程序性能的影响.
作业hw6
printf.maca 展示了如何在设备端 kernel 中使用输出语句辅助调试,并通过 CPU 端校验确认 GPU 计算结果正确;reduce.maca 则实现了数组求和的并行归约过程,对比了较差和较优的 reduction 写法。通过本次实验,可以理解线程块内共享内存、线程同步以及边界处理在 GPU 并行计算中的重要性。
作业hw7
主要围绕一个计算任务进行逐步性能优化,从 CPU baseline 开始,逐步迁移到 GPU 并使用不同优化策略提升性能。实验文件从 t5_0.cpp 到 t5_5.maca 展示了从普通 CPU 实现、基础 GPU kernel、多 block 并行、warp-level reduction、共享内存优化,到最终调用 mcblas 加速库的优化过程。通过本次作业,可以比较不同实现方式的执行时间,理解 GPU 并行化、内存访问模式、归约优化和库函数调用对整体性能的影响。
作业hw8
主要学习多 GPU 编程和 MCCL 通信库的基本使用。vadd_mgpus.maca 实现了将向量加法任务划分到多张 GPU 上并行执行,涉及设备选择、数据切分、异步拷贝、stream 同步和结果合并等内容;mccl_test.maca 则展示了如何使用 MCCL 在多 GPU 之间进行通信和归约操作。通过本次实验,可以理解多 GPU 程序中任务划分、设备同步和跨设备通信的基本流程。