跳转至

小作业六:CUDA 优化 (global memory, shared memory)

负责助教:邢竞择 xingjz20@mails.tsinghua.edu.cn

背景

在课堂中,我们学习了 GPU 中的访存优化策略,本次作业中,我们将通过更改示例程序的访存模式,观察不同情况下 GPU 访存的性能。 在本次作业中你需要:

  1. 观察不同的参数设置对 global memory 性能的影响。
  2. 观察不同的参数设置对 shared memory 性能的影响。

任务

实验文件在集群上的位置为 /home/course/hpc/assignments/2024/exp6

首先将实验文件 拷贝到自己的目录 ,并进入 exp6 目录:

cp -R /home/course/hpc/assignments/2024/exp6 ~/
cd ~/exp6/

加载环境并编译 CUDA 代码:

spack load cuda
make
srun --exclusive ./test_gmem
srun --exclusive ./test_smem

本实验中,需要更改的程序参数均已在代码中标记,你仅需要更改程序 test_gmem 中的 STRIDE 和程序 test_smem 中的 BITWIDTH, STRIDE 两个参数。

请测试:

  1. 程序 test_gmem.cuSTRIDE 分别设置为 1, 2, 4, 8 时,程序的性能。
  2. 程序 test_smem.cuBITWIDTH 分别设置为 2, 4, 8,同时 STRIDE 分别设置为 1, 2, 4, 8, 16, 32 (共 18 组参数)的程序性能。

在报告中汇报你的测量结果,绘制图像,并回答以下问题:

  • 分析 test_gmem.cu 的性能变化来源:

    • 性能变化的主要来源是 GPU 的哪种机制引起的?
    • 这种机制如何影响该程序的性能?
    • 是否有其他的硬件功能参与了该程序的执行过程,它们会如何影响该程序的执行效率?
  • 分析 test_smem.cu 的性能变化来源:

    • 固定 BITWIDTH 时,程序的性能变化来源于哪种硬件机制?
    • BITWIDTH 设置为 2, 8 时性能变化的趋势相比于 BITWIDTH 设置为 4 时有什么不同之处,请解释。

实验提交

本实验仅需提交实验报告,请将报告的 PDF 文件 提交至网络学堂。


最后更新: 2024年4月6日
作者: Harry Chen (15.09%), Kezhao Huang (5.66%), 翟明书 (3.77%), mazx (73.58%), Jingze Xing (1.89%)