feat(capter13): working on molecular dynamics model

This commit is contained in:
unknown 2021-12-19 21:22:40 +08:00
parent 8c05033e60
commit dc98a25387
2 changed files with 26 additions and 0 deletions

View File

@ -16,6 +16,7 @@ CUDA gpu 编程学习,基于 《CUDA 编程——基础与实践》(樊哲
10. [线程束基本函数与协作组](./capter10/ReadMe.md)
11. [CUDA 流](./capter11/ReadMe.md)
12. [使用同一内存编程]()
13. [分子动力学模型](./capter13/ReadMe.md)
14. [CUDA 标准库](./capter14/ReadMe.md)

25
capter13/ReadMe.md Normal file
View File

@ -0,0 +1,25 @@
# 分子动力学模型
1. 将静态函数放在头文件中,则该函数就有可能被编译为内联函数,从而提高效率。
适用于于需要被多个编译单元反复调用的函数。
开发cuda程序时也应该尽量优化对应的c++程序。
2. 半步长推进。
粒子在t+dt时刻的坐标仅依赖t时刻的坐标、速度和力但是t+dt时刻的速度依赖
t时刻的坐标、速度和t+dt时刻的力。
所以首先以t时刻的状态计算t+dt/2时刻的速度然后计算t+dt时刻的坐标同时
更新t时刻的力到t+dt时刻最后以t+dt/2时刻的速度和t+dt时刻的力计算t+dt
时刻的速度。
3. 常量内存比全局内存高速。
如果数据量在编译期就确定且不大明显小于4KB在核函数中仅被读取而且
一个线程束中的所有线程在某个时刻访问同一个地址,
则该数据适合用传参的方式使用常量内存。
4. 逐步分析程序的性能瓶颈,逐步优化。
将一个c++程序用cuda加速时一般首先确定其中最耗时的部分并将其用cuda加速从而
快速提高程序性能。
要得到最好的加速效果需要尽可能多的将程序中可并行的计算用cuda加速。当然
在大数情况下,我们需要在付出和收获间找到一个平衡点。