Skip to content

Commit

Permalink
feat: note for sync in 2.apsp.md
Browse files Browse the repository at this point in the history
  • Loading branch information
oliverYoung2001 committed May 12, 2024
1 parent 0a6e827 commit 271c208
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions docs/exp/2.apsp.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ for (int k = p * b; k < (p + 1) * b; k++)
- 使用分块算法时,矩阵底部和右侧的块可能是不完整的,在程序中可能需要边界判断;
- 使用指针时,请注意数据在 GPU 上还是主存上:本实验的输入输出均在 GPU 上,调试时你可能需要将其手动拷贝到主存上;
- 记得在适当位置添加 `__syncthreads()`(潜在优化点:最短路算法的某一步中,就算访问旧的 shared memory 值,也可证明答案是正确的,此时可以不做同步;如实现此项优化,鼓励在报告中提供证明);
- 注意,使用`__syncthreads()`的时候需要保证线程块内的所有线程都可执行此条语句,否则可能会出现一些不可遇见的错误。具体可见[CUDA编程指南](https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#synchronization-functions)
- 注意检查 kernel 和 CUDA API(例如 `cudaMemcpy`)调用中的错误(kernel 参数不合法、访存越界等错误时常体现为答案错误而非运行错误,此时需要注意排查):
- 注意检查错误返回值(可使用 `cuda_utils.h` 中的 `CHK_CUDA_ERR` 宏);
- 可使用 `compute-sanitizer`(旧称 `cuda-memcheck`)调试工具自动检查错误,编译时添加`-lineinfo`可定位到具体行号;
Expand Down

0 comments on commit 271c208

Please sign in to comment.