From 5111ee342885fab021b8550e4bc488d1af016687 Mon Sep 17 00:00:00 2001 From: zqh-wz <848416862@qq.com> Date: Wed, 15 May 2024 11:31:36 +0800 Subject: [PATCH] update exp 3 --- docs/exp/3.spmm.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/exp/3.spmm.md b/docs/exp/3.spmm.md index 24f87f9..675788f 100644 --- a/docs/exp/3.spmm.md +++ b/docs/exp/3.spmm.md @@ -2,7 +2,7 @@ 负责助教:张齐颢 zqh23@mails.tsinghua.edu.cn -在本实验中,你将通过实现 GPU 加速的稀疏矩阵-矩阵乘法(SpMM)进一步熟悉 OpenMP, CUDA 编程以及 CPU, GPU 体系结构。 +在本实验中,你将通过实现 GPU 加速的稀疏矩阵-矩阵乘法(SpMM)进一步熟悉 CUDA 编程以及 GPU 体系结构。 ## 实验任务 @@ -83,7 +83,7 @@ make -j4 # 运行单个数据点 srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset --len 32 --datadir ~/PA3/data/ # 所有的数据集在 ~/PA3/data/ 中 # 运行全部 GPU 数据点 -srun -N 1 --gres=gpu:1 ~/PA3/script/run_all.sh # 在 PA3/scripts 目录下 +srun -N 1 --gres=gpu:1 ~/PA3/script/run_all.sh # 在 PA3/script 目录下 # 改变环境变量,仅仅运行单个测试,例如验证正确性(Validation) GTEST_FILTER="SpMMTest.validation" # 运行全部 GPU 数据点 srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset --len 32 --datadir ~/PA3/data/ @@ -113,7 +113,7 @@ srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset toy_graph --len 32 --datadir ### 性能 -性能得分共占 $30\%$, 针对 GPU 测试 13 个数据集 (`scripts/run_all.sh`中指定), 两种 $K$ 的长度; +性能得分共占 $30\%$, 针对 GPU 测试 13 个数据集 (`script/run_all.sh`中指定), 两种 $K$ 的长度; * 对于每组测试用例,只有当你获得了正确性基础分后,才能得到性能分。每组测试用例的性能分数相同。 * 每组测试用例有一个性能线,超过性能线的同学将得到满分。 @@ -122,7 +122,7 @@ srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset toy_graph --len 32 --datadir #### 性能线 -为避免针对对于每个数据集进行微调导致不必要的工作量, 发布两种性能线:整体性能线和针对每个数据集的性能线, 达到整体 **或者** 针对单个数据集的性能线, 即可获得全部性能分. +为避免对于每个数据集进行微调导致不必要的工作量,发布两种性能线:整体性能线和针对每个数据集的性能线,达到整体 **或者** 针对单个数据集的性能线,即可获得性能分。 * 如果你满足了整体性能线, 则得到当前setting下对应的所有数据点的满分(即使有数据集没达线) * 如果你满足了某个数据集的性能线, 则得到这个数据集的所有性能分 @@ -188,9 +188,9 @@ srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset toy_graph --len 32 --datadir ```bash # 得到程序运行的总结,包括整个程序运行过程中,各个 kernel 以及 CUDA API 的执行时间和次数 -srun --gpus 1 nvprof ./test/unit_tests xxxxxxxxxx +srun -N 1 --gres=gpu:1 nvprof ./test/unit_tests xxxxxxxxxx # profile 单个 kernel 的执行情况,通过 --kernels 指定要 profile 的 kernel 的名称;通过 --metrics 指定要 profile 的是什么 metric,如 dram_read_bytes, achieved_occupancy 等,也可以指定为 all 来得到所有的 metric -srun --gpus 1 nvprof --kernels "KERNEL1|KERNEL2" --metrics "METRIC1|METRIC2" ./test/unit_tests xxxxxxxxxx +srun -N 1 --gres=gpu:1 nvprof --kernels "KERNEL1|KERNEL2" --metrics "METRIC1|METRIC2" ./test/unit_tests xxxxxxxxxx ``` 关于可以 profile 得到的性能指标以及 `nvprof` 更高级的使用方法可以参考 。 @@ -205,14 +205,14 @@ srun --gpus 1 nvprof --kernels "KERNEL1|KERNEL2" --metrics "METRIC1|METRIC2" ./t ## 注意事项 - 禁止任何欺骗评测程序的手段,包括但不限于直接输出时间、干扰校验程序运行、提前保存结果以在测试时直接输出等。一经发现,将取消本次实验得分。 -- 你修改的文件应该仅限于 `spmm_opt.h`, `spmm_opt.cu`, `spmm_cpu_opt.h`, `spmm_cpu_opt.cpp`。即使修改了其他文件(如用于调试等目的),也要确保在 **不进行这些修改** 的情况下,程序能够正确编译运行。助教将替换所有其他文件为下发的版本后进行评测,以确保评分的正确性和公平性。 +- 你修改的文件应该仅限于 `spmm_opt.h`, `spmm_opt.cu`。即使修改了其他文件(如用于调试等目的),也要确保在 **不进行这些修改** 的情况下,程序能够正确编译运行。助教将替换所有其他文件为下发的版本后进行评测,以确保评分的正确性和公平性。 - 集群的登陆结点与计算结点配备了不同的 GPU,**最终得分以计算结点为准(NVIDIA Tesla P100),程序在登陆结点的性能或正确性不作为评分依据。** **严格查重,如果有任何参考借鉴,请在报告中写出来。** -## 意见反馈 + +【腾讯文档】高性能作业 PA3 反馈: -->