一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种通信支撑环境的初始化方法与流程

2022-03-22 20:18:17 来源:中国专利 TAG:


1.本发明涉及一种通信支撑环境的初始化方法,属于高性能计算技术领域。


背景技术:

2.大规模集群环境下通常利用作业管理系统完成系统资源的调度、分配与管理。用户根据并行程序的资源需求调用作业管理接口,作业系统按需申请资源,并将资源列表和必要的信息以约定的数据结构提交给通信支撑环境,通信支撑环境根据作业系统提供的信息完成初始化,为进程间通信做好准备。
3.进程间通信需要基于包含一系列硬件资源和软件资源构成的通信上下文。硬件资源即指通信队列资源,包括发送队列、接收队列以及完成队列等物理资源,每一类物理资源均需占用相应的内存空间;同时,上层通信接口和底层消息库均需维护一系列数据结构,以实现资源管理服务,达到对上述物理资源的高效管理与利用。此外,还需要申请一些缓冲,用于存放用户消息请求以及实现短消息的预投递,因此任意两个进程间的通信通路均需要一定量的内存空间,该部分空间随进程规模扩大而增大。
4.当前许多面向高性能计算领域的处理器均支持一定范围的共享内存,基于共享内存,处理器内不同计算资源可以实现数据交互。共享内存的合理使用可有效提高处理器内的数据复用程度,降低整个芯片的通信需求,进而提升性能。正是基于上述考虑,一些实际应用中并非每个进程都需参与消息传递,而是若干进程基于实际任务划分需求,利用共享内存实现协同运算,而后由少量进程完成数据交互。
5.通信支撑环境作为大型机群上的公共支撑环境,需要满足不同用户的需求,支持各种可能出现的、符合规范的通信需求。因此,通信支撑环境通常要求并行程序的每个进程都必须调用初始化接口,为可能发生的消息传递做好软硬件准备,初始化过程中,上层通信接口及底层消息库需创建并维持诸多数据结构和缓冲空间,以实现并满足并行程序的通信需求,这部分内存开销非常可观,而且其中部分开销还会随着进程数扩大而不断增大。然而并行程序中并非每个进程都有通信需求,尤其是对于有共享内存的体系结构而言,每个处理器只需要个别进程收发消息即可,其余进程的初始化只会带来内存的浪费和进程规模的扩大,并没有实际意义。这会导致应用中实际无通信需求的进程也被迫申请物理资源、占用内存和管理数据结构,扩大了进程规模,造成内存空间和物理资源的浪费。一些应用对内存容量需求较大,更大的内存空间能够帮助应用实现更大问题规模的求解或性能的提升。


技术实现要素:

6.本发明的目的是提供一种通信支撑环境的初始化方法,其有助于支撑用户求解更大的问题规模、追求更高的性能,且实现简便,不影响消息性能,用户调用消息接口时无额外开销。
7.为达到上述目的,本发明采用的技术方案是:提供一种通信支撑环境的初始化方法,通过环境变量设置cg_per_process或mapping_file,用于标记有通信需求的进程列表:
前者表示(进程号%cg_per_process)为0的进程有通信需求,其余进程无通信需求;后者表示进程映射文件,文件内容为有通信需求的资源序号sid;包括以下步骤:s1、调用作业管理接口,解析本道作业的资源总数tasksize、各进程在作业中的初始资源序号sid、资源名列表nodeidlist、资源片内唯一标识mpeidlist、pid列表pidlist、网络设备标识列表guidlist,并按资源列表自然序排列,各列表第i个元素即为第i个资源的信息;s2、对于设置cg_per_process的场景,根据各进程的初始资源序号sid计算sid%cg_per_process,从作业系统返回信息中提取满足模cg_per_process为0的进程的相关信息,具体操作如下:s21、资源序号sid%cg_per_process不为0的,跳过初始化,直接返回初始化完成标识;s22、将资源总数tasksize缩减为1/cg_per_process,将sid置为sid/cg_per_process;s23、nodeidlist、mpeidlist、pidlist和guidlist结构体采用原地归并方式,复用数组空间,每隔cg_per_process-1个元素提取一个有效元素,存储于原结构体前tasksize个元素所在的位置;s3、对于设置mapping_file的场景,根据各进程的初始资源序号sid计算经逻辑映射后的进程号,各进程读取映射文件,通过文件系统及操作系统接口将映射文件存储于内存文件系统中,具体操作如下:s31、资源序号sid不在mapping_file中的,跳过初始化,直接返回初始化完成标识;s32、根据mapping_file文件条目数修改映射后的进程总数tasksize,将初始资源序号为sid的进程在mapping_file文件中的条目自然序号置为经逻辑映射后的sid值;s33、根据mapping_file文件条目内容按次序抽取nodeidlist、mpeidlist、pidlist和guidlist结构体的元素;s34、用抽取后的信息列表覆盖原各信息列表的前tasksize个元素;s4、设置环境变量memory_balance,根据变量值设置内存管理函数指针,用于指定通信支撑环境初始化的内存空间映射于进程私有内存空间或处理器共享内存空间,当映射于共享内存时,可平衡处理器内各资源内存开销;s5、利用指定的内存管理函数指针、更新后的tasksize以及各信息列表完成后续通信支撑环境的初始化,通信中采用的进程逻辑号即为各资源在更新后的信息列表中的序号。
8.由于上述技术方案的运用,本发明与现有技术相比具有下列优点:本发明可有效降低进程规模,降低内存浪费,既有利于提高通信支撑环境的可扩展性,又有助于支撑用户求解更大的问题规模、追求更高的性能;且实现简便,不影响消息性能,用户调用消息接口时无额外开销。
附图说明
9.附图1为本发明方的流程图。
具体实施方式
10.实施例:本发明提供一种通信支撑环境的初始化方法,通过环境变量设置cg_per_process或mapping_file,用于标记有通信需求的进程列表:前者表示(进程号%cg_per_process)为0的进程有通信需求,其余进程无通信需求;后者表示进程映射文件,文件内容为有通信需求的资源序号sid;包括以下步骤:s1、调用作业管理接口,解析本道作业的资源总数tasksize、各进程在作业中的初始资源序号sid、资源名列表nodeidlist、资源片内唯一标识mpeidlist、pid列表pidlist、网络设备标识列表guidlist,并按资源列表自然序排列,各列表第i个元素即为第i个资源的信息;s2、对于设置cg_per_process的场景,根据各进程的初始资源序号sid计算sid%cg_per_process,从作业系统返回信息中提取满足模cg_per_process为0的进程的相关信息,具体操作如下:s21、资源序号sid%cg_per_process不为0的,跳过初始化,直接返回初始化完成标识;s22、将资源总数tasksize缩减为1/cg_per_process,将sid置为sid/cg_per_process;s23、nodeidlist、mpeidlist、pidlist和guidlist结构体采用原地归并方式,复用数组空间,每隔cg_per_process-1个元素提取一个有效元素,存储于原结构体前tasksize个元素所在的位置;s3、对于设置mapping_file的场景,根据各进程的初始资源序号sid计算经逻辑映射后的进程号,各进程读取映射文件,为减轻大规模并发读取对全局文件系统的压力,可通过文件系统及操作系统接口将映射文件存储于内存文件系统中,具体操作如下:s31、资源序号sid不在mapping_file中的,跳过初始化,直接返回初始化完成标识;s32、根据mapping_file文件条目数修改映射后的进程总数tasksize,将初始资源序号为sid的进程在mapping_file文件中的条目自然序号置为经逻辑映射后的sid值;s33、根据mapping_file文件条目内容按次序抽取nodeidlist、mpeidlist、pidlist和guidlist结构体的元素;s34、用抽取后的信息列表覆盖原各信息列表的前tasksize个元素;s4、设置环境变量memory_balance,根据变量值设置内存管理函数指针,用于指定通信支撑环境初始化的内存空间映射于进程私有内存空间或处理器共享内存空间,当映射于共享内存时,可平衡处理器内各资源内存开销;s5、利用指定的内存管理函数指针、更新后的tasksize以及各信息列表完成后续通信支撑环境的初始化,通信中采用的进程逻辑号即为各资源在更新后的信息列表中的序号。
11.对上述实施例的进一步解释如下:本发明通过修改作业系统提交给消息支撑环境的结构体数组,尽量沿用标准消息支撑环境的初始化流程,以尽可能小的改动实现按需初始化和内存开销的平衡。
12.本发明从修改通信支撑环境初始化流程入手,根据环境变量和配置文件调整作业系统提交给通信支撑环境的资源信息,按需完成通信支撑环境的初始化,既能保证用户程序的通信需求,又能有效降低内存开销;使用方面,用户仅需指定环境变量和配置文件即可;当配置文件条目数与资源总数一致时,使用本发明可实现用户定制的进程映射。
13.本发明在默认条件下依然实现每个进程的初始化,当用户明确一些进程在程序运行的全过程均没有通信需求时,通信支撑环境可按需完成用户定制的消息初始化,以降低进程规模和内存开销;还可根据用户指定将初始化占用的内存空间映射到默认指定进程私有内存空间或共享内存空间,平衡各进程的内存开销。
14.具体步骤如下:1、通过环境变量设置cg_per_process或mapping_file,标记有通信需求的进程列表:前者表示(进程号%cg_per_process)为0的进程有通信需求,其余进程无通信需求;后者表示进程映射文件,文件内容为有通信需求的资源序号sid。
15.2、调用作业管理接口,解析本道作业的资源总数tasksize、资源名列表nodeidlist、资源片内唯一标识mpeidlist、pid列表pidlist、网络设备标识列表guidlist等,这些内容按资源列表自然序排列,各列表第i个元素即为第i个资源的信息。
16.3、对于设置cg_per_process的场景,根据各进程的初始资源序号sid计算sid%cg_per_process,从作业系统返回信息中提取满足模cg_per_process为0的进程的相关信息,具体操作如下:a)初始资源序号sid%cg_per_process不为0的,跳过初始化,直接返回初始化完成标识。
17.b)资源总数tasksize缩减为1/cg_per_process。
18.c) nodeidlist、mpeidlist、pidlist、guidlist等结构体采用原地归并方式,复用数组空间,每隔cg_per_process-1个元素提取一个有效元素,存储于原结构体前tasksize个元素所在的位置。
19.4、对于设置mapping_file的场景,根据各进程的初始资源序号sid计算经逻辑映射后的进程号,各进程读取映射文件,为减轻大规模并发读取对全局文件系统的压力,可通过文件系统及操作系统接口将映射文件存储于内存文件系统中。具体操作如下:a)初始资源序号sid不在mapping_file中的跳过初始化,直接返回初始化完成标识。
20.b)根据mapping_file文件条目数修改映射后的进程总数tasksize,将初始资源序号为sid的进程在mapping_file文件中的条目自然序号置为经逻辑映射后的sid值。
21.c)根据mapping_file文件条目内容按次序抽取nodeidlist、mpeidlist、pidlist和guidlist结构体的元素。
22.d)用抽取后的信息列表覆盖原各信息列表的前tasksize个元素。
23.5、设置环境变量memory_balance,根据变量值设置内存管理函数指针,用于指定通信支撑环境初始化的内存空间映射于进程私有内存空间或处理器共享内存空间,当映射
于共享内存时,可平衡处理器内各资源内存开销。
24.6、利用指定的内存管理函数指针、更新后的tasksize以及各信息列表完成后续通信支撑环境的初始化,通信中采用的进程逻辑号即为各资源在更新后的信息列表中的序号。
25.通过上述初始化流程可以发现,本发明除根据需求调整资源总数及信息列表外未修改初始化其他步骤,改动量少、易于实现;当cg_per_process=1或mapping_file为资源自然序号表时,初始化结果与原始消息支撑环境相同,兼容标准初始化模式;用户指定的不参与通信的进程不会参与具体的初始化步骤,因此无需申请各类硬件资源和内存缓冲;进程规模有效压缩,与进程规模有关的缓冲空间开销也随之降低。此外,使用mapping_file时,若给定mapping_file内容为资源序号表sid的任意排列,本专利可实现进程映射,即进程逻辑序号与资源序号的任意指定对应关系。
26.采用上述一种通信支撑环境的初始化方法时,其可有效降低进程规模,降低内存浪费,既有利于提高通信支撑环境的可扩展性,又有助于支撑用户求解更大的问题规模、追求更高的性能;且实现简便,不影响消息性能,用户调用消息接口时无额外开销。
27.为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:作业管理系统:用于大型集群环境调度分配系统资源,具体而言,就是根据待运行程序的需求,从集群系统中划分足够资源,并将应用程序提交到划分的资源上运行。
28.上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献