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

一种缓冲受限的数据分块全交换通信实现方法与流程

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


1.本发明涉及一种缓冲受限的数据分块全交换通信实现方法,属于高性能计算消息通信技术领域。


背景技术:

2.全交换是一种典型的通信方式,在fft等众多科学计算程序中被广泛使用。全交换需要参与通信的各方两两通信,全交换通信的性能是很多应用程序的瓶颈,减少全通信过程中缓冲空间的使用,能够增加全交换的数据量,对很多程序有重要意义。在分布式并行计算中,全交换是一种典型的通信方式,实现全交换通信通常需要较大的缓冲空间,现有的各种全交通信方法通常需要较大的缓冲空间才能实现。


技术实现要素:

3.本发明的目的是提供一种缓冲受限的数据分块全交换通信实现方法,其能够在缓冲受限的情况下实现全交换通信,并在存储器容量一定的情况下增加全交换的数据量。
4.为达到上述目的,本发明采用的技术方案是:提供一种缓冲受限的数据分块全交换通信实现方法,包括以下步骤:
5.s1、申请用于全交换通信的缓冲空间,具体为:参与全交换通信的节点数为n,每个节点上全交换的数据量为a,起始地址为src,全交换通信块的大小为a/n,记为block;根据内存使用情况申请全交换通信块m倍的空间作为缓冲空间,缓冲空间的起始地址为buf;
6.s2、每个节点向其他n-1个节点各发送一个全交换通信块,并将接收到的来自其他n-1个节点的n-1个全交换通信块移动到全交换数据区,具体过程为每个节点执行下界为1、上界为n、跨步为m的循环,循环索引为i,循环体的过程为:
7.s21、每个节点向不超过m个节点发送数据,第j个节点(j为满足条件j《m且(i j)《n的非负整数)的节点号为myid^(i j),记为to,其中myid为每个节点自身的节点号,则发送数据的源地址为src to*block,目标地址为buf j*block;
8.s22、记s21中发送数据的个数为used,则将缓冲空间中的used个数据块移动到全交换数据区,其中缓冲空间中第j个数据块移动到全交换数据区的地址为src (myid^(i j))*block;
9.s23、进行全局同步,等待所有节点完成s21和s22。
10.上述技术方案中进一步改进的方案如下:
11.1.上述方案中,s21中,每个节点向不超过m个节点连续发送数据块,且第j个节点的节点号通过myid^(i j)计算得到,其中myid为每个节点自己的节点号,相应的发送数据块的源地址为src to*block,目标地址为buf j*block。
12.2.上述方案中,s22中,将used个数据块从缓冲空间移动到全交换数据区,且used为步骤s21中发送数据的个数,相应的缓冲空间中第j个数据块移动到全交换数据区的地址为src (myid^(i j))*block。
13.由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
14.本发明一种缓冲受限的数据分块全交换通信实现方法,提供了一种能够在使用较小缓冲空间的情况下实现高带宽全交换通信的方法,最少只需要1个全交换数据块作为缓冲空间,能够在缓冲受限的情况下实现全交换通信,并在存储器容量一定的情况下增加全交换的数据量。
附图说明
15.附图1为本发明一种缓冲受限的数据分块全交换通信实现方法的示意图。
具体实施方式
16.实施例:本发明提供一种缓冲受限的数据分块全交换通信实现方法,具体包括以下步骤:
17.s1、申请用于全交换通信的缓冲空间,具体为:参与全交换通信的节点数为n,每个节点上全交换的数据量为a,起始地址为src,全交换通信块的大小为a/n,记为block;根据内存使用情况申请全交换通信块m倍的空间作为缓冲空间,缓冲空间的起始地址为buf;
18.s2、每个节点向其他n-1个节点各发送一个全交换通信块,并将接收到的来自其他n-1个节点的n-1个全交换通信块移动到全交换数据区,具体过程为每个节点执行下界为1、上界为n、跨步为m的循环,循环索引为i,循环体的过程为:
19.s21、每个节点向不超过m个节点发送数据,第j个节点(j为满足条件j《m且(i j)《n的非负整数)的节点号为myid^(i j),记为to,其中myid为每个节点自身的节点号,则发送数据的源地址为src to*block,目标地址为buf j*block;
20.s22、记s21中发送数据的个数为used,则将缓冲空间中的used个数据块移动到全交换数据区,其中缓冲空间中第j个数据块移动到全交换数据区的地址为src (myid^(i j))*block;
21.s23、进行全局同步,等待所有节点完成s21和s22。
22.对上述实施例的进一步解释如下:
23.(1)算法原理
24.本专利给出了一种能够在使用较小缓冲区的情况下实现高带宽全交换通信的方法,以下将全交换通信记为alltoall。
25.本专利提出的全交换通信用于缓冲受限的情况,这种情况下的全交换通信的源地址和目的地址相同,记为alltoall_inplace。
26.alltoall通信过程需要参与通信的节点两两交换1个alltoall通信块的数据;
27.n个节点的alltoall通信需要进行n-1轮的两两交换,每轮交换每个节点都将更新1块数据,n-1轮之后即可完成alltoall通信;
28.因此,每个节点至少需要1个alltoall通信块大小的缓冲区用于数据交换。
29.实现alltoall_inplace关键是要找到一种两两交换的顺序,下面以4节点alltoall为例来说明:附图1中展示了4节点alltoall中实现两两数据交换的顺序。
30.观察发现,节点myid第i轮的交换对象可以用myid^i求得,将该算法称为xor算法;将4个节点的情况推广到n个节点,并考虑内存数据交换的过程,则xor算法实现alltoall_
inplace的伪代码如下:
[0031][0032]
上面是缓冲区为1个通信块的情况,假设有m个通信块作为缓冲区,则上面的算法可以继续优化,即每次与m个节点通信后再在内存中交换数据,伪代码如下:
[0033][0034][0035]
(2)基于rdma实现的具体过程
[0036]
下面给出了基于rdma网络的具体实现过程,采用c语言进行描述。
[0037]
[0038][0039]
上述代码中,rply_t为消息回答字类型,get_node_num为获取通信节点个数,get_myid获取相对节点号,msg_put为单边非阻塞消息接口,msg_wait_value为等待消息接口,m_sync为全局同步接口,这些接口在不同的系统中会有所不同,但其功能在rdma网络中通常都是有的。
[0040]
采用上述一种缓冲受限的数据分块全交换通信实现方法时,其提供了一种能够在使用较小缓冲空间的情况下实现高带宽全交换通信的方法,最少只需要1个全交换数据块
作为缓冲空间,能够在缓冲受限的情况下实现全交换通信,并在存储器容量一定的情况下增加全交换的数据量。
[0041]
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
再多了解一些

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

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

相关文献