小作业六:CUDA 优化 (global memory, shared memory)¶
负责助教:邢竞择 xingjz20@mails.tsinghua.edu.cn
背景¶
在课堂中,我们学习了 GPU 中的访存优化策略,本次作业中,我们将通过更改示例程序的访存模式,观察不同情况下 GPU 访存的性能。 在本次作业中你需要:
- 观察不同的参数设置对 global memory 性能的影响。
- 观察不同的参数设置对 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
两个参数。
请测试:
- 程序
test_gmem.cu
中STRIDE
分别设置为 1, 2, 4, 8 时,程序的性能。 - 程序
test_smem.cu
中BITWIDTH
分别设置为 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日
作者: