LAMMPS 是如何使用 GPU 进行加速计算的

LAMMPS 软件是分子动力学领域应用广泛的科学计算软件,该软件支持 GPU 加速,包含 GPU 模块和 USER-CUDA 模块。

1. USER-GPU 包

USER-CUDA 附加模块包是由 Christian Trott(Sandia) 在德国的 U Technology IImenau 开发的,它支持英伟达 GPU 版本的众多 pair 类型、fix 类型、少量 compute 类型以及长程库仑力计算的 PPPM 命令,包含特点如下:

  • 该包被设计为允许完全的 LAMMPS 计算,如多时步迭代时,完全在 GPU 上运行(除非进程间的 MPI 通信),以致基于粒子的数据(如坐标,力)并不需要在 CPU 和 GPU 间来回传递。
  • 当每个 GPU 核上的粒子数大的时候,该方法的加速优势会得到充分体现。
  • 数据将会保留在 GPU 上,直到触发到有 non-USER-CUDA fix 或 compute 的时步。当 non-GPU 操作出现时(fix,compute,output)出现时,数据会自动传回 CPU。这种行为会引发性能损失,但显然可以正常运行。
  • 邻居列表在 GPU 上构造。
  • 该包仅支持单进程 MPI 任务,在一个 CPU 核上运行,然后分配到每个 GPU 核上。

如何使用 USER-CUDA 包:

  • 在 lib/cuda 文件夹中编译支持你 GPU 硬件特定精度的 cude 库文件
  • 包含 USER-CUDA 包(make yes-USER-CUDA),编译 LAMMPS
  • 使用 mpirun 命令指定每个 GPU 一个进程任务(每个结点)
  • 通过”-c on“命令开关确保 USER-CUDA 包可以正常使用
  • 指定每个结点的 GPU 数
  • 在输入脚本中使用 USER-CUDA 类型的关键字

最后两步可以单独通过”-p cuda“和”-sf cuda“命令开关,或者”-pk“或”-sf“开关的效果和在输入文件(input)天剑 package cuda 或 suffix cuda 的命令时一样的。

2. GPU 包

GPU 包是由 ORNL 的 Mike Brown 以及他们合作者 Trung Nguyen(PRNL) 开发的。它支持 GPU 版本的众多 pair 类型(包括 3 - 体 Stillinger-Weber 势类型),以及支持长程库伦力的 Kspace_style pppm。包含特点如下:

  • 被设计为利用通用 GPU 硬件(有一块或多块 GPU 卡连接一块或多块多核 CPU),如在一个结点上的并行机器;
  • 基于粒子的数据(如坐标,力)在 CPU 和 GPU 之间每一时步会来回传递数据;
  • 邻居列表可以在 CPU 端或 GPU 端构建
  • PPPM 的电荷分配和力的插值部分可以在 GPU 端运行,进程间需要 MPI 通信的 FFT 部分在 CPU 端计算
  • 异步力计算可以同时在 CPU 端和 GPU 端进行
  • 允许 GPU 端进行单 / 双 / 混合精度,对势力以单精度计算,但累加为双精度力向量;
  • GPU 特定的代码在 GPU 包中,它在 lib/GPU 文件夹中引发 GPU 库,这一库支持 NVIDIA 以及 OepnCL,因此同样的功能在不同的 GPU 硬件上可以得到支持。

GPU 包的使用方法:

  • 分享于 · 2020.02.22 20:47 · 阅读 · 9006

[版权声明] :本文系网友分享,仅以非商业性的交流和科研为目的,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网( friends@stuch.cn )联系!我们将协调给予处理。转载授权码:确权中,请原作者尽快与我们取得联系,阅读原文(请登录)..

0 条评论

请先 登录 后评论
猜猜我是谁
Hollow -研究生

13
提问
38
回答
12
文章