串行油藏模拟器并行化的一种便利途径串行油藏模拟器并行化的一种便利途径.doc

串行油藏模拟器并行化的一种便利途径串行油藏模拟器并行化的一种便利途径.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
串行油藏模拟器并行化的一种便利途径* 赵国忠( (大庆油田有限责任公司勘探开发研究院) 摘 要 本文给出了一种借助于PETSc[1]来实现串行油藏模拟器并行化的便利途径。文中详细论述了并行策略及并行化过程中一些重要技术环节的实践考虑。黑油IMPES情况下的实现实例表明,按此途径可在短时间内搞出具有一定实用程度的并行模拟器。该途径对于其它类型的油藏模拟器如组分、热采和化学驱等也有一定的适用价值。 主题词 油藏 模拟器 并行化 途径 引 言 油藏数值模拟自从诞生之日起就一直跟随计算机硬件的发展,来满足石油开采业的技术需求,其求解规模越来越大,模拟的主要目的也已从过去的注重油藏整体动态趋势发展到研究地下流体的精细分布状况。这无疑使每次模拟的计算开销越来越大。十几年前,发达国家出现了并行计算环境(共享或分布式的),与此同时一些油藏模拟器开发者就开始研究串行模拟器的并行化。近五年来,我国石油行业先后引进了一些并行计算机,也开始了对80年代中期所引进的源码油藏模拟器的并行化探讨。然而由于并行实现对特定并行计算环境的依赖很强,加之我们对原串行模拟器的消化和理解程度也有限,实用的国产并行模拟器仍未推出。迫于油田实际应用的需要,我国只好再一次引进数值模拟技术。大庆油田、新疆油田、北京石油勘探开发研究院和胜利油田等先后引进了PVIP。但这次软件商并不出售其源码了,且售价居高不下,对用户的使用也有种种限制,如在机型、处理器个数等方面。我们将来如对硬件扩容、更新,还要不断在软件上投入。在这种情况下,实现原有串行模拟器的并行化,是摆在油藏模拟专业人员面前的一个不可回避的问题。 油藏数值模拟过程中所发生的计算可以分成耦合运算和非耦合运算两类。非耦合运算的并行只涉及程序实现技术,主要体现在数据的区域分解上,并行程序可大量沿用串行源码。而耦合运算主要发生在线性系统的求解过程中,必须使用不同于串行时的并行求解方法。因此,大型、稀疏、非对称线性系统的并行解法开发与实现是串行模拟器的并行化的技术关键所在。中国科学院并行软件研究与开发中心于1993年开始在这样的算法和实现方面都做了大量的基础工作,并以SimBestⅡ的ESPIDO串行求解器为基础研制出了并行求解器,现已在几种并行环境下成功实现了对若干大规模实例的运行测试,这在串行模拟器的并行化方面走出了一条成功之路。然而,这条路对于油藏模拟器普通开发者来说是很困难的。 美国Argonne国家实验室推出的微分方程并行求解软件包PETSc(Portable,Parallel,Extended Toolkit for Scientific Computation)的出现,使油藏模拟器开发者快速实现原有串行模拟器的并行化成为可能。对此,本文通过对PETSc部分构件的使用,以黑油模拟器之IMPES选件为例,探讨了这种可能性。愿本文的工作对有志于把串行油藏模拟器并行化的同行们有借鉴意义。 总的并行策略 油藏数值模拟计算一般分为初始化和时间循环两个阶段。初始化主要完成初始条件的设置,其发生的全部运算均是一次性的,但程序代码却不少,若搞并行也会付出很多复杂的编码工作,所以一般不对初始化部分作并行。如果并行环境是分布式的,由于单个节点内存的有限,有时也可考虑这部分的并行。本文讨论的并行化途径对于共享式并行环境或某一节点的内存能够满足实际问题初始化要求的分布式并行环境都是实用的。另外,虚拟共享技术也能弥补分布式环境下单一节点内存的不足。 串行求解的一般步骤 在谋划具体的并行策略之前,把握串行求解的一般步骤是必要的。串行油藏数值模拟计算的时间循环阶段一般遵循以下主要步骤: ⑴ 若非本次时间循环之第一时间步,则变量更新,按用户控制打印输出一些信息; ⑵ 若已达下一控制时刻,则输入控制数据,若遇STOP键词则转向第⑽步; ⑶ 时间步长的设置; ⑷ 雅可比矩阵的计算; ⑸ 井的处理; ⑹ 若走IMPES,消去非压力方程,形成单一未知量线性系统; ⑺ 网格方程与井方程的耦合,解线性系统; ⑻ 若未达最小牛顿迭代次数或不收敛,则转到第⑷步; ⑼ 若收敛或已达最大牛顿迭代次数,则转到第⑴步; ⑽ 退出时间循环,打印作业统计信息,中止程序的运行。 以上步骤仅是并行化时所必须考虑的,此外还有许多细节,如物质平衡分析和时间步截断等,这里就不触及了。 计算任务的并行分配 我们知道,计算量将主要发生在上述第⑷、⑹和⑺步。大量的实际算例表明,串行时消耗在这三步之外的计算时间不足全部时间的2%。所以要得到好的并行效率,这三步的计算及有关数据必须分配到各个并行节点上。其他部分若搞并行并不是不能实现,但为此而作出的通讯开销是相当多的,反而得不偿失。 为了尽可能减少并行编码的工作量,采取主从式(Master/Slave)

文档评论(0)

cduutang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档