CudaSteps/capter13/ReadMe.md

26 lines
1.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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