CudaSPONGE与PySAGES初步性能测试

技术背景

在前面的一篇博客中,我们介绍过CudaSPONGE的基础使用方法、CudaSPONGE调用Python接口函数以及CudaSPONGE结合增强采样软件PySAGES的使用方法。在这篇文章中,我们将介绍CudaSPONGE和PySAGES相结合的初步性能测试结果。

测试案例

我们沿用这一篇文章中的测试案例,对一个简单的多肽体系的两个二面角参数空间执行MetaDynamics增强采样方法:

我们的预期结果,在普通的NVT下,二面角的采样空间较为集中:

而加上PySAEGES的增强采样之后,理论上采样点可以均匀的遍布在整个采样空间:

这是我们对于这个采样结果的预期,其实图片内容也就是实际结果。但是本文主要侧重于性能测试,而我们的性能测试,就基于这个案例来开展。

调用逻辑

其实对于PySAGES来说,他们有自己的一套函数调用逻辑:把不同的MD软件作为Backend,由PySAGES来进行封装和调用,并且用于控制MD模拟的进行。所以如果按照PySAGES的调用逻辑来说,应该用这么一个框架来结合PySAGES和CudaSPONGE:

但是因为CudaSPONGE主要基于CUDA-C开发,为了发挥更多的性能优势,CudaSPONGE也有自己的一套调用逻辑,结合PySAGES之后是这样的:

其实这个问题的本质就在于,以哪一种软件为核心。如果以PySAGES为核心,就是采用上面的一种交互形式。如果是以MD软件为核心,就是采用下面的这种形式。不过对于CudaSPONGE v1.4版本来说,因为提供的API有限,其实只能使用下面的这种调用形式,也就是以MD软件为核心的调用形式。本文所使用到的测试案例代码,都可以参考参考链接1中的内容。

MetaDynamics说明

关于MetaDynamics的原理,建议还是翻阅一下Parrinello组的原始文章《Escaping free-energy minima》。简单的来说就是,我们在一个定义好的序参量空间,每隔固定的MD步数,就施加一个高斯势,这部分的总和组成一个偏置势:

\[V(s,t)=\int_0^td\tau w G\left[s,s(\tau)\right] \]

如果使用一个well-tempered来加速自由能面的收敛,那这个参数\(\omega\)需要从一个常数变成一个随偏置势增长而逐渐减小的一个可变量:

\[w(t)=\omega e^{-\frac{1}{\gamma -1}\beta V(s,t)} \]

这里PySAGES中的MetaDynamics就是用的这个增强采样方法,也是我们重点测试的方法对象。需要提及的是,虽然每隔固定的步数我们才会施加一个高斯势,但其实历史累积的高斯势的作用力一直都存在。所以,只要在MD过程中添加了MetaDynamics方法,就意味着每一步都需要计算一个序参量的值,及其对应的偏置势产生的偏置作用力。在很多情况下,偏置作用力的计算有可能会成为整个分子模拟过程的瓶颈部分。因此,MetaDynamics方法的性能至关重要。

初步测试数据

经过初步的测试,分别运行了2000、4000、6000、8000、10000个Step的NVT和Meta NVT,运行时长和Meta时长占比如下:

可以看到的是,Meta的运行时长目前可能要达到90%左右。当然,这里面影响的因素有很多,暂时还不确定性能表现与文章中描述不同的原因在哪里。因为这里面的数据传输都是使用的Dlpack进行转换,理论上可以做到Zero-Copy。不过性能后续可以再慢慢优化,就目前来说,使用PySAGES去开发一个增强采样方法,然后使用CudaSPONGE来运行分子动力学模拟的部分,开发成本相对来说是比较低的,并且获得的性能增益也不错。测试平台信息如下: ```txt GPU: RTX 3080Ti Jax: 0.3.25 Jaxlib: 0.3.25+cuda11.cudnn82 nvcc: 11.6.124 ```

总结概要

接前一篇关于PySAGES结合CudaSPONGE使用方法的文章,本文主要还是使用了一样的测试案例。仅通过不同的测试步长,来定性的分析PySAGES的MetaDynamics实现方案结合MD软件之后的性能数据。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/sponge_ext_01.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

参考链接

  1. https://www.cnblogs.com/dechinphy/p/18615556/pysages-sponge

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/872206.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次移动光猫(GM219-S)安全测试

前言 过个年,WiFi密码忘记了…光猫管理密码也忘记了(这个光猫也不支持物理按钮重置设置),但是手机还连着WiFi,正规操作找回不了密码,那就用咱们测试的思维来试试PWN掉这个路由器。 过程 未授权获取WiFi连接密码 还好之前没闲着,发现管理的几个未授权访问的接口如下: 获取…

Web安全测试学习手册-业务逻辑测试

首先感谢朋友倾璇的邀请 ,参与了的相关撰写,目前负责业务逻辑测试这一块的撰写,目前初步已经成型,先发出来让大家看看,欢迎点评,也可以加入我们一起来撰写~ 业务逻辑测试 介绍:这里对Web应用业务逻辑方面的安全缺陷进行介绍和常见案例讲解。 任意用户密码重置 常见的缺陷…

串口、COM口、UART口 ;TTL、 RS-232、 RS-485

串口、COM口、UART口TTL、RS-232、RS-485区别首先 串口、COM口、UART口一般指的是硬件接口。而TTL、RS-232、RS-485则是逻辑电平0和1的不同表示标准 它们区别如下:1)和RS232相比,由于RS485采用了差分传输的方式,因此抗干扰能力强很多。TTL抗干扰能力最差。2)像STM32这类单…

ML.NET 图像分类

参考文档:https://www.cnblogs.com/mq0036/p/18302572using MLNET_Image; using static MLNET_Image.MLModel1;namespace MLNET.Image {public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void btnSelectImage_Click(object sender, Ev…

【医疗行业】2024中国网络安全产业势能榜优能企业「医疗行业」典型案例展示

医疗行业涉及大量敏感数据,包括患者的健康信息和医疗记录。因此,医疗数据的保护一直是行业中的重中之重。随着电子病历、远程医疗等新技术的应用,医疗行业面临着更多的网络安全威胁。在本期,我们将展示医疗行业的一些典型案例,探讨如何加强医疗数据保护,保障患者隐私和数…

海康web3.0插件开发,登录成功预览失败

做个记录,使用官方的demo,发现有登录成功,预览和回放失败,代码1000,未知错误,我遇到的情况是获取端口信息错误导致的这个是硬盘录像机原始的配置,虽然配置显示没有启用UPnP,但是插件中的默认获取的端口信息是按照这张表中的外部端口获取的,但是如果你没有启用端口映射…

Emacs 折腾日记(十)——elisp符号

符号是有名字的对象,这么说可能有点抽象。我们先来回忆一下C/C++中关于符号的内容。 C/C++ 最终被编译成机器码直接执行,在机器码中不存在变量名称,函数名称等字符,它只有一串地址。但是在写C/C++代码的时候有变量名,函数名,类名,对象名等等名称。编译器是如何做到将符号…

如何通过跨境电商流程管理工具提升项目效率?几个工具推荐

在竞争激烈的跨境电商领域,合适的工具就如同得力的助手,能够显著提升运营效率、优化业务流程,助力企业在全球市场中脱颖而出。从市场调研、选品采购,到店铺运营、营销推广以及物流管理等各个环节,都有相应的专业工具可供选择。接下来,我们将深入探讨一系列跨境电商实用工…

uniapp上传文件

1.h5不支持设置请求头,所有h5通过上述方式上传失败 2.如果前端不传图片需要用两种方式分别调用,且需要设置不同的请求头,后端需要同步更改 来源:https://blog.csdn.net/qq_23859799/article/details/126794172

2025.1.20 CSS基础

1、语法: 选择器{ 属性:值; 属性:值; ... } 例如: <html> <head> <meta charset="utf-8"> <style> p {color:red;text-align:center; } </style> </head><body> <p>Hello World!</p> <p>这个段…

小乌龟 svn 批量解锁方式

再次点击 get lock ,弹出来的框里面勾上“steal the lock” 强制获取锁 ok 之后,再来释放锁: 即可。

git密码带有特殊字符转义

git clone -b dev http://admin:%21%40%23%24%^abc%2C.%2F@xxx.gateway