【LAMMPS学习】七、加速性能(5)加速器包比较

本文讨论了如何通过使用不同的加速器包如GPU和KOKKOS来提升LAMMPS计算的性能。文章详细比较了这些包的优缺点,强调了在选择时需根据特定硬件和模拟需求进行测试调整。GPU包在大规模并行计算上有优势,而KOKKOS适合减少数据传输成本,但对硬件要求较高。
摘要由CSDN通过智能技术生成

7. 加速性能

7.1.基准测试

7.2.测试性能

7.3.通用技巧

7.4.加速器包

7.5.加速器包比较

接下来将比较和对比各种加速器选项,因为有多种方法可以执行 OpenMP 线程、在 GPU 上运行、优化 CPU 上的向量单元以及在英特尔至强融核(协)处理器上运行。

所有这些包都可以利用硬件功能加速 LAMMPS 计算,但它们以不同的方式实现,并且并不总是保证加速。

因此,对于特定硬件上的特定模拟,一个包可能比另一个包更快。我们在下面给出了一些指导原则,但确定哪个包对于您的输入脚本来说更快的最佳方法是在您的计算机上尝试多个包并尝试可用的性能调整设置。请参阅下面的基准测试部分,了解已完成此操作的示例。

最佳使用每个包的指南:
  • GPU 和 KOKKOS 包都允许您将多个 MPI 级别(= CPU 核心)分配给同一 GPU。对于 GPU 包,这可以通过更好地利用 GPU(通过重叠计算和数据传输)以及通过 MPI 并行化更有效地计算 LAMMPS 的非 GPU 加速部分来实现加速,因为所有系统数据都会得到维护和更新在主机上。对于 KOKKOS 来说,由于其不同的内存管理模型(试图将数据保留在 GPU 上),因此几乎没有任何好处。
  • GPU 包在每个时间步在 CPU 和 GPU 之间移动每个原子数据(坐标、力和(可选)邻居列表数据,如果不是在 GPU 上计算的话)。 KOKKOS/CUDA 包仅在需要 CPU 计算时在时间步上执行此操作(例如,调用非 GPU 化的修复或计算)。因此,如果您可以将输入脚本制定为仅使用 GPU 化的修复和计算,并避免过于频繁地执行 I/O(热输出、转储文件快照、重新启动文件),那么 KOKKOS/CUDA 包的数据传输成本可以非常低,导致它比 GPU 包运行得更快。
  • 当每个 GPU 的原子数量较小时,GPU 包通常比 KOKKOS/CUDA 包更快。就原子/GPU 而言,KOKKOS/CUDA 包变得更快的交叉点很大程度上取决于配对类型。例如,对于简单的 Lennard Jones 系统,交叉(单精度)通常约为每个 GPU 50K-100K 原子。执行双精度计算时,交叉点可能会小得多。
  • KOKKOS 和 GPU 包都计算 CPU 上的键合相互作用(键合、角度等)。如果 GPU 包运行时将多个 MPI 进程分配给一个 GPU,则计算绑定交互的成本会分摊到更多 CPU 上,因此 GPU 包在这些情况下可以运行得更快。
  • 当使用分配给同一 GPU 的多个 MPI 等级的 LAMMPS 时,其性能在某种程度上取决于 CPU 和 GPU 之间的可用带宽。根据可用的总线技术、主机 CPU 和主板的功能、总线的接线以及是否使用交换机来增加可用总线插槽的数量,或者 GPU 是否安装在外部外壳中,这可能会有很大差异。这可能会变得相当复杂。
  • 为了通过 GPU 实现显着加速,KOKKOS 和 GPU 包都需要具有快速设备内存和高效数据传输速率的强大 GPU。这需要有能力的中高级到高端(桌面)GPU。使用性能较低的 GPU(例如在笔记本电脑上)可能会导致速度减慢。
  • 对于 GPU 包,特别是与 MPI 并行运行时,如果从 GPU 加速中排除 PPPM kspace 样式并在 CPU 上运行(与 GPU 加速对样式同时运行)通常会更有效。这通常可以通过在 kspace_style pppm 命令之前放置一个 suffix off 命令并在 kspace_style pppm 命令之后放置一个 suffix on 命令来轻松实现。
  • KOKKOS/OpenMP 和 OPENMP 包具有不同的线程管理策略,这应该会导致 OPENMP 对于少量线程来说更加高效,并且随着每个 MPI 等级的线程数增加,开销也会增加。在这种情况下,KOKKOS/OpenMP 内核的开销较小,但线程较少时性能较低。
  • INTEL 软件包包含许多用于在 Intel 硬件(CPU 和加速卡)上实现额外性能的选项和设置,但要释放这种潜力,需要 Intel 编译器。包代码将使用 GNU gcc 编译,但效率不高。

GPU 和 KOKKOS 包之间的差异:

  • GPU 包仅加速对力、邻居列表和(部分)PPPM 计算。 KOKKOS 包尝试在 GPU 上运行大部分计算,但可以透明地支持非加速代码(由于主机和 GPU 之间存在数据传输而导致性能损失)。
  • 当使用排除列表或三斜模拟框时,GPU 包需要在 CPU 上构建邻居列表。
  • GPU 包可以针对 CUDA 或 OpenCL 进行编译,因此可以很好地支持 NVIDIA 和 AMD GPU。在 NVIDIA 硬件上,使用 CUDA 通常会获得与 OpenCL 相同或更好的性能。
  • GPU 包中的 OpenCL 理论上也支持 Intel CPU 或 Intel Xeon Phi,但对 KOKKOS(或 INTEL)中的原生支持更为出色。
  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LAMMPS是一种常用的大分子动力学模拟软件,用于研究材料力学性能。在进行力学性能测试时,LAMMPS会产生大量的数据,括原子坐标、原子速度、原子力等信息,这些数据可以通过使用Matlab进行处理和分析。 对于力学性能测试数据的处理,Matlab可以进行各种数据处理操作,括数据读取、数据筛选、数据变换以及数据可视化等。首先,可以使用Matlab的读取函数,如`importdata`或`readtable`将LAMMPS输出的数据文件导入到Matlab中,可以得到一个矩阵或表格型的数据结构。 在掌握了数据后,可以使用Matlab提供的各种工具对数据进行筛选和处理。例如,可以根据需要选择特定的原子类型或区域,从原始数据中筛选出感兴趣的数据。可以使用Matlab的条件语句和循环语句对数据进行操作,如计算力的大小、原子的受力方向等。 Matlab还提供了丰富的数学函数和工具箱,可用于对力学性能数据进行数值计算和分析。例如,可以计算应力张量、应变张量,并根据得到的结果评估材料的力学性能。Matlab的统计工具箱还可以用于对数据的统计分析,如计算平均值、方差、相关系数等。 最后,Matlab还提供了强大的数据可视化功能,可以绘制各种图形以展示力学性能数据的特征。例如,可以绘制原子位置的散点图、力的分布图、应力-应变曲线等,帮助研究人员更直观地理解和分析力学性能测试数据。 综上所述,Matlab在LAMMPS力学性能测试数据的处理中具有广泛的应用,可以帮助研究人员快速获取、处理和分析数据,从而更深入地研究材料的力学性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值