面向大规模复杂数据应用领域的并行I/O优化方法与流程

文档序号:15850154发布日期:2018-11-07 09:43阅读:362来源:国知局
面向大规模复杂数据应用领域的并行I/O优化方法与流程

本发明涉及计算机技术领域,更具体地,涉及一种面向大规模复杂数据应用领域的并行i/o优化方法。

背景技术

对于大规模复杂数据的并行i/o,在大部分高性能计算系统上都使用图1所示的四层并行i/o架构进行实现:并行应用程序,phdf5(parallelhdf5,并行hdf5),mpi-io以及lustre文件系统。hdf5(hierarchicaldataformat5,分层数据格式)为科学计算提供了一种新型的、能够表示各种复杂数据对象和元数据的数据格式。并行hdf5(parallelhdf5,phdf5)中提供了对并行i/o的支持,hdf5中的并行i/o库是基于mpi-io实现的。mpi(messagepassinginterface,消息传递模型)是一种规范,是消息传递并行程序设计的标准之一,mpi-io中提供了对并行i/o集合和非集合两种模式的支持,mpi-io中对集合i/o使用了两阶段i/o的方式进行优化。并行文件系统则是底层的文件系统,并行文件系统维护文件的逻辑空间,并提供对文件的高效访问方式,lustre并行文件系统是在高性能计算机上应用最普遍的文件系统。

在这一四层架构中,有以下对并行i/o的优化方案:howisonm[1]等人在mpi-io和hdf5层中进行并行i/o性能优化。在hopper、franklin和jaguarpf三个高性能计算机上对三个科学计算应用进行手动的优化。对mpi中代理进程数、代理缓存以及hdf5中的分块大小、对齐和元数据缓存这几个参数进行了手动的配置和调优,实现了比默认参数配置更好的并行i/o性能。behzadb[2,3]使用并行文件系统的条带数、条带大小和mpi层的代理进程数、代理缓存这四个参数,根据使用一组运行i/o内核作为训练集的实际测量结果,生成一个非线性回归模型。使用此模型来预测提供有效i/o性能的前20个可调参数值,并重新运行i/o内核,以在当前条件下选择最佳参数集作为未来运行相同i/o的可调参数核心。该方案是一种自动对并行i/o参数进行调整的方法,作者在三个不同的高性能计算系统上对三个科学计算应用分别建立模型并进行参数调整,最终比默认参数配置达到了4倍以上的并行i/o性能。

1.上述方案只是针对某种应用或者某一种运行环境所做的优化,无法保证优化方案在不同运行环境上不同应用中的良好的i/o性能。不同运行环境中,计算机的节点数、节点内存、并行文件系统的ost、oss数目以及条带大小等配置各不相同,不同应用使用的数据结构不同,这就会导致优化方案对并行i/o在不同环境中的影响不同,从而无法保证良好i/o性能。如上述方案[1]中,hopper、franklin和jaguarpf三个高性能计算机上分别对应用进行i/o优化,而在这三个系统上的优化方案各有不同,优化方案不能保证其它环境和应用中的i/o性能。

2.上述方案[2][3]中,对大规模数据的并行i/o优化性能不够好。方案[2][3]中,采取经验模型和机器学习算法对i/o性能建立了非线性预测模型。但是,由于训练数据有限,形成的模型会出现过拟合的情况,训练得到的模型对大规模并行i/o预测并不准确,也无法在不同的程序运行环境中使用。而且需要取性能模型拟合的前20位的参数配置才能获得优化的i/o性能。

3.上述方案中[2][3]中,进行i/o优化时没有考虑并行i/o栈中更上层的hdf5中的参数。hdf5层中存在着影响文件存储、布局策略的参数,如设置文件布局的分块以及设置文件存储的对齐参数等。这些参数会对并行i/o的性能产生明显的影响,对这些参数进行合理设置,可以提升并行i/o的性能。

参考文献:

[1]howisonm,koziolq,knaakd,etal.tuninghdf5forlustrefilesystems[r].ernestorlandolawrenceberkeleynationallaboratory,berkeley,ca(us),2010.

[2]behzadb,bynas,wildsm,etal.improvingparalleli/oautotuningwithperformancemodeling[c]//proceedingsofthe23rdinternationalsymposiumonhigh-performanceparallelanddistributedcomputing.acm,2014:253-256.

[3]behzadb,bynas,wildsm,etal.dynamicmodel-drivenparalleli/operformancetuning[c]//clustercomputing(cluster),2015ieeeinternationalconferenceon.ieee,2015:184-193.



技术实现要素:

本发明针对并行i/o架构中hdf5以及mpi-io层设计了一个自动调优方法。自动调优方法中最重要的两个模块分别为参数选取模块和参数应用模块。参数选取模块可以根据设计好的策略以及实际i/o运行情况选取使得i/o性能得到优化的参数,而参数应用模块可以从参数选取模块中获取优化后的参数,并通过动态链接的方式将参数应用于原本的应用程序中。参数选取模块使用了帮助理解集合操作的i/o性能模型,该性能模型在不同环境中通用。这样,在不同系统、不同应用上只要应用该方案,就可以获取合适的i/o参数设置,从而获取更好的i/o性能。

为实现以上发明目的,采用的技术方案是:

面向大规模复杂数据应用领域的并行i/o优化方法,包括以下步骤:

s1.并行应用在运行时,参数应用模块将参数选取模块中选取的参数应用到运行的程序中,而后计算机将运行的参数和i/o性能存入i/o参数数据库中;

s2.参数选取模块从i/o参数数据库中提取mpi-io和并行文件系统参数进行调优,并使用遗传算法对hdf5中的参数进行调优;

s3.参数应用模块从参数选取模块中获取优化后的参数,并通过动态链接的方式将参数应用于原本的应用程序中;

s4.重复s2、s3。

与现有技术相比,本发明的有益效果是:

(1)本发明可以对不同系统不同应用上并行i/o性能进行自动化调优。

本发明针对目前在各类高性能计算机上广泛使用的并行应用、hdf5、mpi-io、并行文件系统四层并行i/o架构,在hdf5以及mpi-io层上设计了一个自动调优框架。自动调优框架中参数选取模块可以根据性能模型以及实际i/o运行情况选取使得i/o性能得到优化的参数,而参数应用模块可以从参数选取模块中获取优化后的参数,并通过动态链接的方式将参数应用于原本的应用程序中。参数选取模块使用了帮助理解集合操作的i/o性能模型,该性能模型在不同环境中通用。这样,在不同系统、不同应用上只要应用该方案,就可以获取合适的i/o参数设置,从而获取更好的i/o性能。

(2)本发明可以在较短时间内对i/o性能进行较为全面的调优。

本发明对mpi-io中的两阶段i/o建立了一个帮助理解集合操作i/o的性能模型。该模型综合考虑mpi-io层提供的代理进程数,代理进程缓存大小,以及lustre文件系统提供的条带数(即ost的数目)三个参数,该i/o性能模型是根据两阶段i/o的运行过程进行建模,可以应用在更大规模的并行i/o中。同时,在调优的过程中应用到了一些参数相关性,使用该方法进行调优,可以很快地获取足够好的参数设置。此外,本发明还考虑到了hdf5层中的参数,可以进行对并行i/o性能进行更全面的优化。

附图说明

图1并行i/o架构的示意图。

图2并行i/o调优方法的流程图。

图3两阶段i/o示意图。

图4lustre文件系统示意图。

图5mpi进程访问ost示意图。

图6hdf5数据分块示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

以下结合附图和实施例对本发明做进一步的阐述。

实施例1

本发明中的对并行i/o自动调优方法流程如图2所示,其中参数应用模块可以从参数选取模块中获取优化后的参数,并通过动态链接的方式将参数应用于原本的应用程序中;参数选取模块首先根据本发明中提出的模型进行调优,而后使用遗传算法对hdf5中的参数进行调优;i/o参数数据库可以存储不同i/o参数组合以及它们的性能。并行应用在运行时,参数应用模块将参数选取模块中选取的参数应用到运行的程序中,而后计算机将运行的参数和i/o性能存入i/o参数数据库中,而后参数选取模块从i/o参数数据库中提取数据并进行调优。

mpi-io中对集合操作的优化使用两阶段模式:两阶段i/o通过选取一些进程作为数据代理进程,这些进程将所有进程要请求的不连续数据段合成连续的数据段,然后从文件中将连续的数据段读入这些进程的缓存中,再将每一段数据发给请求这段数据的进程,如图3所示。两阶段i/o将不连续的i/o请求转换成连续的i/o请求,因此提升了i/o的性能,但是需要额外的进程间通信来完成。

lustre系统由以下五个基本组件构成:元数据服务器(metadataserver,mds),元数据目标(metadatatarget,mdt),对象存储服务器(objectstorageserver,oss),对象存储目标(objectstoragetarget)以及客户端(client)。这些组件通过高速网络(如infiniband)相互连接形成一个文件系统。lustre文件系统中使用条带化机制,其中涉及两个参数:条带数(stripecount)以及条带大小(stripesize)。条带数表示将文件存放在几个ost上,而条带大小表示在ost上一个块的大小。如图4所示,文件a大小为160mb,被分布在2个ost上,而每个ost上的条带大小为32mb。

并行i/o中,mpi-io与lustre并行文件系统相接,mpi的数据代理进程从并行文件系统中的ost中获取数据。如图5所示,为了减少进程对ost的争用,在mpi-io中,会使得代理进程访问数据尽可能位于同一个ost上。通常,代理进程数量与ost数量在一定比值范围内,可以使并行i/o性能达到最优。

通过以上的分析,可以对mpi层和并行文件系统层建立如(1)所示的性能模型:

其中,time为执行i/o所需的时间,β为硬启动所需的时间,f为读写文件的大小,a为mpi-io两阶段i/o中i/o代理数,s为mpi-io中每个代理进程的缓存大小,就是对文件进行i/o时要进行集合操作的次数。iospeed为i/o代理从文件系统中读数据或向其写数据的速度,shufflespeed为i/o代理向其他进程发送或从其他进程接收数据的速度。re代表在执行写操作时为2,读操作时为1,因为进行写操作需要将数据读入内存而后再将修改结果写入文件系统中,而读操作仅需将数据读入内存即可,re*s表示每次i/o中代理进程要从文件系统中传输的数据量。ex为mpi两阶段i/o中进程间需要交换的数据比例,ex*s为需要交换的数据量。根据实验表明,在lustre文件系统中的条带大小与mpi代理进程中的缓存大小一致时,i/o性能可以达到最高,因此在本性能模型中不考虑条带大小。(1)进行化简后如(2)所示:

根据预实验,shufflespeed为与a和s相关的函数,且在s取到某一值时,不论a,c取何值,shufflespeed的值将会达到最大,这时i/o性能将会达到最高。而对于iospeed而言,根据预实验结果,是一个与a,c相关的函数,且在的值在区间[0.75,1.25]之内,取值最大。将此结果应用于(2)中,可得公式(3)

因此在调优时,可以分为两步:第一步先设置代理进程数a和lustre文件系统的条带数c为默认值,调整代理进程的缓存大小s的值,使time最小。对缓存大小s的取值从最小值开始,而后对其加倍,直到最大允许值。由于i/o代理进程的shufflespeed大致相等,因此可以认为这样的s对每个代理进程都有效。第二步对代理进程数a以及条带数c同时进行调整,代理进程的缓存大小s为第一步中调优结果。将a/c保持在[0.75,1.25]间,从a,c最小值开始,而后加倍,直至达到整体性能的最优值。根据这样的搜索策略,可以在合理时间内找到优化的i/o参数。

hdf5(hierarchicaldataformat5,分层数据格式)是一种新型的科学计算数据格式,它能够表示非常复杂的数据对象和各种元数据。在hdf5中,存在如下对并行i/o有较大影响的参数:

块大小(chunksize)和维度:分块存储,顾名思义,就是将hdf5数据集中的数据存储在固定大小的块中,每个块在文件中都是连续的,但是数据集中的块不一定连续存储。图6表示一个采用分块为3*3,大小为9*9的数据集。

元数据缓存(metadatacache):元数据包含了数据类型,数据空间,以及hdf5中的属性。在大规模cfd模拟中,元数据的数量很大;而且在模拟过程中,由于需要进行不断地计算、保存中间结果,会出现大量读写元数据的情况。但是,元数据所占空间很小,在磁盘上存储分散,因此对元数据的读写属于大量小的、分散的数据i/o。在实际cfd模拟过程中,大量的元数据读写会严重影响i/o的性能。

为了解决上述问题,hdf5采用了元数据缓存策略,程序可以控制高速缓存的运行,并临时禁用高速缓存中的移除功能。缓存机制使用链接的哈希表完成对元数据缓冲区的索引,使用lru策略来选择要从缓冲区中移除的元数据。元数据缓冲区会尝试移除缓冲区中的元数据条目以尽可能保持其大小不大于程序设置的最大值。可以通过合理设置元数据缓存,或暂时关闭元数据移除功能,从而提升i/o性能。

对齐特性:在hdf5库中,hdf5文件中的数据通常尽可能紧密地组合在一起,这样可以获得更高的存储效率。但是,在文件进行读写时,在磁盘上通常会一次性获取一整个扇区中的数据。因此,如果将文件中一些小的块对齐到特定的字节边界上时,在并行读写时可以达到更好的性能。该参数是在文件存取特性表中进行设置的。对齐特性有两个参数,阈值(threshold)和对齐(alignment)边界。任何大于或等于阈值字节的文件对象将在对齐倍数的地址上对齐。地址是相对于用户块的结尾;通过从绝对文件地址中减去用户块大小,然后将地址调整为对齐倍数来计算文件的最佳性能。

在本发明中,参数选取模块在根据(3)将参数a,c,s调整完毕后,再对分块大小、对齐和元数据缓存进行调整,该调整使用遗传算法,分块大小取值在10mb-2gb之间,对齐参数的取值(1,1)-(16kb,32mb)之间,元数据缓存取值在2mb-32mb之间,并关闭元数据移除。最终选出较优的参数通过参数应用模块应用于并行程序的i/o中,可以达到良好的i/o性能。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1