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

技术编号:10418523 阅读:317 留言:1更新日期:2014-09-12 10:37
本发明专利技术提供了一种分布式Mysql集群存储大规模CFD并行计算方法,涉及到多计算节点上协作进程间的通信和数据存储:每个计算节点上的CFD进程通过Mysql驱动API连接到数据库,从数据库中获取初始数据用于计算;CFD进程在计算过程中使用MPI协议通信,交换在区域边界的数据或者全局规约信息;对每个迭代步上的数据,进程通过Mysql连接句柄将数据写入数据库;CFD并行程序计算结束后,Mysql集群同步得到计算过程中的完整数据。与现有的CFD并行计算方法相比,本发明专利技术充分利用了开源的Mysql数据库对数据存取的高性能和高可靠性,使CFD并行程序可灵活、完整的保存计算过程中的各种信息和数据。本发明专利技术简化了开发流程,减少CFD并行程序执行的墙上时间,实用性强且易于推广。

【技术实现步骤摘要】
基于分布式Mysq I集群存储的大规模CFD并行计算方法
本专利技术涉及大规模CFD程序并行的实现方法,尤其是CFD并行程序中的数据存储方式。
技术介绍
在流体模拟和计算领域,随着问题规模的增大以及对数据精度要求的提高,三维CFD模拟的网格数量已经从千万级快速到达数十亿甚至千亿的量级。由此带来的庞大计算量需要高性能计算才有可能在一个可接受的时间范围内给出程序的计算结果。目前,并行计算是高性能计算的关键和热点,而MPI是用于并行进程间通信的协议。MPI技术是分布式集群中跨主机进程通信的标准接口,得到了各计算机厂商和软件开发人员的大力支持。基于MPI方式的I/O已成为CFD程序的标准做法。然而MPI提供的接口对文件的读写有严格的限制和要求,并且容易因为并发操作造成数据上的读写冲突。对于大规模CFD并行程序中的一些全局信息,诸如全局误差、时间步长,一般是规约到主进程来打印。进程计算过程中产生的中间数据,通常的CFD并行程序会因为记录的繁琐而直接舍弃。如若通过MPI接口采用文件I/O方式记录,因其对格式要求严格,从而无法灵活的记录和存储,这将导致进程运行过程中的大量信息被丢弃,从而不利于对程序的运行情况进行跟踪调试和性能分析。为了方便程序的跟踪调试,以及记录大规模CFD并行程序运行中产生的大量运行数据,需要一个对运行程序信息记录和存储的可靠解决方案。该方案应当保证CFD程序的健壮性,同时还满足开发的便利性和存储的可靠性。
技术实现思路
本专利技术提出了一种基于Mysql集群存储的大规模CFD并行计算方法。该方法使大规模问题的CFD并行程序能灵活、高效地记录进程运行中的大量运行信息和中间数据。通过该方法不仅能避免CFD程序多进程对文件的并行读写造成的冲突,并且能够利用已有成熟的Mysql优化技术手段,提高CFD程序的整体性能。为了实现该方法,本专利技术对CFD程序的运行环境有新的要求:需要有可连接的Mysql集群数据库。CFD进程将数据交由Mysql集群数据库托管,计算和数据存储剥离的方式将有助于CFD程序整体性能的提升。对于Mysql集群,可行的一个解决方案是在每个计算节点上运行着Mysql守护进程以供CFD进程连接和操作;另一种方案是在非计算节点上运行Mysql数据库,数据库服务器通过高速网络与计算节点连接。由于需要对数据库进行操作,该方法要求对Mysql集群的数据库或者数据表有增加、删除、修改、查询等权限。使用Mysql集群作为数据载体,本专利技术的技术方案包括以下流程:DMysql数据库预先启动并稳定运行;2) CFD并行程序启动运行,完成数据初始化工作;3) CFD进程通过分配的Mysql主机名、用户名和密码,连接到Mysql数据库,完成在数据库上的初始化工作;4) CFD程序进行并行计算,计算过程中的边界信息交换通过MPI通信协议完成;5)完成一次迭代计算后,进程将运行信息和中间数据保存到Mysql数据库中;6) CFD进程间进行同步,传递全局规约数据和信息,检测是否满足程序退出条件;7)如若程序满足结束条件,则完成清理工作,退出并行计算环境,CFD程序终止运行;否则跳转到4);8)启动Mysql集群的数据同步和合并,聚合CFD程序写入到各数据库上的数据;9)将数据导出用于结果分析和后处理。对于CFD程序中需要记录的信息,用户可在配置文件中指定。CFD程序通过用户配置,将所需数据写入数据库。本专利技术提出的并行计算方法不仅适用于同构计算集群,也适用于CPU+GPU组成的异构计算体系。本专利技术中Mysql集群无需是对称或者同构方式,只需保证能让CFD程序的并行进程高速访问并进行数据读写即可。本专利技术技术方案带来的有益效果:1.将CFD并行程序开发过程中的存储和计算模块剥离,提高了 CFD程序开发的效率,减少了引入Bug的几率;2.避免了多进程对文件的并发读写操作,规避了读写文件时数据覆盖风险;3.CFD进程可自由、灵活和高效地的记录大量的程序运行信息和中间产生的数据,方便计算结束后对程序的跟踪调试、性能分析;4.能够充分利用Mysql已有的优化技术手段提高数据存储性能和可靠性;5.解耦了 CFD计算和存储模块,使CFD程序开发更为轻量级,开发人员专注于算法的实现即可;6.大规模CFD问题并行计算过程中,可以减少进程间的通信量,降低网络延迟;7.能够提高CFD程序的整体性能,减少CFD程序的运行时间;8.对Mysql数据库的同步和复制,可以交给数据库管理员负责;CFD并行程序开发人员仅需了解Mysql提供的接口即可,降低了 CFD程序开发人员的学习成本;9.实用性强,易于推广和使用。【附图说明】图1为满足本专利技术条件的一种软件架构图;图2为本专利技术所述方法的整体流程图;图3为计算进程之间的通信模型图;图4为Mysql不同数据库中的同步模型图。【具体实施方式】下面将结合本专利技术实施例中的附图,对本专利技术实施例中的方法进行清楚、完整的描述。所描述的实施例仅仅是本专利技术的一部分实施例,而不是全部。基于本专利技术中的实施例,本领域技术人员在没有做出创造性工作前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术为了解决现有大规模CFD并行程序的数据和日志存储难题,采用了基于分布式Mysql集群的存储方案,使大规模CFD并行程序满足高效、灵活和可靠地存储数据、日志信息的需求。的具体操作过程为:1、CFD开发人员通过Mysql提供的接口开发基于Mysql数据库存储的CFD并行计算程序;在数据存储或者日志保存上,CFD程序可采用Mysql数据库存储的方式,避免了对MPI文件I/O的直接调用,减少出错几率;2、由系统管理员建立Mysql集群与计算节点之间的网络互通模型,并启动Mysql服务以供调用;MySql集群与计算节点应有高速或无限带宽网络连接,或者Mysql服务运行在计算节点上;Mysql服务的守护进程应当启动,并实时监听和响应连接请求;3XFD用户配置好程序运行参数,提交作业到集群环境运行,作业系统调度CFD并行程序运行;用户可根据程序提供的接口自定义CFD并行进程运行过程中需要记录的数据、程序运行信息等;由于需要连接和对数据库进行操作,用户对Mysql数据库要有相应的账户或者权限;4、CFD并行进程在计算过程中的通信使用MPI协议;使用该协议可加强CFD程序对硬件的适应能力,增强可拓展性;5、CFD并行程序在计算过程中根据输入的指令,将需要保存的数据、信息和日志等存储到Mysql数据库中;由于数据存储托管给Mysql服务,形式和数据量可自由存储,无需担心对同一文件同时操作带来的覆盖问题;6、满足退出条件后,CFD并行程序执行清理工作,退出并行计算环境,终止运行;7、Mysql集群管理员向Mysql集群节点发起数据同步和复制请求;CFD并行进程写入到各Mysql服务节点的数据将被同步到主节点;同步工作可由专业的数据管理员完成,也可使用集群环境提供的脚本或命令完成;8、CFD用户导出或者下载保存在Mysql数据库中的数据,用于分析和后处理。所述CFD并行程序包括湍流模拟,流场求解,应力分析等应用。由本专利技术的技术方案可见,本专利技术充分利用现有的MPI和Mysql技术,结合大规模CFD并行程序对数据存储和通信的需求,给出了剥离C本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201410302690.html" title="基于分布式Mysql集群存储的大规模CFD并行计算方法原文来自X技术">基于分布式Mysql集群存储的大规模CFD并行计算方法</a>

【技术保护点】
基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于,所述方法具体包括以下步骤:步骤一:CFD并行程序初始化计算环境时,通过Mysql数据库驱动API连接到数据库,并通过数据库完成相应的初始化工作;步骤二:CFD并行程序在计算过程中,对于区域边界信息或者全局规约信息,使用MPI协议进行计算进程间的通信。进程得到所需数据后用于数值计算;步骤三:各进程计算后,通过Mysql连接句柄将进程的运行信息、计算数据写入Mysql数据库;步骤四:进程同步后,判断是否满足退出条件:若是,则退出计算;否则继续迭代求解并重复步骤二到四;步骤五:程序满足退出标准后,执行清理动作并退出并行计算环境;步骤六:启动分布式Mysql集群中的同步和复制机制,将各节点上的数据同步合并;步骤七:将Msyql数据库中的数据导出,用于分析和后处理。

【技术特征摘要】
1.基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于,所述方法具体包括以下步骤: 步骤一:CFD并行程序初始化计算环境时,通过Mysql数据库驱动API连接到数据库,并通过数据库完成相应的初始化工作; 步骤二:CFD并行程序在计算过程中,对于区域边界信息或者全局规约信息,使用MPI协议进行计算进程间的通信。进程得到所需数据后用于数值计算; 步骤三:各进程计算后,通过Mysql连接句柄将进程的运行信息、计算数据写入Mysql数据库; 步骤四:进程同步后,判断是否满足退出条件:若是,则退出计算;否则继续迭代求解并重复步骤二到四; 步骤五:程序满足退出标准后,执行清理动作并退出并行计算环境; 步骤六:启动分布式Mysql集群中的同步和复制机制,将各节点上的数据同步合并; 步骤七^fMsyql数据库中的数据导出,用于分析和后处理。2.根据权利要求1所述的基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于:所述步骤一的初始化过程,CFD并行进程不仅要初始化内存中的数据,还要连接到对应的Mysql数据库完成数据库的初始化。3.根据权利要求1所述的基于分布式Mysql集群存储的大规模CFD并行计算方法,其特征在于:所述步骤三中各进程的中间结果、程序运行信息等数据无需舍弃,可以存放到Mysql数据库中;除需要全局规约的数据外,进程...

【专利技术属性】
技术研发人员:刘铁刚何晓峰赵越
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

网友询问留言 已有1条评论
  • 来自[四川省成都市电信] 2014年12月04日 17:51
    并行计算或称平行计算是相对于串行计算来说的它是一种一次可执行多个指令的算法目的是提高计算速度及通过扩大问题求解规模解决大型而复杂的计算问题所谓并行计算可分为时间上的并行和空间上的并行时间上的并行就是指流水线技术而空间上的并行则是指用多个处理器并发的执行计算
    0
1