Skip to content

Commit 5111ee3

Browse files
authored
update exp 3
1 parent 8c431c3 commit 5111ee3

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

docs/exp/3.spmm.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
负责助教:张齐颢 [email protected]
44

5-
在本实验中,你将通过实现 GPU 加速的稀疏矩阵-矩阵乘法(SpMM)进一步熟悉 OpenMP, CUDA 编程以及 CPU, GPU 体系结构。
5+
在本实验中,你将通过实现 GPU 加速的稀疏矩阵-矩阵乘法(SpMM)进一步熟悉 CUDA 编程以及 GPU 体系结构。
66

77
## 实验任务
88

@@ -83,7 +83,7 @@ make -j4
8383
# 运行单个数据点
8484
srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset <datasetname> --len 32 --datadir ~/PA3/data/ # 所有的数据集在 ~/PA3/data/ 中
8585
# 运行全部 GPU 数据点
86-
srun -N 1 --gres=gpu:1 ~/PA3/script/run_all.sh # 在 PA3/scripts 目录下
86+
srun -N 1 --gres=gpu:1 ~/PA3/script/run_all.sh # 在 PA3/script 目录下
8787
# 改变环境变量,仅仅运行单个测试,例如验证正确性(Validation)
8888
GTEST_FILTER="SpMMTest.validation" # 运行全部 GPU 数据点
8989
srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset <datasetname> --len 32 --datadir ~/PA3/data/
@@ -113,7 +113,7 @@ srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset toy_graph --len 32 --datadir
113113

114114
### 性能
115115

116-
性能得分共占 $30\%$, 针对 GPU 测试 13 个数据集 (`scripts/run_all.sh`中指定), 两种 $K$ 的长度;
116+
性能得分共占 $30\%$, 针对 GPU 测试 13 个数据集 (`script/run_all.sh`中指定), 两种 $K$ 的长度;
117117

118118
* 对于每组测试用例,只有当你获得了正确性基础分后,才能得到性能分。每组测试用例的性能分数相同。
119119
* 每组测试用例有一个性能线,超过性能线的同学将得到满分。
@@ -122,7 +122,7 @@ srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset toy_graph --len 32 --datadir
122122

123123
#### 性能线
124124

125-
为避免针对对于每个数据集进行微调导致不必要的工作量, 发布两种性能线:整体性能线和针对每个数据集的性能线, 达到整体 **或者** 针对单个数据集的性能线, 即可获得全部性能分.
125+
为避免对于每个数据集进行微调导致不必要的工作量,发布两种性能线:整体性能线和针对每个数据集的性能线达到整体 **或者** 针对单个数据集的性能线,即可获得性能分。
126126

127127
* 如果你满足了整体性能线, 则得到当前setting下对应的所有数据点的满分(即使有数据集没达线)
128128
* 如果你满足了某个数据集的性能线, 则得到这个数据集的所有性能分
@@ -188,9 +188,9 @@ srun -N 1 --gres=gpu:1 ./test/unit_tests --dataset toy_graph --len 32 --datadir
188188

189189
```bash
190190
# 得到程序运行的总结,包括整个程序运行过程中,各个 kernel 以及 CUDA API 的执行时间和次数
191-
srun --gpus 1 nvprof ./test/unit_tests xxxxxxxxxx
191+
srun -N 1 --gres=gpu:1 nvprof ./test/unit_tests xxxxxxxxxx
192192
# profile 单个 kernel 的执行情况,通过 --kernels 指定要 profile 的 kernel 的名称;通过 --metrics 指定要 profile 的是什么 metric,如 dram_read_bytes, achieved_occupancy 等,也可以指定为 all 来得到所有的 metric
193-
srun --gpus 1 nvprof --kernels "KERNEL1|KERNEL2" --metrics "METRIC1|METRIC2" ./test/unit_tests xxxxxxxxxx
193+
srun -N 1 --gres=gpu:1 nvprof --kernels "KERNEL1|KERNEL2" --metrics "METRIC1|METRIC2" ./test/unit_tests xxxxxxxxxx
194194
```
195195

196196
关于可以 profile 得到的性能指标以及 `nvprof` 更高级的使用方法可以参考 <https://docs.nvidia.com/cuda/profiler-users-guide/index.html>
@@ -205,14 +205,14 @@ srun --gpus 1 nvprof --kernels "KERNEL1|KERNEL2" --metrics "METRIC1|METRIC2" ./t
205205
## 注意事项
206206

207207
- 禁止任何欺骗评测程序的手段,包括但不限于直接输出时间、干扰校验程序运行、提前保存结果以在测试时直接输出等。一经发现,将取消本次实验得分。
208-
- 你修改的文件应该仅限于 `spmm_opt.h`, `spmm_opt.cu`, `spmm_cpu_opt.h`, `spmm_cpu_opt.cpp`。即使修改了其他文件(如用于调试等目的),也要确保在 **不进行这些修改** 的情况下,程序能够正确编译运行。助教将替换所有其他文件为下发的版本后进行评测,以确保评分的正确性和公平性。
208+
- 你修改的文件应该仅限于 `spmm_opt.h`, `spmm_opt.cu`。即使修改了其他文件(如用于调试等目的),也要确保在 **不进行这些修改** 的情况下,程序能够正确编译运行。助教将替换所有其他文件为下发的版本后进行评测,以确保评分的正确性和公平性。
209209
- 集群的登陆结点与计算结点配备了不同的 GPU,**最终得分以计算结点为准(NVIDIA Tesla P100),程序在登陆结点的性能或正确性不作为评分依据。**
210210

211211

212212
**严格查重,如果有任何参考借鉴,请在报告中写出来。**
213213

214-
## 意见反馈
214+
<!-- ## 意见反馈
215215
216216
关于本作业的问题可以在共享文档中反馈,助教会 check ,热心的同学也可以帮忙回答,共创良好讨论氛围。
217217
218-
<!-- 【腾讯文档】高性能作业 PA3 反馈:<https://docs.qq.com/doc/DQURXTEF3dldBV0pC> -->
218+
【腾讯文档】高性能作业 PA3 反馈:<https://docs.qq.com/doc/DQURXTEF3dldBV0pC> -->

0 commit comments

Comments
 (0)