feat(capter13): working on molecular dynamics model
This commit is contained in:
parent
8c05033e60
commit
dc98a25387
|
@ -16,6 +16,7 @@ CUDA gpu 编程学习,基于 《CUDA 编程——基础与实践》(樊哲
|
||||||
10. [线程束基本函数与协作组](./capter10/ReadMe.md)
|
10. [线程束基本函数与协作组](./capter10/ReadMe.md)
|
||||||
11. [CUDA 流](./capter11/ReadMe.md)
|
11. [CUDA 流](./capter11/ReadMe.md)
|
||||||
12. [使用同一内存编程]()
|
12. [使用同一内存编程]()
|
||||||
|
13. [分子动力学模型](./capter13/ReadMe.md)
|
||||||
14. [CUDA 标准库](./capter14/ReadMe.md)
|
14. [CUDA 标准库](./capter14/ReadMe.md)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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加速。当然,
|
||||||
|
在大数情况下,我们需要在付出和收获间找到一个平衡点。
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue