7. 加速性能
7.1.基准测试
7.2.性能测试
在尝试让模拟运行得更快之前,您应该了解它当前的执行情况以及瓶颈所在。
做到这一点的最佳方法是在几个不同的处理器计数(如果可能的话,包括单个处理器)上运行您的系统(实际原子数)适当数量的时间步长(例如 100 个步长)。对系统的平衡版本执行此操作,以便 100 步计时代表更长的运行时间。通常不需要运行 1000 秒的时间步来获得准确的计时;您可以简单地从短期运行中推断。
对于这组运行,请查看每次 LAMMPS 运行结束时打印到屏幕和日志文件的计时数据。屏幕和日志文件输出页面提供了概述。
在一个(或几个处理器)上运行应该可以很好地估计串行性能以及时间步长的哪些部分占用的时间最多。在几个不同的处理器数量上运行相同的问题应该可以估计并行可扩展性。 例如,如果模拟在 16 个处理器上运行速度提高 16 倍,则其并行效率为 100%;如果它在 16 个处理器上运行速度提高 8 倍,则效率提高 50%。
时序信息中要查看的最重要的数据是时序细分和相对百分比。例如,如果远程求解器仅消耗 10% 的运行时间,尝试不同的选项来加速远程求解器将不会产生什么影响。如果成对时间占主导地位,您可能需要查看成对样式的 GPU 或 OMP 版本,如下所述。比较随着处理器数量的增加百分比如何变化,可以让您了解时间步内不同操作的扩展情况。请注意,如果您使用 Kspace 求解器运行,则会有关于 Kspace 时间细分的附加输出。对于 PPPM,这包括花费在 FFT 上的部分,这可能是通信密集型的。
时序信息中的另一个重要细节是原子计数和邻居计数的直方图。如果处理器之间的差异很大,则存在负载不平衡问题。这通常会导致相对定时数据不准确,因为当发生通信时处理器必须等待其他处理器才能赶上。因此,由于负载不平衡,报告的“通信”或“其他”时间可能比实际时间要长。如果这是一个问题,您可以使用timersync命令来获取同步计时。