基于分布式Mysql集群存储的大规模CFD并行计算方法

文档序号:6551420阅读:680来源:国知局
基于分布式Mysql集群存储的大规模CFD并行计算方法
【专利摘要】本发明提供了一种分布式Mysql集群存储大规模CFD并行计算方法,涉及到多计算节点上协作进程间的通信和数据存储:每个计算节点上的CFD进程通过Mysql驱动API连接到数据库,从数据库中获取初始数据用于计算;CFD进程在计算过程中使用MPI协议通信,交换在区域边界的数据或者全局规约信息;对每个迭代步上的数据,进程通过Mysql连接句柄将数据写入数据库;CFD并行程序计算结束后,Mysql集群同步得到计算过程中的完整数据。与现有的CFD并行计算方法相比,本发明充分利用了开源的Mysql数据库对数据存取的高性能和高可靠性,使CFD并行程序可灵活、完整的保存计算过程中的各种信息和数据。本发明简化了开发流程,减少CFD并行程序执行的墙上时间,实用性强且易于推广。
【专利说明】基于分布式Mysq I集群存储的大规模CFD并行计算方法
【技术领域】
[0001]本发明涉及大规模CFD程序并行的实现方法,尤其是CFD并行程序中的数据存储方式。
【背景技术】
[0002]在流体模拟和计算领域,随着问题规模的增大以及对数据精度要求的提高,三维CFD模拟的网格数量已经从千万级快速到达数十亿甚至千亿的量级。由此带来的庞大计算量需要高性能计算才有可能在一个可接受的时间范围内给出程序的计算结果。目前,并行计算是高性能计算的关键和热点,而MPI是用于并行进程间通信的协议。MPI技术是分布式集群中跨主机进程通信的标准接口,得到了各计算机厂商和软件开发人员的大力支持。基于MPI方式的I/O已成为CFD程序的标准做法。然而MPI提供的接口对文件的读写有严格的限制和要求,并且容易因为并发操作造成数据上的读写冲突。
[0003]对于大规模CFD并行程序中的一些全局信息,诸如全局误差、时间步长,一般是规约到主进程来打印。进程计算过程中产生的中间数据,通常的CFD并行程序会因为记录的繁琐而直接舍弃。如若通过MPI接口采用文件I/O方式记录,因其对格式要求严格,从而无法灵活的记录和存储,这将导致进程运行过程中的大量信息被丢弃,从而不利于对程序的运行情况进行跟踪调试和性能分析。
[0004]为了方便程序的跟踪调试,以及记录大规模CFD并行程序运行中产生的大量运行数据,需要一个对运行程序信息记录和存储的可靠解决方案。该方案应当保证CFD程序的健壮性,同时还满足开发的便利性和存储的可靠性。

【发明内容】

[0005]本发明提出了一种基于Mysql集群存储的大规模CFD并行计算方法。该方法使大规模问题的CFD并行程序能灵活、高效地记录进程运行中的大量运行信息和中间数据。通过该方法不仅能避免CFD程序多进程对文件的并行读写造成的冲突,并且能够利用已有成熟的Mysql优化技术手段,提高CFD程序的整体性能。
[0006]为了实现该方法,本发明对CFD程序的运行环境有新的要求:需要有可连接的Mysql集群数据库。CFD进程将数据交由Mysql集群数据库托管,计算和数据存储剥离的方式将有助于CFD程序整体性能的提升。对于Mysql集群,可行的一个解决方案是在每个计算节点上运行着Mysql守护进程以供CFD进程连接和操作;另一种方案是在非计算节点上运行Mysql数据库,数据库服务器通过高速网络与计算节点连接。由于需要对数据库进行操作,该方法要求对Mysql集群的数据库或者数据表有增加、删除、修改、查询等权限。
[0007]使用Mysql集群作为数据载体,本发明的技术方案包括以下流程:
[0008]DMysql数据库预先启动并稳定运行;
[0009]2) CFD并行程序启动运行,完成数据初始化工作;
[0010]3) CFD进程通过分配的Mysql主机名、用户名和密码,连接到Mysql数据库,完成在数据库上的初始化工作;
[0011]4) CFD程序进行并行计算,计算过程中的边界信息交换通过MPI通信协议完成;
[0012]5)完成一次迭代计算后,进程将运行信息和中间数据保存到Mysql数据库中;
[0013]6) CFD进程间进行同步,传递全局规约数据和信息,检测是否满足程序退出条件;
[0014]7)如若程序满足结束条件,则完成清理工作,退出并行计算环境,CFD程序终止运行;否则跳转到4);
[0015]8)启动Mysql集群的数据同步和合并,聚合CFD程序写入到各数据库上的数据;
[0016]9)将数据导出用于结果分析和后处理。
[0017]对于CFD程序中需要记录的信息,用户可在配置文件中指定。CFD程序通过用户配置,将所需数据写入数据库。
[0018]本发明提出的并行计算方法不仅适用于同构计算集群,也适用于CPU+GPU组成的异构计算体系。
[0019]本发明中Mysql集群无需是对称或者同构方式,只需保证能让CFD程序的并行进程高速访问并进行数据读写即可。
[0020]本发明技术方案带来的有益效果:
[0021]1.将CFD并行程序开发过程中的存储和计算模块剥离,提高了 CFD程序开发的效率,减少了引入Bug的几率;
[0022]2.避免了多进程对文件的并发读写操作,规避了读写文件时数据覆盖风险;
[0023]3.CFD进程可自由、灵活和高效地的记录大量的程序运行信息和中间产生的数据,方便计算结束后对程序的跟踪调试、性能分析;
[0024]4.能够充分利用Mysql已有的优化技术手段提高数据存储性能和可靠性;
[0025]5.解耦了 CFD计算和存储模块,使CFD程序开发更为轻量级,开发人员专注于算法的实现即可;
[0026]6.大规模CFD问题并行计算过程中,可以减少进程间的通信量,降低网络延迟;
[0027]7.能够提高CFD程序的整体性能,减少CFD程序的运行时间;
[0028]8.对Mysql数据库的同步和复制,可以交给数据库管理员负责;CFD并行程序开发人员仅需了解Mysql提供的接口即可,降低了 CFD程序开发人员的学习成本;
[0029]9.实用性强,易于推广和使用。
【专利附图】

【附图说明】
[0030]图1为满足本发明条件的一种软件架构图;
[0031]图2为本发明所述方法的整体流程图;
[0032]图3为计算进程之间的通信模型图;
[0033]图4为Mysql不同数据库中的同步模型图。
【具体实施方式】
[0034]下面将结合本发明实施例中的附图,对本发明实施例中的方法进行清楚、完整的描述。所描述的实施例仅仅是本发明的一部分实施例,而不是全部。基于本发明中的实施例,本领域技术人员在没有做出创造性工作前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035]本发明为了解决现有大规模CFD并行程序的数据和日志存储难题,采用了基于分布式Mysql集群的存储方案,使大规模CFD并行程序满足高效、灵活和可靠地存储数据、日志信息的需求。
[0036]基于分布式Mysql集群存储的大规模CFD并行计算方法的具体操作过程为:
[0037]1、CFD开发人员通过Mysql提供的接口开发基于Mysql数据库存储的CFD并行计算程序;在数据存储或者日志保存上,CFD程序可采用Mysql数据库存储的方式,避免了对MPI文件I/O的直接调用,减少出错几率;
[0038]2、由系统管理员建立Mysql集群与计算节点之间的网络互通模型,并启动Mysql服务以供调用;MySql集群与计算节点应有高速或无限带宽网络连接,或者Mysql服务运行在计算节点上;Mysql服务的守护进程应当启动,并实时监听和响应连接请求;
[0039]3XFD用户配置好程序运行参数,提交作业到集群环境运行,作业系统调度CFD并行程序运行;用户可根据程序提供的接口自定义CFD并行进程运行过程中需要记录的数据、程序运行信息等;由于需要连接和对数据库进行操作,用户对Mysql数据库要有相应的账户或者权限;
[0040]4、CFD并行进程在计算过程中的通信使用MPI协议;使用该协议可加强CFD程序对硬件的适应能力,增强可拓展性;
[0041]5、CFD并行程序在计算过程中根据输入的指令,将需要保存的数据、信息和日志等存储到Mysql数据库中;由于数据存储托管给Mysql服务,形式和数据量可自由存储,无需担心对同一文件同时操作带来的覆盖问题;
[0042]6、满足退出条件后,CFD并行程序执行清理工作,退出并行计算环境,终止运行;
[0043]7、Mysql集群管理员向Mysql集群节点发起数据同步和复制请求;CFD并行进程写入到各Mysql服务节点的数据将被同步到主节点;同步工作可由专业的数据管理员完成,也可使用集群环境提供的脚本或命令完成;
[0044]8、CFD用户导出或者下载保存在Mysql数据库中的数据,用于分析和后处理。
[0045]所述CFD并行程序包括湍流模拟,流场求解,应力分析等应用。
[0046]由本发明的技术方案可见,本发明充分利用现有的MPI和Mysql技术,结合大规模CFD并行程序对数据存储和通信的需求,给出了剥离CFD程序计算和存储的实用解决方案。该方案学习成本低,能避免CFD进程并行文件读写带来的冲突。
[0047]由于使用Mysql数据库存储数据,CFD程序需要用到的数据等可预先存储到相应的Mysql数据库中。如此可进一步简化CFD程序的开发,降低模块的耦合度,可使分工更为细致和明确。
[0048]以上所述仅为本发明的实施例,凡在本发明及所附权利要求的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于,所述方法具体包括以下步骤: 步骤一:CFD并行程序初始化计算环境时,通过Mysql数据库驱动API连接到数据库,并通过数据库完成相应的初始化工作; 步骤二:CFD并行程序在计算过程中,对于区域边界信息或者全局规约信息,使用MPI协议进行计算进程间的通信。进程得到所需数据后用于数值计算; 步骤三:各进程计算后,通过Mysql连接句柄将进程的运行信息、计算数据写入Mysql数据库; 步骤四:进程同步后,判断是否满足退出条件:若是,则退出计算;否则继续迭代求解并重复步骤二到四; 步骤五:程序满足退出标准后,执行清理动作并退出并行计算环境; 步骤六:启动分布式Mysql集群中的同步和复制机制,将各节点上的数据同步合并; 步骤七^fMsyql数据库中的数据导出,用于分析和后处理。
2.根据权利要求1所述的基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于:所述步骤一的初始化过程,CFD并行进程不仅要初始化内存中的数据,还要连接到对应的Mysql数据库完成数据库的初始化。
3.根据权利要求1所述的基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于:所述步骤三中各进程的中间结果、程序运行信息等数据无需舍弃,可以存放到Mysql数据库中;除需要全局规约的数据外,进程的其他数据均可保存到Mysql数据库中用于程序结束后的分析和后处理。
4.根据权利要求1所述的基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于:所述步骤六需要在CFD并行计算程序结束后触发执行,以得到全局的中间结果和各进程计算过程中的运行信息等数据。另外,使用Mysql集群管理工具可以便利的对各个节点上的数据进行同步和合并。此过程在CFD计算程序之外,不仅缩短了 CFD程序的执行时间,而且使开发人员免于过多考虑存储细节。
5.根据权利要求1所述的基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于:所述计算过程中进程间的通信采用业界成熟的MPI方式;对程序运行信息、中间数据保存采用分布式的Mysql集群数据库管理方式。
6.根据权利要求1所述的基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于:所述方法中现有的Mysql优化技术手段均可以被采用,从而提高CFD在数据存储方面的性能。相较于原有的方法,所述方法可高效、灵活地保存程序执行中的数据和日志信息,以便计算结束后的分析和后处理。
7.根据权利要求1所述的基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于:所述方法将分布式Mysql数据库理念引入CFD并行计算,解决了 CFD并行程序中大量数据的存储问题,避免多进程对文件的直接并行读写,规避了数据覆盖的风险。
【文档编号】G06F17/30GK104036031SQ201410302690
【公开日】2014年9月10日 申请日期:2014年6月27日 优先权日:2014年6月27日
【发明者】刘铁刚, 何晓峰, 赵越 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1