请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 628|回复: 3

[Amber] 分子模拟榨干GPU性能的参数建议

[复制链接]

13

帖子

1

威望

237

eV
积分
270

Level 3 能力者

发表于 2019-3-15 11:14:43 | 显示全部楼层 |阅读模式
显卡加速自从在分子模拟开始使用以来,大大加速了分子力学的模拟速度,引sob大提到的观点“一个家用高端四核处理器加上一张消费级显卡就可以超过20核双路服务器”。

这里给出一些关于分子模拟如何最大化使用显卡加速的建议。搬运自amber官网(http://ambermd.org/gpus12/),原则上只适用于amber的pmemd,不过分子模拟的算法大多类似,也可以迁移到gromacs之类的软件

评分

参与人数 1eV +5 收起 理由
kunkun + 5 谢谢

查看全部评分

13

帖子

1

威望

237

eV
积分
270

Level 3 能力者

 楼主| 发表于 2019-3-15 11:14:58 | 显示全部楼层
        1. 避免使用较小的NTPR,NTWX,NTWV,NTWE和NTWR值。 过于频繁地写入到输出、重启和轨迹文件会损害在CPU运行时的性能,这对于GPU加速模拟来说更为严重,因为向GPU复制数据和从GPU复制数据需要大量成本。通过在尽可能多地在GPU上计算,仅在绝对必要时复制回CPU内存则可以实现性能最大化,也就是所谓CPU到GPU内存同步的最小化 。 同时这也保证了仅在绝对必要时才计算能量,从而减少计算开销,反之将NTPR或NTWE设置为低值将导致过多的能量计算。 最好不要将这些值中的任何一个设置为小于100的数(除了用0以禁用它们的情况),并且理想情况下使用500或更多的值,比如 NTWR> 100000是一个理想的设定。
 
        2. 避免设置ntave / = 0。设置打印运行平均值意味着需要计算每一步的能量和力,这对纯CPU计算来说代价还不太大,但在GPU上运行时这可能导致性能损失8%或更多。 类似的,你也应该将ene_avg_sampling的值设置为较小的值。
 
        3. 尽可能避免避免使用NPT系综(NTB = 2)。 几种系综的模拟速度一般为NVE≈NVT> NPT。 然而,对于显式溶剂模拟,我们始终需要运行至少一些NPT以使密度平衡。 不过一旦完成密度平衡,通常可以切换回NVT进行模拟。
 
        4. 除非需要,否则应避免在隐式溶剂GB模拟中使用GBSA。 GBSA关键字是在CPU上计算的,因此在每个MD步骤上GPU和CPU的内存之间需要进行同步。关闭此选项的话只有在每个NTPR或NTWX步骤才需要进行内存同步。
 
        5. 使用Berendsen恒温器(ntt = 1)或Anderson恒温器(ntt = 2)代替Langevin恒温器(ntt = 3)。 Langevin模拟需要非常大量的随机数,这会略微降低性能。
 
        6. 不要认为对于小型系统GPU总是会更快。 通常,对于少于150个原子的GB模拟和少于9,000个原子的PME模拟,CPU版本在单个节点上的性能优于GPU版本的情况并不罕见。 一般来说GPU和CPU运行之间的性能差异将随着原子数的增加而增加。 此外,使用的非键截断越大,GPU相对纯CPU计算性能的提升就越好。

        7. 跨多个GPU并行运行时,不要尝试共享节点互连。 例如,你应该避免在单个节点上运行2个单独的MPI作业。假设你有2个节点,每个节点都有一个QDR IB卡,1个C2050和1个C1060,如果你尝试在2个C2050上运行双GPU作业,在另外2个C1060上运行第二个双GPU作业,则性能可能会非常差。 在并行运行时混合不同型号GPU也是不可取的。 在这种情况下,建议将两张C2050放在一个节点中,两张C1060放在另一个节点中。
 
        8. 并行运行以获得最佳性能时,应使用最新的互连技术。 在撰写本文时,最新的技术是第2代QDR IB。 你还应确保设置GPU Direct支持(Mellanox IB卡),取决于计算作业,这通常会提高10%到25%的性能。 理想情况下,你还应确保所有GPU卡和infiniband卡都在完整的x16插槽中, 这意味着它们将作为x16插槽进行电气连接,而不是那种看上去是物理x16但实际上分成多个插槽以兼容x8或x4插槽的接口。 (提防像戴尔8路break out boxes这样的垃圾)
 
        9. 关闭ECC纠错(C2050 and later). ECC可能会使性能损失高达10%并且会损害并行扩展。 你应该在尝试之前验证你的GPU是否正常工作,并且没有给出ECC错误。 你可以在Fermi(或更高)架构的显卡上关闭此功能,然后以root身份为每个GPU ID运行以下命令,然后重新启动:
nvidia-smi -g 0 --ecc-config=0   (repeat with -g x for each GPU ID)
我们已经在各种硬件上对AMBER进行了广泛的测试,证明了ECC对AMBER分子模拟的可靠性几乎没有任何好处,这也是我们推荐在GeForce游戏显卡上进行AMBER分子模拟的部分原因。

        10. 如果你的显卡支持,打开GPU Boost。 NVIDIA的新款GPU如K40支持GPU Boost,如果供电和散热允许,可以提高显卡频率。 打开GPU Boost的命令:
sudo nvidia-smi -i 0 -ac 3004,875       它将设备0置于最高升压状态。
返回正常状态: sudo nvidia-smi -rac
在没有root权限下打开Boost: nvidia-smi -acp 0

评分

参与人数 1威望 +1 收起 理由
sobereva + 1

查看全部评分

97

帖子

0

威望

1259

eV
积分
1356

Level 4 (黑子)

发表于 2019-4-24 17:02:57 | 显示全部楼层
多谢推荐

97

帖子

0

威望

508

eV
积分
605

Level 4 (黑子)

发表于 2019-4-27 15:06:16 来自手机 | 显示全部楼层
太赞了!谢谢分享您的经验!
您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2019-5-24 12:01 , Processed in 0.146773 second(s), 28 queries .

快速回复 返回顶部 返回列表