[发明专利]一种CFD并行计算方法有效
| 申请号: | 201910054745.9 | 申请日: | 2019-01-21 |
| 公开(公告)号: | CN109828841B | 公开(公告)日: | 2021-02-12 |
| 发明(设计)人: | 胡志远;史勇杰;徐国华;杨玉成;路思佳 | 申请(专利权)人: | 南京航空航天大学 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50 |
| 代理公司: | 北京高沃律师事务所 11569 | 代理人: | 程华 |
| 地址: | 210000 江*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 cfd 并行 计算方法 | ||
本发明公开一种CFD并行计算方法,通过创建计算节点和管理节点,各计算节点打开接收端口、发送数据信息以及接收其他计算节点发送的数据信息,直至所有计算节点接收完数据信息;管理节点打开接收端口并接收计算节点发送的数据信息,对数据信息进行统计,得到统计信息;根据统计信息判断管理节点是否接收所有计算节点发送的信息,能够并行进行任务的自动分配,提高求解速度,一个求解步骤仅打包通信一次,降低了通信频率;使用了先开启接收,再处理,最后发送的流程,逻辑上避免死锁的出现;加权剖分方法仅需少量改动就将原串行求解改为新的并行求解,且计算节点间的通信为去中心化的点对点通信,能够降低通信量并缩短了通信时间。
技术领域
本发明涉及CFD计算领域,特别是涉及一种CFD并行计算方法。
背景技术
使用CFD计算可以从离散化角度,更精确的模拟物理现象发生时的诸多细节特征。但是CFD计算是一种CPU密集型任务,同时也是内存密集型任务;且面对日趋增长的精度要求所带来的网管量的增加,CFD求解计算所耗费的时间可达数周甚至数月。关于CFD并行计算,现有方法通常依赖如下两类技术:1)OpenMP:由编译器支持,仅需少量代码改动,即可实现并行,适于单机多核并行;2)MPI:一个通信协议,需要求解器代码编写时显式调用,可用于多机多核并行。
但是,这两种主流方案都存在一定的问题。对OpenMP而言,由于CFD程序的高度耦合性,并不太适于如图像处理这样简单的并行化;且对于大型计算案例,其内存占用将超过单机内存极限,因此无法处理大型计算案例。而对于MPI,其作为通用的并行通信库,确实能够解决CFD的并行,但其开发调试都颇具难度不宜实现,且有时可因为数据处理关系不合理而导致死锁,这对专注于求解代码开发而编程能力欠佳的CFD从业人员而言是很严重的问题。
总之,现有CFD并行,依赖特定技术如OpenMP或MPI,或不适于CFD并行使用,或通讯不方便实现,容易出现死锁,且针对CFD程序的并行化,计算任务的分配,计算节点的组织与管理,节点间的通讯等问题并未有简单易用方案,导致CFD并行求解效率低下。
发明内容
本发明的目的是提供一种CFD并行计算方法,能够提高CFD并行求解的效率。
为实现上述目的,本发明提供了如下方案:
一种CFD并行计算方法,包括:
任意选择一个流场为研究对象;
对所述研究对象进行建模,得到网格模型,所述网格模型包括一个或多个网格块文件;
运行CFD并行程序,并在所述CFD并行程序中创建管理节点;
根据所述管理节点和所述网格块文件,构建网格拓扑结构;
获取计算任务;
根据所述计算任务对所述网格拓扑结构进行加权剖分,得到局部网格及数据交换通讯索引;
根据所述局部网格及数据交换通讯索引,创建计算节点;
所述计算节点接收所述管理节点发送的初始化数据,并对所述初始化数据进行预处理;
各所述计算节点打开接收端口、发送数据信息以及接收其他所述计算节点发送的数据信息,直至所有所述计算节点接收完数据信息;
所述管理节点打开接收端口并接收所述计算节点发送的数据信息,对所述数据信息进行统计,得到统计信息;
根据所述统计信息判断所述管理节点是否接收所有所述计算节点发送的信息;
若是,则各所述计算节点将自身的计算信息发送至所述管理节点;
所述管理节点对所述计算节点发送的计算信息进行合并处理,得到合并信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910054745.9/2.html,转载请声明来源钻瓜专利网。





