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)
|
||||
11. [CUDA 流](./capter11/ReadMe.md)
|
||||
12. [使用同一内存编程]()
|
||||
13. [分子动力学模型](./capter13/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