CudaSteps/capter13/ReadMe.md

1.3 KiB
Raw Blame History

分子动力学模型

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