26 lines
1.3 KiB
Markdown
26 lines
1.3 KiB
Markdown
# 分子动力学模型
|
||
|
||
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加速。当然,
|
||
在大数情况下,我们需要在付出和收获间找到一个平衡点。
|
||
|
||
|