摘要:引入了Intel Thread Checker线程检查工具,并对采用MPI+MPI混合并行程序进行线程检查,消除采用多核平台并行化所造成的数据竞争和死锁,避免了因为数据竞争和死锁所引起的计算结果不准确和效率低等问题。将不同的调度策略应用到能量求解的并行化程序中,缩短了并行程序执行时间。
关键词:并行计算;多线程;MPI
1、 MPI介绍
编程模型的优势在于能取充分两种模型所具备的长处,克服单一模型所存在的缺点与不足。在编写并行程序时,使用MPI将任务分解成若干子任务,每个节点完成一个子任务,由于每个节点只能读写本地内存中的数据,所以各子任务之间通过消息传递的方式来进行通信完成对远程数据的访问。
2、静电相互作用能并行策略
数据目前基于分子动力学并行模拟的方法大致分为三种,第一种是原子分解法(atom decomposition),第二种是空间分解法(spatial decomposition),第三种是力场分解法(force decomposition)。原子分解法是将原子分配到各个处理器中,每台节点机中的任务为N/P,这种方法在原子密度均匀时有很好的扩展性和负载平衡性。如果原子密度不均匀,当某些原子的近邻原子很少时可以采用空间分解法,由于空间分解法需要不同节点机间的处理器频繁通信,所以其通信开销较为高昂。作用力分解法的原理与原子分解法相类似,是将粒子间的作用力结合原子个数以及节点机的数量进行合理分配,这种方法相对减少了内存的消耗和各处理器间的通信开销。
2.1、MPI并行方式对源代码进行并行化优化
对数据经过MPI的粗粒度并行后,每台节点机内部的位点数下降为n=N/P(N为原子个数,P为节点机个数),我们分析静电相互作用能的原串行程序,其四个循环迭代中每个循环迭代内都是双重循环,因此我们考虑将每个循环迭代的内层循环交给GPU,运用MPI的多线程并行方式提高并行的效率降低程序串行执行所带来的时间消耗,进一步提高了并行计算的效率。大循环下的每个内层循环是遍历当前被处理粒子的相邻粒子,负责计算粒子间的静电相互作用。由于不同粒子间的计算过程是相互独立的,所以运用硬件管理的轻量级线程MPI的并行方式,将参与计算的粒子编号映射到MPI的一个Grid中,对应计算线程在所有线程中的序号。从而在GPU内部实现了两个级别的并行计算,即Block级和Thread级。该方法能够提高效率,降低串行执行所带来的时间消耗。
3、并行任务优化
共享存储器(shared memory)也是GPU片内的高速存储器,它是可以被同一线程块中所有线程访问的可读写存储器。由于GPU的内存和CPU内存之间的数据传输开销会降低程序的整体性能。因此,将复制到GPU内存的数据再次被复制到每一个执行在GPU核心集群的缓存中。这种方法极大的加速了处理核心的数据采集的执行,并显著降低了总的处理时间。它隐藏了GPU内存和主机内存之间的延迟,因此在一定程度上提高了性能。将需要的所有粒子坐标完全加载到存取速度很快的共享存储器中,在计算过程中,该Grid中的运算就不需要再存取任何外部的内存,实现线程间最小延迟的通信。为实现线程块内的线程同步,利用_syncthreads()同步函数保证线程块中得所有线程都执行到同一位置。只有整个block中所有thread都运行到标记处以后,才会继续执行下面的语句。这样,才能保证之前的执行结果对块内所有线程可见。从而降低GPU-CPU的数据传输开销,提高程序的整体性能。
c) 将库仑公式中的参数等常数数据存放到常数存储器中,常数存储器有缓存机制,用以节约带宽,加快访存速度。
4 、MPI流技术
基于流是按顺序执行的一系列操作,程序通过流来管理并发。流的定义方法,是创建一个MPIStrean_t对象,并在启动内核和设备主机间存储器拷贝时将该对象作为参数传入,这样内核函数调用将是异步的。不同的流允许一个流的存储器复制与另外一个流的内核执行相互重叠。从顺序上来说,第一次放入流中的复制操作将在第二次复制操作之前执行,第二次复制操作将在内核函数启动之前完成,而内核函数将在第三次复制操作开始前完成。主机端的数据必须存放在页锁定内存中,这样才能出现重叠。页锁定内存使该内存始终停留在物理内存中,不会被操作系统分页从而交换到磁盘上,防止该内存被破坏或重新定位。还能够通过DMA加速与设备端通信,有效提高I\O速度。对每一个时间步长,CPU首先发出一个内核调用MPI流的计算原子间相互作用。然后执行内核调用第二个流复制缓冲区到GPU,计算原子与σ键间的相互作用,并将计算结果从GPU复制到缓冲区。所有的函数运行时都会返回错误码,但多MPI流调用的函数是异步的,会在任务结束前返回,因此错误码不能报告异步调用的错误。为检验异步调用是否出错,通过在异步调用函数后面使用MPITreadSynchronize()函数,然后检查其返回值。
5、模型计算与应用
本文所采用的实验平台为配置相同的四台节点及组成的并行集群系统,单节点机内硬件采用I7-四核处理器,16G内存,500G硬盘,节点机间采用千兆网卡通过路由器互联。
软件环境采用OpenSUSE11.2操作系统,Intel Fortran Compile 9.0编译器,Tinker分子动力学模拟程序。
实验中我们分别测试了Ala5w和1crn模型运行在节点机个数为1、2、4时的并行运算时间,默认MPI线程数量均选择与CPU核数相等,根据多核处理器的特性,我们将子线程数量设定为8。
结束语:
根据模型能量求解程序的特点,利用不同的任务调度方式对细粒度并行程序进行了优化,取得了较高的性能加速比。采用Intel Thread Checker线程检查工具,对并行化后的多线程程序进行线程检查,进一步取消程序中的数据竞争和死锁,提高并行化后程序的性能。本文实现的模型能量求解计算的并行程序已经应用在大体系的分子模型结构模拟实验工作中,并发挥了重要的作用。
参 考 文 献
[1] 都志辉.高性能计算并行编程技术.北京:清华大学出版社.2001,8:10-18.
[2] 罗昕,黄仲伟,李莲冶.一种将串行程序划分成并行任务的方法.哈尔滨工业大学学报.1995,10,27(5)
[3] 周伟明.多核计算与程序设计[M].武汉:华中科技大学出版社.2008.
1718期刊网是唯一一家有正规营业执照,心贴心为客户服务的论文发表平台!
论文1718网和1718期刊网推荐的期刊均为正规期刊,都可在新闻出版总署网站查询到相关信息。本站合作的数千家期刊中,简化审稿流程,帮助客户选择最适合的正规期刊发表论文,以最快的速度达到客户最满意的效果。
手机:18863576778
QQ:925763962
公司网站:
www.lw1718.com 论文1718网
www.1718qikan.com 1718期刊网
www.qikan1718.com 期刊1718网
各专业论文发表 毕业论文 学术论文发表 国家级省级期刊发表
如何发表论文 经济论文发表 医学论文发表 代发表论文 职称论文发表网站
论文1718网和1718期刊网、期刊1718网,专业、权威、期刊发表网站。------博远文化传播有限公司