原始文章《Scaling Molecular Dynamics Beyond 100,000 Processor Cores for Large-Scale Biophysical Simulations》
译文如下:
Abstract:对生物间相互作用的复杂性的兴趣增长,不断驱动着对生物物理学模拟方面增加系统大小的需要。这就不仅需要强有力的先进的硬件,也需要相应的,能够容纳在复杂力场下相互作用的大量原子的软件。为了处理这种情况,我们在为大量处理器设计的GENESIS分子动力学包上开发并实现了有关策略。通过最小化参与通信的处理器数量,并行处理远程静电相互作用。本文采用一个新的算法来实现非键合相互作用,提高单指令多数据流(SIMD)性能,降低超大系统的内存使用。在实际空间非键合相互作用的邻域搜索上,内存使用被降低了接近80%,进而得到有效的加速。使用描述物理3D染色质相互作用的实验数据,我们构建了第一个关于一个全基因位点(GATA4)的原子模型。综合起来,这些开发使得第一个10亿原子的完整生物分子复合物的模拟成为可能,缩放到65,000个处理器(130,000个处理器核心)能达到1ns/天的性能。
Introduction:分子动力学(MD)是一个强有力的工具来理解原子化细节方面的生物现象。从第一个蛋白质的分子动力学模拟以来,时空尺度已经显著的增加,这得益于多样化的硬件和软件的发展。对于费时的非键合相互作用,Taiji et al. 通过开发专业的硬件,MDGRAPE-3,加速了分子动力学模拟。ANTON,也是专业用来做分子动力学模拟,相比较传统计算机,在模拟溶解在明确的溶剂中1毫秒的蛋白质动力学时,实现了100倍加速。在延长分子动力学模拟的时间尺度的背景下,GPU和Intel Xeon Phi变得十分有意义。由于最近在硬件和软件上的发展结果,由64,000,000和100,000,000个原子组成的大的系统能够通过分子动力学来模拟。
当前,由于生物上新的实验原则,分子动力学的发展朝着延伸时间尺度和系统大小去发展变得越来越重要。在这个领域的进展的例子是对结构基因组学和染色质动力学的一个更好的理解。染色质是一个生物上的DNA-蛋白质的化合物,它能提供在细胞核中的压缩的基因信息。在这压缩的结构中,由于DNA和蛋白质之间的相互作用,DNA以一个受控的和结构化的方式包裹着组蛋白(一个被称为核小体的功能单元)。并且,通过特定的蛋白质-蛋白质和蛋白质-DNA相互作用,实现了更高层次的压缩。但是是什么驱动了染色质的压缩,以及它是如何发生的,目前尚不清楚。随着最近在序列化技术上的进展,海量3D交联数据(染色体构象捕获或single-cell Hi-C)已经揭露了对染色质结构的新的探索。在Hi-C实验中,两个基因组位点i和j接触的概率Pij可以通过推断得到。从这些数据中,可以构建一个接触图:三维结构的两维表征。全基因组接触图谱已经显示染色体领域的存在(也就是作为图谱联系着的域或TADs)以及在百万碱基尺度上已经建立了染色质结构的层级性。据推测,这个复杂的层级结构的结果,是来自对几米长的DNA被压缩在人类细胞中的微米级核内的需求。更引人注目的是,这个压缩是发生在核内很拥挤的空间,且没有拓扑纠缠或者结节的形成。现在,广为信服的是,是染色质采用了一个分子球状构象(Fractal globule conformation)来实现的。染色质的层级结构并不是压缩带来的副产物;它在基因功能范围内扮演着一个中枢的角色,最引人注目的是基因转录,DNA复制和修复。尽管最近在染色质构象捕获和高分辨率直接成像实验(比如在荧光原位杂交技术(FISH))方面,染色质结构仍然保留着理解相当欠缺的局面。这一部分是由于在细胞周期染色质结构有一些显著改变,就像对细胞的理解一样,它并不遵循染色质组织的既定水平。
在分子动力学方面,通用协议是由三点构成:(1)势能和力的估计;(2)坐标系和动量的集成;(3)恒温或恒压器计算。对明确的水分子的生物分子动力学模拟,势能函数包括键合项(键,角度,适当的和不适当的双面角)和非键合项(静电和范德华力)。键合作用的计运算量是O(N),只占整个模拟时间的一小部分。MD的主要瓶颈是出自对非键合作用的估计。非键合作用的运算量是O(N^2)。因为范德华力作用随着成对原子的距离的增加而迅速衰减,因此能够通过运用一个截断值(超过的话相互作用能是0)是的运算量为O(N)。使用 Particle Mesh Ewald(PME)方法,静电能被分解成real-和reciprocal-空间相互作用。

FIgure 1. 在明确溶剂中的GATA4基因位点的模拟。a)在一个周期性的模拟cube中全部溶解了的GATA4结构,由双链螺旋DNA的83千个碱基包裹着427个核小体组成;b)基因结构的一个更详细的视图。用来编程基因表达的蛋白质tails从每一个核小体突出出来。在a)和b)中,为了图片清晰,水分子并没有表现出来
方法
GATA4体系的原子模型
建模。这里构造了一个粗粒度的3D框架,使用的是一个染色质的粗粒度的中间尺度的模型。这样,致使对新的折叠图案——层次循环(染色质纤维经历折叠来产生循环的层状网络)的识别。通过结合实验测得的超结构参数和先前证实的中间尺度染色质模型,一个详细的GATA4基因位点的中尺度模型得以建立,如图1所示,并被用来获得原子分辨率坐标。模型平衡后的结果是一个压缩的球状结构,表现出层次化的循环结构,循环的位置与3C数据一致,并且局部的折叠与活体实验一致。我们的中间尺度染色质模型由三种粒子类型组成:连接DNA,核小体核心颗粒伪电荷,以及灵活的组蛋白尾。连接DNA被当做一个修正的蠕虫状链。通过沿着像是单价盐作用的复杂表面的Debye-Hückel伪电荷,来近似原子核小体的电场的离散表面电荷优化(DiSCO)算法。通过从该算法的形状衍生和表面衍生,核小体核心颗粒被表示为静电物体。灵活的组蛋白尾是粗晶粒的,这样50个有孔小珠可以表示8个组蛋白尾,而每一个有孔小珠表示大约5个氨基酸残基。中尺度模型允许直接的安置空间中的全原子核小体DNA和蛋白质分子结构,其结果也就是GATA4体系的原子模型。
大分子混合物的模型生成和自动冲突检测。像X射线晶体学,核磁共振波谱学,以及电子显微镜检查这样的技术,只是用来检测蛋白质结构的方法中的一些。然而,这样的实验数据用来建立全原子模型通常不够。我们必须结合实验数据和同源建模技术(一个基于蛋白质结构的氨基酸序列和相关同源蛋白质的结构知识的蛋白质结构重建技术)。生成全原子模型的方法(Carter & Tung给出了详细的描述)能通过下列方面进行概述:(1)生成具有指定pitch和直径的螺旋线:基于晶体学数据选择的核小体DNA的pitch:28 Å,直径:106 Å;(2)曲线被数字化成3.4 Å的片段来代表分子的碱基对的步长;(3)片段被映射到碱基对参数的集合来生成全原子模型。同源技术和实验数据的综合很完美,并且空间碰撞(这里我们定义成两个原子被距离小于0.9 Å分开)经常被引入到原子间。当这样的碰撞在最小化阶段,很多分子动力学包并不能做出更正,这是很令人讨厌的,此时碰撞原子间的高Van der Waals斥能将导致模拟失败。根据这个问题,在一个常见的DNA-蛋白质结构中,我们开发了一个程序来识别这样的空间碰撞,并在不违背几何约束的情况下,自动调整原子位置。这样,所有的碰撞被移除或修正。DNA的骨架是非常死板的。除了通过脱氧核糖环表现出小褶皱的行为之外,唯一其它有意义的旋转自由度位于磷酸盐基,大约是O3’-C5’轴。原则上这个自由度,表示为ϕ,能够赋值成任何ϕ在[−180, 180)的值。这个可以被利用,为了碰撞修正的目的。蛋白质结构不像DNA,通常更灵活,产生更多的方法,其中原子位能够被修改来消除空间碰撞。然而,在实际中,我们发现,当结合ϕ旋转时,只修改一个连接氨基酸侧基和残余的扭转角(这里我们标记为χ,χ的范围是[−180, 180))可以充分用来消除在我们的模型中的所有的空间碰撞。碰撞修正程序主要是用Python来写的,调用了Fortran子程序(计算ϕ or χ变化时候的原子位)。图2显示的是程序运算的流程图。
对大规模分子动力学来说GENESIS的主要特征。
就像现存的大规模生物学模拟的分子动力学程序(比如GROMACS和NAMD),GENESIS对又是使用CPU核心,支持混合并行化(结合共享的和分布的内存并行化)。基于这个,对于大规模分子动力学,GENESIS具有一下的几个主要创新的特点:
反向查找表:GENESIS利用短程非键合相互作用的能量和力估计的查找表来取代使用直接计算。查找表是基于距离平方反比法来计算,允许通过对很多表点赋值来对很短的成对距离执行精确度计算,这是鉴于对更长的成对距离,能量/力的快速估计可以通过减少表点得到。
midpoint cell方法做域分解:在midpoint cell方法中,在对应的子域和子域的临近cells中,每一个等级有着cells数据。它发送/接收数据到/从邻近的子域。非键合相互作用通过分配cell对的链表(或者midpoint cell的指数),经过OpenMP线程实现并行化。整合和约束估计通过在每一个子域中分配cell的指数,经过OpenMP线程实现并行化。通过采用midpoint cell的方法,结合下面会描述的FFT体积分解方法,我们能够在real-和reciprocal-空间之间分配相同的域分解,在FFT之前,跳过电荷栅格数据的通讯。
FFT的体积分解。GENESIS用体积分解FFT,倒易空间在所有的三个维度被分解。这相对于slab或者pencil分解来说,要求更频繁的MPI_Alltoall通信。然而,对大规模并行超级计算机来说这套方案更有利,因为,每一个通信的数据数量相对于其它分解方法来说小的多。另外,通过在real和reciprocal空间之间分配相同的域分解,我们在FFT之前可以忽略电荷数据之间的通信。特别的,通过P MPI过程,我们假定分解了所有的空间。如果P被因式分解为P = Px × Py × Pz,我们通过X维度的Px,Y维度的Py,Z维度的Pz来分解空间。为了执行每一个维度的FFT,我们分配MPI_Alltoall通信,这样在指定的维度,每一个进程都有全局的数据。根据我们的体积分解FFT方案(1d_Alltoall),由8个计算/通讯过程组成的前向FFT在附录A中概述。
在这个方案中,我们需要5个1维的MPI_Alltoall通讯。直观的,反向FFT(BFFT)过程与前向FFT相反;这样的分解机制相较于其它机制有几个优势在于它的可伸缩延展性观点尽管更高频的通信。一方面,卷入通信的线程的数量与P的立方根成比例。另一方面,在slab或者pencil分解FFT的情况,它将与P或者P的平方根成比例。当P足够大,通过更高频的通信将小数量的线程卷入通信,通信的耗费将减少。我们也利用减少了通信频率的体积分解机制,当卷入通信的线程数量更大的时候(2d_Alltoall)。
在这个机制中,我们需要3个一维MPI_Alltoall通信。如果我们忽略第一MPI_Alltoallx通信,2d_Alltoall机制类似于pencil分解FFT。根据我们对1d_Alltoall和2d_Alltoall机制的研究,在K计算机上的性能几乎相互等价。
大型系统的并行I/O。对一个非常大型系统的分子动力学模拟,单个restart/trajectory文件会引起几个问题。首先,在读single restart/trajectory文件时存在内存问题。对一个10亿原子的系统来说,单个restart文件需要24GB(6[3个坐标和速度]× 10亿[粒子数]×4[实数对应字节数])文件大小。这样,每个线程都需要至少24GB内存,只用来读restart文件。因为我们不仅需要restart,也需要PDB (protein data bank) 和力场参数文件,文件的大小将变得大于100GB,将会大的有些过分。对一个非常大的系统来说,写单个restart/trajectory会将变得更有问题,通过进程间通信将累积12GB大小坐标。并行的I/O被设计用来解决这个问题。通过并行 I/O,每一个线程要求对应的子域数据。随着我们增加子域数量,每个线程需要的数据数量会相应的减少。使用一个并行化的restart设置工具(prst_setup),一个并行的restart文件通过初始化PDB和参数文件生成。在分子动力学模拟期间,每一个MPI线程写入只包含对应子域坐标的trajectory文件。文件的数量与MPI线程的数量是相同的。当分子动力学模拟结束,用户可以通过原子选择选项将所有的trajectory文件并入一个文件,这样可以只分析感兴趣的atoms/atom组。
GENESIS在KNL Intel Xeon PHI处理器上的优化
KNL硬件架构在trinity phase 2和Oakforest-PACS。随着现存晶片的特征宽度趋向于10nm,由于电荷的泄露,功耗也增加的相当多。具有每个核心更少组件和更低时钟速度的多核晶片因此被开发出来,为了未来的百亿亿次计算。在Trinity Phase 2和Oakforest-PACS 上的1.4 GHz的Intel Knights Landing(KNL)7250晶片含有34个活动的tiles,每一个有两个核心,共享了1 MB L2缓存。每一个核心支持四倍的同时多线程(SMT);这样,在单个节点上多达272个硬件线程可用。它们支持AVX512指令,包括冲突检测,硬件收集/分散的预取,指数的和倒数的指令。每一个处理器具有16GB堆叠的高带宽内存(MCDRAM),并且可以通过DDR4通道访问一个额外的96GB内存。MCDRAM和DDR分别支持400 GB/s和90 GB/s的数据流;然而,MCDRAM和DDR的延迟存取是相互可比的。处理器的内存模式在boot时间是可配置的;使用在四缓存模式boot的节点执行模拟,其中MCDRAM作为L3缓存配置,DDR正常配置就好。在Oakforest-PACS和Trinity Phase 2中,Intel Omni-Path和Cray Aries被指定各自相互连接。
Data layout。 在GENESIS 1.0-1.3包中,根据源代码的组织,坐标,速度和受力具有array-of-structures (AoS)类型。换句话说,坐标中的x, y, z部分,速度,和力在内存中是邻近的。在KNL上,当利用structure-of-arrays (SoA)的数据类型时,坐标的x部分在内存上是邻近的,此时SIMD性能得到改善。为了提高SIMD的性能,在real-space的非键合相互作用模块,我们改变了数据的layout,从AoS到SoA。
real-space非键合相互作用的新算法:减少内存的邻近搜索机制改善性能。为了在KNL上有效使用内存,我们使用了一个新的近邻搜索机制,能显著降低内存的尺寸。在GENESIS 1.0-1.3包中,我们利用基于


本人是一个叫亦辰的小朋友的父亲。庚子鼠年3月底,小亦辰4个多月大的时候发现了后背肩胛骨处有肿块,后来在首都儿科研究所,北京儿童医院,北医三院经过多方会诊确诊为髓系白血病,并伴随有全身脏器多处转移。肩胛骨处经活检为髓系肉瘤,骨髓穿刺结果发现69.8%都是肿瘤细胞。天降横祸,避无可避。为人父,让他小小年纪便遭此大难,深感罪孽深重。天道不仁,苟且希望能在我离开人世之前,癌症和白血病可以得到很好的救治。我愿为此,尽我所能。
小亦辰患病之后,我才开始正式关注癌症,开始关注国内外的相关报导和研究现状。由于我不是学习生物相关专业出生,所以提供不了任何专业性的见解。摆在这里的只是眼中所见,心中所想。
我曾经想过,是不是可以用一些微纳米技术,构造分子尺度的机器人,横穿于体内,遇到癌细胞就杀死它。后来我就放弃了这样的想法,因为这些分子机器人首先得保持自身稳定,然后还得能从所有的体细胞中发现癌变了的细胞,并且还能杀死它,这个有些困难。能穿行于体内所以它不能太大,体积受限,功能也就受限。这有点像悖论。功能单一的话,那它只能是靶向药物,不是机器人。另外,回收也是一件难事儿。作用于体内,注定它需要有一定的数量,数量一大,控制本身也是一件难事儿。
受限于视野,目前我个人感觉靶向药物和免疫治疗会相对来说比较适用于泛癌治疗,但是需要借助于全基因图谱+大数据+高性能计算等的支持。癌症的发生是由于基因突变,所以全基因图谱无疑是发现和检测基因突变的最直接有效的证据。何处突变,为什么会出现这样的突变,为今后的预防做好工作。在今年初Nature发表的《The evolutionary history of 2,658 cancers》就做了很好的工作。但是样本量是不是还需要增加几个数量级,这样发现的规律也就更明显。这也就从一个另外一个层面呼吁基因检测技术的进步,使得全基因检测更加便捷。另外,建立健全全基因图谱的大数据支持,使得全世界范围内的科研工作者都可以走到一起来共同研究。这个同样在nature发表的《Pan-Cancer Analysis of Whole Genomes》上做了很多工作,并向世界公开了数据。对这样的庞大的数据做计算模拟,肯定离不开高性能计算甚至超性能计算的支持,并需要借助于大量的实际实验和临床实验工作。如此,我认为,癌症应该有可能会被攻破。
当然,这是我一个行外人所构想的未来,具体什么样子的,很难说。

去癌-计算模拟-分子动力学-01相关推荐

  1. 元计算模拟宇宙人生by剑桥大学材料学博士段晓明 (公号回复“元计算”下载PDF典藏版资料,欢迎转发、赞赏支持科普)

    元计算模拟宇宙人生by剑桥大学材料学博士段晓明 (公号回复"元计算"下载PDF典藏版资料,欢迎转发.赞赏支持科普) 原创: 秦陇纪 科学Sciences 今天 科学Sciences ...

  2. Pytorch中nn.Conv2d数据计算模拟

    Pytorch中nn.Conv2d数据计算模拟 最近在研究dgcnn网络的源码,其网络架构部分使用的是nn.Conv2d模块.在Pytorch的官方文档中,nn.Conv2d的输入数据为(B, Cin ...

  3. 遇事不决,量子力学:谷歌量子计算模拟化学反应登上Science封面

    视学算法报道 编辑:张倩.杜伟 转载自公众号:机器之心 原子和分子是受量子力学控制的系统,用量子计算模拟化学反应,或许是最好的方法. 去年 10 月,谷歌宣布实现「量子优越性」的论文登上了<自然 ...

  4. gromacs 安装_带你入门带你飞 gromacs材料计算模拟系列

    为了帮助大家了解掌握gromacs材料计算模拟计算,材料人于9月28日举办该主题研讨会.视频回看已经上线.培训内容 1 GROMACS入门操作基础 1.1掌握GROMACS所用的Linux命令1.2 ...

  5. 【Rust日报】2020-01-27 QIP:Rust中的量子计算模拟

    QIP:Rust中的量子计算模拟 量子计算库利用图形构建来构建有效的量子电路仿真.对于借口模型的量子计算,Rust是一种很棒的语言,因为借位检查器与无克隆定理非常相似. 请参阅Github仓库的exa ...

  6. 计算模拟I2C的传输速率

    在编写I2C器件的驱动时,经常会看到手册中提及该器件的最高传输速率,如: 而在配置寄存器实现I2C中也是需要配置I2C的传输速率,如: 但模拟I2C的速率该如何计算? 首先一般I2C速率的单位是kbi ...

  7. 初学python爬虫,记录一下学习过程,requests库模拟登录01

    初学python基本请求库requests requests学习03 模拟登录01 登录时cookies要求为字典类型,但字典推导式还不会用,用word完成了字典的替换.结果成功登录个人中心网页 #使 ...

  8. 相机畸变模型及去畸变计算

    透镜 实际成像时,如果小孔过小,则入射光的强度会受到影响,进一步会影响到成像. 另一方面,由于光的波动性,在小孔的边缘上,光将发生衍射,因此,这些光将在像平面上"散播".当小孔变的 ...

  9. python使用socket进行多线程收发与路径计算模拟路由器网络

    python使用socket进行多线程收发与路径计算模拟路由器网络 课设作业,使用多线程方式通过一个端口上的socket同时进行广播信息,接收信息,Dijkstra路径计算来模拟一个网络中路由器的简单 ...

最新文章

  1. AI | 优化背后的数学基础
  2. C#中HashTable的用法
  3. PHP教程-防止网站被刷票的小技巧
  4. java基础知识陷阱
  5. 一个SAP UI5 TreeTable控件的错误分析
  6. 数据类型和运算符_月隐学python第3课
  7. Python每日一练(9)-批量爬取B站小视频
  8. 2019年应届生平均起薪5610元 一线城市吸引力首次跌破30%
  9. new thread后会阻塞主程序吗_阻塞模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?...
  10. 查看php项目tp版本,tp5.1如何查看版本号
  11. 不想remote的程序员跟咸鱼有什么区别?
  12. yolov5 简单教程
  13. 起名源码PHP(宝宝取名源码)
  14. JavaWeb学习心得
  15. IDEA 运行 Tomcat 中文乱码的问题
  16. window.print();去除页眉页脚及网址。
  17. Leetcode_NO199_二叉树的左视图,右视图
  18. 【Netty4】netty ByteBuf (二) 引用计数对象(reference counted objects)
  19. 如何复制VMware虚拟机
  20. java文件恢复软件,文件恢复软件 免费-文件恢复软件 免费版

热门文章

  1. C++指针类型与强制转换
  2. 分享一款我改进的,简洁美观的Typora主题。
  3. Bad Romance - Unread/New Beat Order/Nito-Onna
  4. 【专题目录05】ARM架构-architecture
  5. 抱歉,今年我劝各位真的别轻易离职!
  6. 固网现代化服务:让铜线网络焕发青春
  7. 舍友看老杜视频自学Html,竟直接跳过最重要的form表单环节,太让人痛心了
  8. 基于STM32设计的汽车修理厂环境监测系统(华为云IOT)
  9. IDEA调试常用快捷键
  10. 兼容ie的多行文本溢出隐藏,并显示省略号