一种科学计算应用影像区交换通信模式的卸载实现方法与流程

文档序号:17627249发布日期:2019-05-10 23:47阅读:164来源:国知局
一种科学计算应用影像区交换通信模式的卸载实现方法与流程

本发明涉及高性能计算机技术领域,更具体的说,涉及一种科学计算应用影像区交换通信模式的卸载实现方法,是一种基于高性能计算机(highperformancecomputer,简称hpc)新型网卡功能的科学计算应用影像区交换通信模式的卸载实现方法。



背景技术:

科学计算是解决国家经济建设、社会发展、科技创新、国家安全重大挑战性问题的重要手段,一直是世界各国竞争的战略高地,在未来很长一段时间内,依然是各国竞相优先发展的热点研究领域。在摩尔定律的推动下,高性能计算机不断发展进步,其峰值性能已跨过千万亿次,迈入亿亿次和十亿亿次时代,并向百亿亿次的目标继续挺进。但正因如此,科学计算应用的通信优化也面临着诸多问题。

科学计算应用编程框架是大幅降低应用级并行编程难度的重要技术途径,其处于科学计算应用和高性能计算机之间,起着承接与支撑的桥梁作用。一方面其建立在超级计算机提供的通用并行编程模型,例如mpi和openmp等之上,对运行时优化、数据通信、负载平衡、并行i/o等高性能计算相关工作进行抽象,为应用领域专家屏蔽超级计算机体系结构和显式并行编程的复杂性。另一方面对软件的数据结构、函数库和流程龙骨进行抽象,为大型复杂应用软件的可拓展研制提供编程的标准和规范。

领域编程框架通过构件模型封装并行计算的细节,提供不同类型的计算模式,组织内存调度、数据通信以及并行计算,这使得科学计算应用的数据通信过程表现为一种通信模式或多种模式的组合。如果我们能够依托编程框架,对有代表性的科学计算应用分析凝练共性的数据通信模式,并优化这些通信模式的执行过程,则可以实现对批量科学计算应用性能的优化。

影像区交换数据通信模式是科学计算领域重大应用数据通信过程中,出现频率较高、通信延迟较大,往往会成为应用程序执行性能的瓶颈。现阶段,针对科学计算应用数据通信过程的优化,一般面向mpi编程模型开展。然而,由于mpi的目标是针对消息传递并行编程模式指定一种通信库接口标准,因此对于各种架构的高性能计算机的适配是其设计与实现时的重要指标。虽然,国内外学者对于通信受限型应用从算法改进和通信优化两种思路开展了诸多工作。但由于mpi本身的普适性,虽然这些工作应用在国产高性能计算机上会产生一定的性能提升,但是其根本上没有充分结合高性能计算机互连网络结构的硬件特性,因此对于通信执行过程的优化并不显著。



技术实现要素:

针对上述背景中所述的问题,本发明提供一种科学计算应用影像区交换通信模式的卸载实现方法,应用于科学计算重大领域应用的通信过程实现,基于现阶段高性能环境中普遍存在的新型网络接口卡特性,通过将科学计算应用中出现频率最高的数据通信模式——影像区交换进行卸载优化实现,保证应用执行该种数据通信模式时的高可拓展、低延迟性。

一种科学计算应用影像区交换通信模式的卸载实现方法,其特征在于,包括以下步骤:

(a)通过新的数据缓冲区管理机制进行传输数据的注册、管理与注销操作,以消除网络接口卡到科学计算应用程序缓冲区的不必要副本,提高网络带宽并减少通信延迟;

(b)数据的传输采用远程直接数据存取的方法,根据影像区交换通信模式中传输数据的大小与进程间的数据依赖情况,灵活地选取多种传输协议;

(c)将网络接口卡中的传输通道分为共享rdma通道与独占rdma通道,使密集通信或传输数据量较大的两进程间构建独占的rdma通道进行数据通信,而其余进程间通信则共享部分通道实现。

所述步骤(a)的具体过程为,

当用户需要注册一块用于后续发送或接收数据的内存区域时,不直接使用系统函数申请,而是调用内存接口,完成内存区域的申请以及锁定操作;当用户需要对该区域进行rdma通信时,则可以直接将该区域作为传入或接收参数进行操作;

(a-1)每个通信节点内构建一块合适大小的内存区域,本发明称之为pin-memory-space,该内存区域将通过系统函数固定在物理内存中,不允许操作系统进行物理页的换进换出;

(a-2)每个通信节点内会有一块内存区域,本发明称之为swap-memory-address,保存将与本节点发生通信的其他节点的远程内存信息;

(a-3)当该通信节点需要申请一块用于影像区交换通信的内存区域时,将调用特定的注册函数在pin-memory-space区域进行申请与赋值,该过程会记录此内存块的引用次数。同时,该内存块的地址以及大小等信息,会通过小报文传输的方式通知对方节点,以更新对方的swap-memory-address区域内容;

(a-4)当某一通信节点与其他节点的通信区域使用完毕需要释放时,调用相应的注销函数,会将pin-memory-space区域中相应内存块的引用计数设置为0,同时通知对方节点删除swap-memory-address区域的远程内存信息;

(a-5)每个通信节点内的pin-memory-space区域会在内存申请和释放时进行整理,整理过程主要为:当新申请内存块大小与现有区域中引用计数为0的块匹配时,直接返回该内存块地址并更新块大小信息;当pin-memory-space区域不足以存放新申请内存块时,进行内存整理消除内存碎片,再重新进行内存分配;当内存空间仍不够时,调用系统函数开辟新的内存空间并进行锁定,以拓展pin-memory-space区域的大小;当需要释放内存块时,会判断当前已利用区域占总pin-memory-space区域大小的比例,若利用率较低则会调用系统函数,释放部分内存区域,以减少不必要的内存锁定。

所述步骤(b)的具体过程为,

(b-1)如果影像区交换通信模式中的邻接进程间待交换的数据量较小,采取小报文传输协议。即当数据较小时,将整个待传输的数据直接放入单个报文中,网络接口卡可以直接从这种报文中获取数据或者发送数据。该方式使得数据的传输直接依靠报文最大传输长度的剩余部分完成,而不是放置在内存中通过rdma进行拷贝转移,节省了源存储器的访问延迟,高效的支持小数据的快速远程通信;

(b-2)如果影像区交换通信模式中的邻接进程间待交换的数据量较大,采用rdma_get和rdma_put操作进行数据传输。即数据大小较大时,超过了数倍于单一报文可携带的数据量,或者是数据块的传输。rdma_put方式中网络接口卡通过内部的dma部件获取数据并将其打包成一系列的数据包发送到网络,当数据包在到达目的地后会被写入目标存储器中。rdma_get方式中网络接口卡将请求描述发送至目标节点,在请求包到达目的地后,将从目的地存储器读取数据并将其打包成一系列数据包返回到源存储器。

所述步骤(c)的具体过程为,

(c-1)构建共享rdma通道,与其他所有待通信的进程进行消息传递。共享通道中的通信资源被等分,用于发送或接受当前节点内所有进程的rdma传输请求,不同的请求之间采用流水线执行以提高带宽;

(c-2)构建独占rdma通道,与某些固定通信的进程进行消息传递。独占通道中的通信资源仅供两个通信进程(发送和接收)使用,消息发送方管理通信资源,并使用rdmaput进行数据传输,独占通道具有更低的延迟。

本发明的有益效果是:本发明的影像区交换通信模式的卸载实现能够适用于大规模高性能计算机体系结构,能够充分利用新型网卡广泛存在的通信硬件特性,从而高可拓展低延迟地执行科学计算应用的影像区交换通信模式,为高效数据通信方法提供了性能可保障的编程支持。在科学计算领域,对于应用通信执行过程的优化多针对mpi编程框架开展,但mpi的普适性目标间接地导致了其不能充分利用高性能计算机新型网卡提供的硬件特性,因此不能达到更佳的优化效果。同时,rdma通信过程中,需要传输的数据需要锁定在物理内存页中确保不被换进换出,这样dma模块才能实现有效的数据传输,然而频繁的内存锁定与释放会消耗大量的是通信时间,不利于高效低数据通信执行。针对以上存在的关键问题,本发明首先提出了一种数据缓冲区管理机制,以消除影像区交换通信模式中通过rdma操作进行数据交换时存在的不必要的内存锁定与释放,减少不必要的内存拷贝过程。并且针对高性能计算机网卡的rdma特性以及通道数据传输方式,从数据发送方式和传输方式两个方面进行优化,减少通信过程中冗余的数据报,加速频繁通信进程间的通信效率。

附图说明:

图1为本发明的科学计算应用影像区交换通信模式的卸载实现方法的流程图;

图2为本发明中所涉及的影像区交换通信模式的原理示意图;

图3为本发明中内存缓冲区管理机制的原理示意图;

图4为本发明中多数据传输通道优化方法的原理示意图;

图5为本发明中多数据传输通道优化方法应用于二维影像区交换程序的原理示意图。

具体实施方式:

以下结合附图对本发明作进一步详细的说明。

附图1所示,是本发明的科学计算应用影像区交换通信模式的卸载实现方法的流程图。

一种科学计算应用影像区交换通信模式的卸载实现方法,包括以下步骤:

(a)通过新的数据缓冲区管理机制进行传输数据的注册、管理与注销操作,以消除网络接口卡到科学计算应用程序缓冲区的不必要副本,提高网络带宽并减少通信延迟;

(b)数据的传输采用远程直接数据存取的方法,根据影像区交换通信模式中传输数据的大小与进程间的数据依赖情况,灵活地选取多种传输协议;

(c)将网络接口卡中的传输通道分为共享rdma通道与独占rdma通道,使密集通信或传输数据量较大的两进程间构建独占的rdma通道进行数据通信,而其余进程间通信则共享部分通道实现。

图2为本发明中所涉及的影像区交换通信模式的原理示意图。对于附图2所示的科学计算应用二维影像区交换通信模式,结合附图3至5,介绍本发明的影像区交换通信模式的卸载实现方法具体实施的过程。

其中,所述步骤(a)的具体过程为,

传统基于rdma的通信方法,如基于ibverbs接口实现的通信,需要在通信开始前,将发送方用于发送数据的缓冲区和接收方用于等待接收数据的缓冲区,提前利用相应接口进行对一部分内存区域锁定,以保证所在内存页面不被操作系统换出,否则会造成rdma传输错误。当需要通信时,再将用户缓冲区内的数据,发送端需要拷贝到已锁定的网卡发送缓冲区内,而接收端在接收数据后再拷贝至相应的用户缓冲区,最终完成一次发送接收操作。

针对这种情况,本发明设计并实现了一种缓冲区注册管理机制,当用户需要注册一块内存区域(后续用于发送或接收数据)时,不直接使用系统函数申请,而是调用我们提供的相关接口,完成内存区域的申请以及锁定操作。而当用户需要对该区域进行rdma通信时,则可以直接将该区域作为传入或接收参数进行操作。该机制的实现主要包含:

(a-1)每个通信节点内构建一块合适大小的内存区域pin-memory-space,该内存区域将通过系统函数固定在物理内存中,不允许操作系统进行物理页的换进换出;

(a-2)每个通信节点内会有一块内存区域swap-memory-address,保存将与本节点发生通信的其他节点的远程内存信息;

(a-3)当某一通信节点需要申请一块用于影像区交换通信的内存区域时,将调用特定的注册函数在pin-memory-space区域进行申请与赋值,该过程会记录此内存块的引用次数;同时,该内存块的地址以及大小等信息,会通过小报文传输的方式通知对方节点,以更新对方的swap-memory-address区域内容;

(a-4)当某一通信节点与其他节点的通信区域使用完毕需要释放时,调用相应的注销函数,会将pin-memory-space区域中相应内存块的引用计数设置为0,同时通知对方节点删除swap-memory-address区域的远程内存信息;

(a-5)每个通信节点内的pin-memory-space区域会在内存申请和释放时进行整理,整理过程主要为:当新申请内存块大小与现有区域中引用计数为0的块匹配时,直接返回该内存块地址并更新块大小信息;当pin-memory-space区域不足以存放新申请内存块时,进行内存整理消除内存碎片,再重新进行内存分配;当内存空间仍不够时,调用系统函数开辟新的内存空间并进行锁定,以拓展pin-memory-space区域的大小;当需要释放内存块时,会判断当前已利用区域占总pin-memory-space区域大小的比例,若利用率较低则会调用系统函数,释放部分内存区域,以减少不必要的内存锁定。

图3为本发明中内存缓冲区管理机制的原理示意图。每个通信进程都会跟邻接的四个进程(上下左右四个维度)进行通信,因此通过附图3所示的数据缓冲区管理机制,在每个计算节点上,申请四块合适大小的内存块,用于与邻接的四个节点进行数据交换。通过该操作,我们可以消除内存区域频繁注册、锁定与释放所需的时间开销。然后在此基础上,通过对该内存块实现自主的内存管理机制,为用户提供该动态的内存区的申请和释放操作,消除不必要的内存拷贝操作,并减少rdma操作中的存储器管理开销。

因此,该机制可以减少rdma通信时锁定内存操作所产生的内存注册开销,同时也可以将数据传输过程中的多次内存拷贝转变为一次源至目的的单次拷贝,从而有效地减少了通信过程的传输时延。

所述步骤(b)的具体过程为,

(b-1)如果影像区交换通信模式中的邻接进程间待交换的数据量较小,采取小报文传输协议。即当数据较小时,将整个待传输的数据直接放入单个报文中,网络接口卡可以直接从这种报文中获取数据或者发送数据。该方式使得数据的传输直接依靠报文最大传输长度的剩余部分完成,而不是放置在内存中通过rdma进行拷贝转移,节省了源存储器的访问延迟,高效的支持小数据的快速远程通信。

(b-2)如果影像区交换通信模式中的邻接进程间待交换的数据量较大,采用rdma_get和rdma_put操作进行数据传输。即数据大小较大时,超过了数倍于单一报文可携带的数据量,或者是数据块的传输。rdma_put方式中网络接口卡通过内部的dma部件获取数据并将其打包成一系列的数据包发送到网络,当数据包在到达目的地后会被写入目标存储器中。rdma_get方式中网络接口卡将请求描述发送至目标节点,在请求包到达目的地后,将从目的地存储器读取数据并将其打包成一系列数据包返回到源存储器。

结合每个通信节点内用于数据交换的四个内存块的大小,动态的选择数据传输方式,如果影像区交换通信模式中的邻接进程间待交换的数据量较小,采取小报文传输协议,如果影像区交换通信模式中的邻接进程间待交换的数据量较大,采用rdma_get和rdma_put操作进行数据传输。通过上一步内存块的申请,我们可以清楚地分析出用户传输数据的大小,根据相应的数据长度阈值,对多种传输方式进行选择,以获得更高效的数据传输效率。

因此,小数据量信息采用小报文传输协议进行收发,大数据量消息依托数据归属等情况采用rdma_get或rdma_put方式进行收发,保证了数据传输的效率。

所述步骤(c)的具体过程为,

(c-1)构建共享rdma通道,与其他所有待通信的进程进行消息传递;共享通道中的通信资源被等分,用于发送或接受当前节点内所有进程的rdma传输请求,不同的请求之间采用流水线执行以提高带宽;

(c-2)构建独占rdma通道,与某些固定通信的进程进行消息传递;独占通道中的通信资源仅供两个通信进程(发送和接收)使用,消息发送方管理通信资源,并使用rdmaput进行数据传输,独占通道具有更低的延迟。

图4为本发明中多数据传输通道优化方法的原理示意图。由于二维影像区交换模式中,每个进程固定地跟邻接的四个通信进程通信,因此,我们尝试在每个计算节点上构建附图4所示的四个独占rdma通道(对于更高维度的影像区交换通信模式,需要考虑建立共享通道)。其中,每个独占rdma通道匹配每个方向的通信进程,用于两进程间通信发送和接收数据使用。利用该方式实现的附图5所示的二维影像区交换通信模式,利用独占rdma通道进行专用通信进程间的发送接收,可以获得更高的通信带宽以及更低的通信延迟。

因此,频繁传递消息的进程之间创建独占通道,而共享通道用于与其他进程通信,通过这种方式实现资源消耗与性能改进之间的平衡,提高通信性能与可拓展性。

根据上述步骤,执行上下左右四个维度的影像区数据交换工作,完成科学计算应用各进程间的二维影像区数据交换通信模式。

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