CN112765089A - 一种gpu通信方法、设备以及介质 - Google Patents
一种gpu通信方法、设备以及介质 Download PDFInfo
- Publication number
- CN112765089A CN112765089A CN202011568020.0A CN202011568020A CN112765089A CN 112765089 A CN112765089 A CN 112765089A CN 202011568020 A CN202011568020 A CN 202011568020A CN 112765089 A CN112765089 A CN 112765089A
- Authority
- CN
- China
- Prior art keywords
- matrix
- gpu
- sub
- transmitted
- compression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000004891 communication Methods 0.000 title claims abstract description 22
- 239000011159 matrix material Substances 0.000 claims abstract description 210
- 238000007906 compression Methods 0.000 claims abstract description 74
- 230000006835 compression Effects 0.000 claims abstract description 72
- 230000006837 decompression Effects 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 abstract description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000000354 decomposition reaction Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种GPU通信方法,包括以下步骤:将每一个GPU上待传输的矩阵分解成子矩阵和压缩矩阵,其中每一个所述待传输的矩阵分解得到的所述压缩矩阵相同;使每一个GPU针对各自的子矩阵执行reduce操作,以使所述每一个GPU得到中间矩阵;对所述每一个GPU执行allgather操作,以使所述每一个GPU分别向其他所有GPU发送自身的所述中间矩阵;将所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵分别乘以所述压缩矩阵以得到最终矩阵。本发明还公开了一种计算机设备以及可读存储介质。本发明提出的方案通过分解矩阵,通信的复杂度会大大的降低。在保证收敛精度的情况下,可以删去部分较小的特征值,进一步减少数据的传输。
Description
技术领域
本发明涉及GPU领域,具体涉及一种GPU通信方法、设备以及存储介质。
背景技术
深度学习的大规模数据并行训练带来了越来越大的时间开销,在高速传输网络,硬件成本高昂的情况下,如何合理高效的利用低速网络传输也是我们要解决的问题。低速网络的低传输效率,已经逐渐成为了神经网络大规模训练的瓶颈。
环形通信算法是GPU通信的常用方法,常在数据量较大时使用环形通信算法,其可以有效的利用pipeline技术,在多GPU上有良好的扩展性。但是在低速网络的限制下,例如在部分PCIE连接下,其传输速度仅有7.5GB/s左右,这已经逐渐成为了GPU计算的瓶颈。
发明内容
有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种GPU通信方法,包括以下步骤:
将每一个GPU上待传输的矩阵分解成子矩阵和压缩矩阵,其中每一个所述待传输的矩阵分解得到的所述压缩矩阵相同;
使每一个GPU针对各自的子矩阵执行reduce操作,以使所述每一个GPU得到中间矩阵;
对所述每一个GPU执行allgather操作,以使所述每一个GPU分别向其他所有GPU发送自身的所述中间矩阵;
将所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵分别乘以所述压缩矩阵以得到最终矩阵。
在一些实施例中,使每一个GPU针对各自的子矩阵执行reduce操作,以使所述每一个GPU得到中间矩阵,进一步包括:
对所述每一个GPU上的所述中间矩阵执行压缩操作;
将所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵分别乘以所述压缩矩阵以得到最终矩阵,进一步包括:
对所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵块执行解压操作后分别乘以所述压缩矩阵以得到最终矩阵。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第一个待传输的子矩阵执行所述解压操作的同时,使所述每一个GPU针对各自的第二个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第一个待传输的子矩阵执行所述压缩操作后,使所述每一个GPU针对各自的第三个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第二个待传输的子矩阵执行所述压缩操作的同时,使所述每一个GPU针对各自的所述第三个待传输的子矩阵执行所述allgather操作。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第一个待传输的子矩阵执行所述allgather操作的同时,使所述每一个GPU针对各自的所述第三个待传输的子矩阵执行所述压缩操作。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第三个待传输的子矩阵进行所述解压操作的同时,使所述每一个GPU针对各自的第四个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第二个待传输的子矩阵执行所述allgather操作的同时,使所述每一个GPU针对各自的所述第四待传输的子矩阵执行所述压缩操作。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种GPU通信方法的步骤。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种GPU通信方法的步骤。
本发明具有以下有益技术效果之一:本发明提出的方案通过分解矩阵,通信的复杂度会大大的降低。在保证收敛精度的情况下,可以删去部分较小的特征值,进一步减少数据的传输。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明的实施例提供的GPU通信方法的流程示意图;
图2为本发明的实施例提供的矩阵分解示意图;
图3为本发明的实施例提供的在每一个GPU将每一个待传输的矩阵分成多个子矩阵后的示意图;
图4为本发明的实施例提供的在每一个GPU进行reduce操作后的示意图;
图5为本发明的实施例提供的在每一个GPU进行压缩操作后的示意图;
图6为本发明的实施例提供的在每一个GPU进行allgather操作后的示意图;
图7为本发明的实施例提供的在每一个GPU进行解压操作后的示意图;
图8为本发明的实施例提供的流水线的示意图;
图9为本发明的实施例提供的另一个流水线的示意图;
图10为本发明的实施例提供的计算机设备的结构示意图;
图11为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
根据本发明的一个方面,本发明的实施例提出一种GPU通信方法,如图1所示,其可以包括步骤:
S1,将每一个GPU上待传输的矩阵分解成子矩阵和压缩矩阵,其中每一个所述待传输的矩阵分解得到的所述压缩矩阵相同;
S2,使每一个GPU针对各自的子矩阵执行reduce操作,以使所述每一个GPU得到中间矩阵;
S3,对所述每一个GPU执行allgather操作,以使所述每一个GPU分别向其他所有GPU发送自身的所述中间矩阵;
S4,将所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵分别乘以所述压缩矩阵以得到最终矩阵。
本发明提出的方案通过分解矩阵,通信的复杂度会大大的降低。在保证收敛精度的情况下,可以删去部分较小的特征值,进一步减少数据的传输。
在一些实施例中,步骤S1,将每一个GPU上待传输的矩阵分解成子矩阵和压缩矩阵,其中每一个所述待传输的矩阵分解得到的所述压缩矩阵相同,具体的,如图2所示,以A1、A2、A3为例,进压缩前左边所示可得A123=A1+A2+A3。由矩阵分解可得A1=S1*D、A2=S2*D、A3=S3*D,其中,S矩阵为子矩阵,D矩阵为压缩矩阵,因此可以得到A123=(S1+S2+S3)*D。为了保证其分解后相加的便捷性,以及减少矩阵运算复杂度特定设立的,可以使得三个矩阵A1、A2、A3分解后的D矩阵相同。具体过程为先将矩阵A1进行分解,即A1=S1*D,然后将已知的矩阵D带入式A2=S2*D当中,采用求解矩阵线性方程组的形式得出矩阵S2,再以相同的形式得出S3。在此过程中可能会产生一定的精度损失,但是均在可控误差之内,几乎不会对深度学习模型的收敛造成损失。
这样通过分解,可以将矩阵A(矩阵维度为M*N、秩为K),分解为子矩阵S(M*K)和压缩矩阵D(K*N)相乘的形式,或者可以分解为S*V*D的形式,其中V为矩阵的特征值组成的对角矩阵。在此情况下,通信的复杂度会由M*N变为M*K+K*N,当矩阵的秩较小的情况下,通信的复杂度会大大的降低。在保证收敛精度的情况下,可以删去部分较小的特征值,进一步减少数据的传输。
在一些实施例中,步骤S2,使每一个GPU针对各自的子矩阵执行reduce操作,以使所述每一个GPU得到中间矩阵,进一步包括:
对所述每一个GPU上的所述中间矩阵执行压缩操作;
步骤S4,将所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵分别乘以所述压缩矩阵以得到最终矩阵,进一步包括:
对所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵块执行解压操作后分别乘以所述压缩矩阵以得到最终矩阵。
在一些实施例中,所述reduce操作包括:
在每一个GPU中将每一个待传输的矩阵划分为子矩阵和压缩矩阵,以使所述每一个GPU分别向其他所有GPU发送一个对应的子矩阵,并使所述每一个GPU对接收到若干个子矩阵和自身的一个子矩阵进行相加以得到中间矩阵。
具体的,如图3所示,以4个GPU为例,ALL_reduce类型选为SUM。图3示出的每一个GPU待传输的子矩阵均为左侧部分,并且每一个CPU的左侧部分均为4个子矩阵,这样在scatter_reduce之后,每个GPU得到了一个待传输的子矩阵相加后的矩阵,如图4所示,GPU0得到了GPU1的子矩阵B1,GPU2的子矩阵C1,GPU3的子矩阵D1,最终GPU0利用自身的子矩阵A1和得到的子矩阵B1、C1、D1相加得到中间矩阵;
GPU1得到了GPU0的子矩阵A2,GPU2的子矩阵C2,GPU3的子矩阵D2,最终GPU1利用自身的子矩阵B2和得到的子矩阵A2、C2、D2相加得到中间矩阵;
GPU2得到了GPU0的子矩阵A3,GPU1的子矩阵B3,GPU3的子矩阵D3,最终GPU2利用自身的子矩阵C3和得到的子矩阵A3、B3、D3相加得到中间矩阵;
GPU3得到了GPU0的子矩阵A4,GPU1的子矩阵B4,GPU2的矩阵C4,最终GPU3利用自身的子矩阵D4和得到的子矩阵A4、B4、C4相加得到中间矩阵。
在一些实施例中,步骤S2,对所述每一个GPU上的所述中间矩阵执行压缩操作,具体的,在每一个GPU得到中间矩阵后,对中间矩阵进行压缩处理,如图5所示,在图5中,采用网状格代表压缩后的数据,即GPU0中对子矩阵A1和得到的子矩阵B1、C1、D1进行压缩,GPU1中对子矩阵B2和得到的子矩阵A2、C2、D2进行压缩,GPU0中对子矩阵C3和得到的子矩阵A3、B3、D3进行压缩,GPU0中对子矩阵D4和得到的子矩阵A4、B4、C4进行压缩。
在一些实施例中,为了考虑其通用性,选择的压缩算法为固定比例的浮点压缩算法,该压缩算法可以调节其固定压缩压缩比来满足不同精度的需求。其压缩算法由开源代码zfp已经实现,可以使用其开源库作为压缩工具,结合到环形通信当中。其中zfp作为开源代码库,支持浮点数和整数的数据压缩。并且支持固定精度、固定比率多种形式并且支持一维、二维等不同维数的数据压缩。且提供了不同的C++、python等多种接口。还可以采用了其固定压缩比率的形式,并且截取了其内部实现的cuda代码。Zfp内部压缩方法是基于正交变换得来的,主要的损失则来自低位的舍取,由于其方法由开源代码实现,这里不再详细讲述。
在一些实施例中,步骤S3,对所述每一个GPU执行allgather操作,以使所述每一个GPU分别向其他所有GPU发送自身的所述中间矩阵,如图6所示,在每一个GPU对对应的中间矩阵压缩后,对其进行allgather传输,使其每个GPU均得到全部的压缩数据,即GPU0-GPU3均得到了由子矩阵A1、B1、C1、D1压缩后的中间矩阵,由子矩阵A2、B2、C2、D2压缩后的中间矩阵,由子矩阵A3、B3、C3、D3压缩后的中间矩阵以及由子矩阵A4、B4、C4、D4压缩后的中间矩阵。
在一些实施例中,步骤S4,对所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵块执行解压操作后分别乘以所述压缩矩阵以得到最终矩阵,具体的,如图7所示,当每一个GPU得到所有的中间矩阵后,对所有的中间矩阵进行解压,然后在乘以压缩矩阵D,这样使每个GPU得到全部矩阵相加后的数据。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第一个待传输的子矩阵执行所述解压操作的同时,使所述每一个GPU针对各自的第二个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
具体的,为了减少压缩与解压会占用的计算时间从而影响其程序效率,采取了双pipeline来隐藏压缩与解压时间,提高程序效率。如图8所示,可以看出针对四个待传输的子矩阵分别执行了所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作,其中第一待传输的子矩阵、第二待传输的子矩阵组成第一层pipeline(pipeline1),第三待传输的子矩阵和第四待传输的子矩阵组成第二层pipeline(pipeline2)。在每一层pipeline中(以pipeline1为例),首先启动每一个GPU执行对第一待传输的子矩阵的操作,在所述每一个GPU针对所述第一个待传输的子矩阵执行所述解压操作的同时,使所述每一个GPU针对第二个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。这样针对第一个待传输的子矩阵的解压缩操作与针对第二个待传输的子矩阵的的reduce操作同时进行,借以隐藏了decompress时间。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第一个待传输的子矩阵执行所述压缩操作后,使所述每一个GPU针对各自的第三个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
具体的,Pipeline2在针对第一个待传输的子矩阵执行压缩操作后开启,使其allgather与压缩操作同时进行隐藏了压缩时间。即在使所述每一个GPU针对所述第一个待传输的子矩阵执行所述压缩操作后,使所述每一个GPU针对第三个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第二个待传输的子矩阵执行所述压缩操作的同时,使所述每一个GPU针对各自的所述第三个待传输的子矩阵执行所述allgather操作。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第一个待传输的子矩阵执行所述allgather操作的同时,使所述每一个GPU针对各自的所述第三个待传输的子矩阵执行所述压缩操作。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第三个待传输的子矩阵进行所述解压操作的同时,使所述每一个GPU针对各自的第四个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
具体的,在Pipeline2中,如图7所示,在使所述每一个GPU针对各自的所述第三个待传输的子矩阵执行所述解压操作以及乘以压缩矩阵D后,使所述每一个GPU针对各自的第四个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
在一些实施例中,还包括:
在使所述每一个GPU针对各自的所述第二个待传输的子矩阵执行所述allgather操作的同时,使所述每一个GPU针对各自的所述第四待传输的子矩阵执行所述压缩操作。
需要说明的是,由于allgather传输主要是占用的通信带宽对计算资源占用较低,因此allgather操作与压缩操作两者同时进行不会产生计算资源的争夺,不会相互产生影响。并通过调整每次ring传输数据量的大小、改变zfp每个线程压缩数据量,使其compress与decompress时间小于allgather和reduce时间,使其不会影响传输时间,能够让流水线高效的运行。
在一些实施例中,如图9所示,由于每一个待传输的子矩阵的大小可以控制并且子矩阵的大小有范围限制,因此当每一个GPU待传输的子矩阵的数量大于4时,则按照将第五个待传输的子矩阵作为第一个待传输的子矩阵、将第六个待传输的子矩阵作为第二个待传输的子矩阵,第七个待传输的子矩阵作为第三个待传输的子矩阵,第八个待传输的子矩阵作为第四个待传输的子矩阵按照上述逻辑依次进行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作,并且第五个待传输的子矩阵的reduce操作在第四个待传输的子矩阵执行所述压缩操作后,开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作,依次类推。即,第4N+1个待传输的子矩阵作为第一个待传输的子矩阵、将第4N+2个待传输的子矩阵作为第二个待传输的子矩阵,第4N+3个待传输的子矩阵作为第三个待传输的子矩阵,第4N+4个待传输的子矩阵作为第四个待传输的子矩阵按照上述逻辑依次进行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作,并且第4N+1个待传输的子矩阵的reduce操作在第4N个待传输的子矩阵执行所述压缩操作后,开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。其中,N取正整数。
在一些实施例中,若子矩阵的数量不满足4N个,则不进行压缩和解压的操作,只执行reduce和allgather操作。
总的来说通过双流水线的操作,得以将压缩步骤与ring_allgather步骤、解压与scatter_reduce同时进行,借此来隐藏压缩与解压时间,并且有效的降低其数据传输量,提高传输带宽。并将其结合在nccl(最通用的gpu通信软件)当中,大大增加了使用的便利性。
本发明提出的方案通过分解矩阵,通信的复杂度会大大的降低。在保证收敛精度的情况下,可以删去部分较小的特征值,进一步减少数据的传输。
基于同一发明构思,根据本发明的另一个方面,如图10所示,本发明的实施例还提供了一种计算机设备501,包括:
至少一个处理器520;以及
存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种GPU通信方法的步骤。
基于同一发明构思,根据本发明的另一个方面,如图11所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种GPU通信方法的步骤。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种GPU通信方法,其特征在于,包括以下步骤:
将每一个GPU上待传输的矩阵分解成子矩阵和压缩矩阵,其中每一个所述待传输的矩阵分解得到的所述压缩矩阵相同;
使每一个GPU针对各自的子矩阵执行reduce操作,以使所述每一个GPU得到中间矩阵;
对所述每一个GPU执行allgather操作,以使所述每一个GPU分别向其他所有GPU发送自身的所述中间矩阵;
将所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵分别乘以所述压缩矩阵以得到最终矩阵。
2.如权利要求1所述的方法,其特征在于,使每一个GPU针对各自的子矩阵执行reduce操作,以使所述每一个GPU得到中间矩阵,进一步包括:
对所述每一个GPU上的所述中间矩阵执行压缩操作;
将所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵分别乘以所述压缩矩阵以得到最终矩阵,进一步包括:
对所述每一个GPU接收到的若干个所述中间矩阵和自身的所述中间矩阵块执行解压操作后分别乘以所述压缩矩阵以得到最终矩阵。
3.如权利要求2所述的方法,其特征在于,还包括:
在使所述每一个GPU针对各自的所述第一个待传输的子矩阵执行所述解压操作的同时,使所述每一个GPU针对各自的第二个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
4.如权利要求3所述的方法,其特征在于,还包括:
在使所述每一个GPU针对各自的所述第一个待传输的子矩阵执行所述压缩操作后,使所述每一个GPU针对各自的第三个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
5.如权利要求4所述的方法,其特征在于,还包括:
在使所述每一个GPU针对各自的所述第二个待传输的子矩阵执行所述压缩操作的同时,使所述每一个GPU针对各自的所述第三个待传输的子矩阵执行所述allgather操作。
6.如权利要求4所述的方法,其特征在于,还包括:
在使所述每一个GPU针对各自的所述第一个待传输的子矩阵执行所述allgather操作的同时,使所述每一个GPU针对各自的所述第三个待传输的子矩阵执行所述压缩操作。
7.如权利要求4所述的方法,其特征在于,还包括:
在使所述每一个GPU针对各自的所述第三个待传输的子矩阵进行所述解压操作的同时,使所述每一个GPU针对各自的第四个待传输的子矩阵开始依次执行所述reduce操作、所述压缩操作、所述allgather操作以及所述解压操作。
8.如权利要求7所述的方法,其特征在于,还包括:
在使所述每一个GPU针对各自的所述第二个待传输的子矩阵执行所述allgather操作的同时,使所述每一个GPU针对各自的所述第四待传输的子矩阵执行所述压缩操作。
9.一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1-8任意一项所述的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1-8任意一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011568020.0A CN112765089A (zh) | 2020-12-25 | 2020-12-25 | 一种gpu通信方法、设备以及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011568020.0A CN112765089A (zh) | 2020-12-25 | 2020-12-25 | 一种gpu通信方法、设备以及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112765089A true CN112765089A (zh) | 2021-05-07 |
Family
ID=75695776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011568020.0A Pending CN112765089A (zh) | 2020-12-25 | 2020-12-25 | 一种gpu通信方法、设备以及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112765089A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103532566A (zh) * | 2013-10-15 | 2014-01-22 | 中国科学院微电子研究所 | 一种基于块对角阵观测矩阵构造的信号压缩传感方法 |
CN104485966A (zh) * | 2014-12-01 | 2015-04-01 | 北京邮电大学 | 一种基于信号分解的压缩感知处理和信号重构方法 |
CN111858454A (zh) * | 2020-06-29 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种gpu通信方法、设备以及介质 |
-
2020
- 2020-12-25 CN CN202011568020.0A patent/CN112765089A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103532566A (zh) * | 2013-10-15 | 2014-01-22 | 中国科学院微电子研究所 | 一种基于块对角阵观测矩阵构造的信号压缩传感方法 |
CN104485966A (zh) * | 2014-12-01 | 2015-04-01 | 北京邮电大学 | 一种基于信号分解的压缩感知处理和信号重构方法 |
CN111858454A (zh) * | 2020-06-29 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种gpu通信方法、设备以及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230244749A1 (en) | Gpu communication method and device, and medium | |
CN109543140B (zh) | 一种卷积神经网络加速器 | |
KR20180083030A (ko) | 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법 | |
CN112073221B (zh) | 一种实现网络节点排序的方法及装置 | |
CN107944545B (zh) | 应用于神经网络的计算方法及计算装置 | |
WO2020081399A1 (en) | Network-centric architecture and algorithms to accelerate distributed training of neural networks | |
CN112200300B (zh) | 卷积神经网络运算方法及装置 | |
CN113850389B (zh) | 一种量子线路的构建方法及装置 | |
CN111563599A (zh) | 一种量子线路的分解方法、装置、存储介质及电子装置 | |
CN112633508A (zh) | 一种量子线路的生成方法、装置、存储介质及电子装置 | |
CN110109646A (zh) | 数据处理方法、装置和乘加器及存储介质 | |
CN111353591A (zh) | 一种计算装置及相关产品 | |
CN111242286A (zh) | 一种数据格式变换方法、装置及计算机可读存储介质 | |
CN114764549A (zh) | 基于矩阵乘积态的量子线路模拟计算方法、装置 | |
JP2020024524A (ja) | ニューラルネットワークの全結合層を畳み込み層に置き換えるプログラム | |
CN111008691A (zh) | 一种权值和激活值都二值化的卷积神经网络加速器架构 | |
CN114519425A (zh) | 一种规模可扩展的卷积神经网络加速系统 | |
CN112765089A (zh) | 一种gpu通信方法、设备以及介质 | |
CN112784967B (zh) | 信息处理方法、装置以及电子设备 | |
CN115480919A (zh) | 卷积优化运算方法、装置、计算机设备及存储介质 | |
CN113313253A (zh) | 神经网络压缩方法、数据处理方法、装置及计算机设备 | |
CN114764618B (zh) | 一种针对线性系统的量子预处理方法及装置 | |
US11886983B2 (en) | Reducing hardware resource utilization for residual neural networks | |
Radmanović | A Comparison of Computing Spectral Transforms of Logic Functions using Python Frameworks on GPU | |
CN115906917B (zh) | 一种基于模型算法划分的神经网络模型部署方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210507 |
|
RJ01 | Rejection of invention patent application after publication |