力学季刊
主办单位:上海市科学技术协会
国际刊号:0254-0053
国内刊号:31-1829/O3
学术数据库优秀期刊 《中文科技期刊数据库》来源期刊
       首 页   |   期刊介绍   |   新闻公告   |   征稿要求   |   期刊订阅   |   留言板   |   联系我们   
  本站业务
  在线期刊
      最新录用
      期刊简明目录
      本刊论文精选
      过刊浏览
      论文下载排行
      论文点击排行
      
 

访问统计

访问总数:25271 人次
 
    本刊论文
基于HDF5的结构网格计算流体动力学程序并行I/O技术

  大规模计算流体动力学(CFD)计算对数据I/O能力提出了很高需求。层次式文件格式(HDF5)可有效管理大规模科学数据,并对并行I/O具有良好的支持。针对结构网格CFD并行程序,设计了其数据文件的HDF5存储模式,并基于HDF5并行I/O编程接口实现了其数据文件的并行I/O,在并行计算机系统上进行了性能测试与分析。结果表明,在使用4~32个进程时,基于HDF5并行I/O方式的写文件性能比每进程独立写普通文件的方式高6.9~16.1倍;基于HDF5并行I/O方式的读文件性能不及后者,为后者的20%~70%,但是读文件的时间开销远小于写文件的时间开销,因此对总体性能的影响较小。


  关键词: 计算流体动力学; 结构网格; 并行I/O; 层次式文件格式; I/O性能


  中图分类号:TP302.1;TP302.7


  文献标志码:A


  0引言


  计算流体动力学(Computational Fluid Dynamics, CFD)是一门综合了流体力学、计算数学、计算机等学科的交叉学科,它采用数值方法求解流体运动控制方程,获得相应的流动参数,目前已经越来越多地应用在工程中。随着所模拟的几何外形日益复杂,流动机理研究越来越精细,CFD计算对性能的需求日益增长,成为典型的高性能数值计算应用领域[1]。CFD计算对性能需求的增长不仅体现在计算量上,而且也体现在数据规模上。据估计当前流动机理研究(如湍流直接模拟)方面CFD使用的网格数达到了数十亿到上百亿量级,在实际工业应用方面CFD使用的网格规模也达到了千万量级。CFD相应的输入文件、中间文件和最终结果文件容量巨大,数据规模从吉字节(GB)级增长到了太字节(TB)级。巨大的数据量对数据I/O的性能带来巨大的挑战,如何高效管理和读写数据成为当前CFD的重要问题。


  并行I/O技术[2]是解决大规模数据输入输出性能需求的主要途径之一[3]。并行I/O就是使一个并行程序的多个进程同时访问文件中的数据,依据文件组织不同分为两类:每个进程独立访问一个文件和所有进程共同访问单一的共享文件[4]。学术界对并行I/O进行了大量的研究,主要集中在并行I/O硬件体系结构、支持并行I/O的系统软件以及应用程序层面的并行I/O技术。在应用层并行I/O方面,Pakalapati[5]基于扩展的CFD 通用符号系统(parallel CFD General Notation System,pCGNS)使用基准测试程序(benchmark)测试了CFD应用程序的并行I/O性能,文中利用pCGNS进行数据访问,在两种并行文件系统(网络文件系统NFS和并行虚拟文件系统PVFS)下分别进行并行I/O性能的测试并进行了比较,结果证明了pCGNS系统的良好性能。Horne等[6]也基于pCGNS使用两个benchmark(IOR和自研的pCGNS benchmark)对并行I/O性能进行测试,文中将pCGNS benchmark分为五类,分别从每个进程上的不同分区数对并行I/O性能进行测试,并与IOR benchmark的测试结果分别进行比较。张娟等[7]针对划分计算空间到多个计算区域并基于计算区域组织I /O的问题,设计了多级极大独立集算法实现计算区域的主进程选择及计算区域数据访问先后顺序指定,分析表明这种方法的可I /O 并行度最高,在并行度最高情况下通信量最小。颜小洋等[8]三维电磁场粒子模拟并行应用,在分布式存储系统中,采用各节点同时把数据输入输出到本地单独文件中的方式,大幅度减少数据I/O的时间。蔡昭权等[9]针对外汇数据分析应用,利用层次式文件格式(Hierarchical Data Format version 5,HDF5)[10]的I/O性能和数据类型自定义功能进行数据存储, 加快数据存储的速度,数据读写性能比MSSQL提高了80 倍左右。冯金花等[11]以Delphi与Python的混合编程方式实现了基于HDF5文件格式的数据管理系统。


  前面提到的HDF5是一种层次式数据存储格式,它支持多种科学数据类型,可较好地实现不同应用间的数据共享,并提供了高效的并行I/O机制,是解决并行计算中大量数据的快速输入输出的一种重要技术,目前HDF5被广泛应用在高性能计算领域。本文针对大规模CFD并行计算对数据I/O性能的需求,以一个结构网格CFD并行计算程序为应用背景,研究采用HDF5格式来存储多块结构网格数据,并基于HDF5的并行I/O机制实现其快速并行读写。在并行计算机系统上针对实际算例进行了性能测试,检验了该技术的有效性,分析了存在的不足,指出了进一步优化的方向。


  1.1HDF5数据格式构成


  HDF5文件有两种基本数据对象:组(groups)和数据集 (datasets)。有三种辅助对象:数据类型(datatype)、数据空间(dataspace)和属性(attribute)。HDF5文件中的数据以图的形式组织,HDF5文件与根组(“/”)一一对应,根组中包含一个或多个组,组中又可包含其他组、数据集及元数据(metadata),数据集由多个多维数据元素组成[12]。HDF5的命名数据对象(组、数据集、命名的数据类型)可以有0个或多个属性,它描述数据对象的结构、大小、数据单位等信息,与所依附的命名数据对象存储在一起。简单的HDF5对象间的层次结构如图1所示,其中椭圆表示组,矩形表示数据集,圆表示数据集的依附对象。


  HDF5是一种具有自我描述性、可扩展性、自我组织性的数据存储格式,主要用来存储各种类型的科学数据,适应于多种计算机平台,易于扩展。HDF5能够创建和存储任意类型的科学数据结构[13],如图像、多维数组、指针及文本数据等,可根据需要将这些数据类型混合存储在一个HDF5文件中,数据对象间可建立数据依赖关系,这就取消了文件系统对单个文件规模的限制。同时,HDF5利用数据分块、压缩、扩展、外部存储等策略提高数据的存储、访问和管理效率,实现数据在HDF5文件间和在应用程序间的共享。   数据描述和数据存在于同一个文件,是HDF5的主要特点之一;HDF5的另一个主要特点是支持文件级的并行读写,且支持分块数据存储,这是HDF5为支持高效数据I/O而引入的新特征。HDF5提供了高效灵活的并行I/O机制,支持聚合(collective)和独立(independent)两种并行I/O方式的数据集读写。若每个数据块以单一I/O操作进行读写操作,独立完成数据的传输,则称之为独立并行I/O;若每个数据块由所有进程共同进行I/O操作,则称为聚合并行I/O。并行HDF5实现层次[14]如图2所示,基于MPI编程的应用程序调用HDF5的并行I/O接口函数,HDF5基于MPIIO来支持并行I/O。


  2结构网格CFD并行I/O


  计算网格生成是CFD计算的前提,网格按照数据类型和网格单元的几何形状分为结构网格、非结构网格和混合网格。结构网格按照网格点的顺序进行数据存储,可以根据数组下标方便地索引和查找,数据存储开销小,并且由于结构网格具有贴体性,流场计算精度高,在CFD计算特别是高精度CFD计算中应用较多。由于HDF5格式可有效地管理科学数据,并且支持并行I/O,因此本文研究利用HDF5来存储CFD中的结构网格数据。


  本文结构网格CFD程序涉及的数据文件包括网格文件、重启动文件、网格拓扑文件、流场文件等,逻辑上将所有原始文件组织到一个HDF5文件中,以方便数据的管理。基于HDF5的CFD结构网格数据文件结构分为三层:第一层是文件层,相当于根目录;第二层是组,一个组对应一个原始文件;第三层是数据集。数据在HDF5中存储的逻辑结构如图3所示,根组中包含多个组成员,一个组仅包含一个数据集,以多维数组的形式存储相关信息。数据集具有特有的属性,包括网格块个数、各网格块名称、网格维数、每一维大小、数据类型等信息。


  在基于HDF5文件存储CFD数据文件的基础上,本文重点介绍以聚合方式[15]实现结构网格数据并行I/O的方法。写文件的步骤如图4所示,首先,所有进程并行聚合地创建一个HDF5文件和文件中组、数据集对象;然后,根据进程数分割结构网格数据,以便每个进程读写一个网格数据块;最后,向HDF5文件的数据集中写入数据。读文件步骤与写文件类似,不再赘述。


  3 性能测试与评价


  3.1实验环境


  在国防科学技术大学高性能计算应用中心一套并行计算机系统上进行性能测试。该系统包含128个计算节点,每个节点含2个Intel X5670处理器(主频2.93GHz,6核,每个核含32KB L1指令Cache和32KB L1数据Cache、256KB L2 Cache,6个核共享12MB Last Level Cache (LLC))和48GB内存,节点间通过Infiniband高速互联,点点通信带宽40Gb/s。系统采用Lustre全局并行文件系统,共有6个数据存储服务器。并行计算环境采用MPICH2,编译器为Intel FORTRAN Compiler version 11.1,HDF5库版本为hdf51.8.8。


  3.2测试结果


  本文的测试程序是一个三维结构网格CFD并行程序[16],主要考察其网格生成阶段的写网格文件性能和初始化阶段的读网格文件性能。测试所用网格规模分别为0.75亿和2.99亿,数据类型为单精度浮点数。表1给出了两种方式下两种网格规模时的数据文件大小,其中Native方式的数据文件大小是全部进程的数据文件大小之和。可以看到,由于在HDF5和Native方式下数据存储方式均为二进制格式,两种方式下的数据文件大小基本相同。数据均存储在数据存储服务器上,并行CFD程序运行在计算节点(下面简称节点)上,通过Lustre并行文件系统访问这些数据。


  将相同数目的进程分配到不同数目的节点上时,并行I/O性能也会出现差异。图8~9给出了网格规模为0.75亿时相同进程不同节点数时HDF5方式和Native方式写文件时间对比。图10~11给出了网格规模为2.99亿时相同进程不同节点数时HDF5方式和Native方式写文件时间对比。总体上看,HDF5方式下,相同进程数时,所用节点数目越多,写文件时间越长,这种趋势在数据规模较大时更明显,因为以HDF5聚合方式进行并行I/O时,进程间需要同步与通信,而并行计算机系统的节点间同步与通信开销大于节点内同步与通信开销,节点数越多则总的进程间同步与通信开销越大,从而导致时间增加。然而在Native方式下,相同进程数时,通常所用节点数越多写文件时间越短,这是由于Native方式各个进程独立地写各自的文件,不存在同步与通信开销,将相同进程分布到更多节点还使得进程间的资源竞争减少,因此时间减少。


  从上述数据还可看到,对相同数据规模,两种方式下读文件的时间均比写文件的时间短得多,故写文件的时间对整体性能的影响更大。另外,在CFD计算中,对数据文件的访问方式往往是一次读(读初始网格数据或重启计算文件)、多次写(写中间计算结果文件、重启动文件等),故提高写文件性能具有特别的价值。


  4结语


  本文针对结构网格CFD并行计算中对数据I/O能力的需求,研究了HDF5数据存储格式及其并行I/O技术,基于HDF5实现结构网格CFD程序网格数据的并行I/O。在并行计算机系统上进行了性能测试,结果表明基于HDF5并行I/O方式的写文件性能比每进程独立写普通文件的并行I/O方式高约6.9~16.1倍,基于HDF5并行I/O方式的读文件性能不及后者,约为后者的20%~70%,但是读文件的时间开销远小于写文件的时间开销。本文工作表明HDF5在结构网格CFD程序并行I/O中的应用前景。


  参考文献:


  [1]张月玲,白文。航空高性能计算和数据处理需求评论[J]. 航空计算技术, 2009, 39(1):146-150.   [2]DONGARRA J, FOSTER I, FOX G. 并行计算综论[M ]. 莫则尧, 陈军, 曹小林, 等译。 北京: 电子工业出版社, 2005.


  [3]陈志刚,曾碧卿。 HPPHM:多维数据并行I/O存储新策略及其性能研究[J]. 通信学报, 2007, 28(4):57-64.


  [4]杨伟光。并行程序中不同I/O实现方式的设计与I/O性能[D]. 呼和浩特: 内蒙古大学, 2006.


  [5]PAKALAPATI P D. Benchmarking parallel I/O performance for computational fluid dynamics applications[C]// Proceedings of the 43rd AIAA Aerospace Sciences Meeting and Exhibit. Washington, DC: AIAA, 2005.


  [6]HORNE K, BENSON N.An efficient and flexible parallel I/O implementation for the CFD general notation system[R]. Salt Lake City: Utah State University, Center for High Performance Computing, 2009.


  [7]张娟, 陆林生。 应用层并行I/O效率研究[J]. 计算机应用, 2009, 29(1): 9-11.


  [8]颜小洋,张伟文,布社辉,等。计算与通信重叠和并行I/O在粒子模拟中的应用[J]. 计算机应用,2011, 31(S1): 33-39.


  [9]蔡昭权, 吴文忠, 卢庆武,等。 利用HDF5 和Esper 的高效外汇数据分析系统[J]. 计算机工程与科学,2011,33(4):159-163.


  [10]RITTER M. Introduction to HDF5 and F5[D]. Innsbruck: LeopoldFranzens University of Innsbruck, Institute of Computer Science,2007.


  [11]冯金花,陈建政。基于HDF5文件格式的数据管理系统[J]. 计算机与数字工程, 2011, 39(2): 102-103.


  [12]沈卫超,曹立强,夏芳,等。面向数值模拟数据的HDF5性能优化[J].计算机研究与发展, 2012, 49(S1): 314-318.


  [13]YANG M Q, KOZIOL Q. Parallel HDF5 hints[R]. UrbanaChampaign: The HDF Group, 2010.


  [14]YANG K. Parallel HDF5 introductory tutorial[R]. UrbanaChampaign: The HDF Group, 2008.


  [15]YANG M Q, KOZIOL Q. Using collective IO inside a high performance IO software package — HDF5[R]. UrbanaChampaign: University of Illinois at Urbana Champaign, National Center for Supercomputing Applications, 2010.


  [16]CHE Y G, XU C F, WU J P, et al. Optimization and evaluation of a low mach number flow simulator on tianhe1A supercomputer[C]// Proceedings of the 23th International Conference on Parallel Computational Fluid Dynamics. Barcelona: IEC, 2011.


特别说明:本站仅协助已授权的杂志社进行在线杂志订阅,非《力学季刊》杂志官网,直投的朋友请联系杂志社。
版权所有 © 2009-2024《力学季刊》编辑部  (权威发表网)   苏ICP备20026650号-8