CN111984399A - 运算处理设备及其控制方法以及用于存储程序的存储介质 - Google Patents
运算处理设备及其控制方法以及用于存储程序的存储介质 Download PDFInfo
- Publication number
- CN111984399A CN111984399A CN202010411977.8A CN202010411977A CN111984399A CN 111984399 A CN111984399 A CN 111984399A CN 202010411977 A CN202010411977 A CN 202010411977A CN 111984399 A CN111984399 A CN 111984399A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- averaging
- value
- average
- 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 187
- 238000012545 processing Methods 0.000 title claims abstract description 108
- 230000008569 process Effects 0.000 claims abstract description 170
- 230000015654 memory Effects 0.000 claims abstract description 13
- 238000012935 Averaging Methods 0.000 claims description 97
- 230000002776 aggregation Effects 0.000 description 93
- 238000004220 aggregation Methods 0.000 description 93
- 238000010586 diagram Methods 0.000 description 24
- 238000013500 data storage Methods 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000013135 deep learning Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000006866 deterioration Effects 0.000 description 5
- 210000002569 neuron Anatomy 0.000 description 5
- 230000007423 decrease Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000002542 deteriorative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4818—Threshold devices
- G06F2207/4824—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Biology (AREA)
- Operations Research (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Computational Biology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及运算处理设备及其控制方法以及用于存储程序的存储介质。一种运算处理设备,包括:能够彼此通信的多个节点(N个节点),多个节点中的每个节点包括存储器和处理器,存储器被配置成存储值和操作结果,处理器被配置成当N为2或大于2的自然数、n为1或大于1的自然数并且N≠2n时执行第一处理,其中,第一处理被配置成:将由第一节点保存的值除以2,第一节点是多个节点中的任意节点和按照计数顺序的最后一个节点,通过将多个节点中除第一节点以外的剩余节点进行配对来获得一个或更多个节点对,以及重复地计算由一个或更多个节点对中的每个节点对保存的值的平均值。
Description
技术领域
本文讨论的实施方式涉及运算处理设备、运算处理设备的控制方法以及用于存储程序的非暂态计算机可读存储介质。
背景技术
近年来,在各种领域中已经使用了诸如高性能计算(HPC)、数据科学、机器学习(ML)、深度学习(DL)等的技术。这些技术难以在单个处理器中处理数据以执行大量的计算。因此,当使用这些技术时,引入了将数据划分并分配给多个处理器并且并行地执行计算以提高速度的并行计算机。并行计算机包括由处理器、存储器和通信装置形成的多个节点并且经由网络耦接多个节点以在处理器之间执行数据通信。
例如,当执行DL时,在并行计算机中准备多个神经元层。在每个神经元层上重复地执行从输入数据获得输出数据的正向处理、将输出数据与正确答案进行比较以获得差的反向处理以及通过使用差来更新在每个神经元层中使用的参数的更新处理。由此,执行用于获得在每个神经元层中使用的参数的适当值的参数优化。当在例如图像识别等中用微分系数等表示时,通过后向处理获得的差有时被称为梯度信息。以这种方式,优化参数(或模型参数)以减少模型函数与数据之间的距离。
在参数优化中,执行被称为“AllReduce”处理的处理,在该处理中,针对每个神经元层聚合通过后向处理在每个节点处获取的差,并且通过预定操作获得更新数据并将其分发给每个节点。在Allreduce处理中,例如,将所有节点的梯度信息相加,并且将相加值分发给每个节点。此后,在每个节点处,可以通过将相加后的值除以并行计算机中包括的节点的数目并取平均来获得更新数据。
已知DL计算不同于执行例如32位或64位浮点运算的HPC计算,并且即使精度稍低,所获得的最终结果也几乎与例如HPC计算的结果相当。因此,由低位整数表示模型参数以减少节点之间的数据通信量。可以通过减少数据通信量来加速操作。例如,已经提出支持16位半精度浮点运算并且可以实现与32位浮点运算相比的两倍以上的吞吐量的图形处理单元(GPU)。存在通过使用作为定点数的低位整数来进一步提高吞吐量的技术。
然而,在具有例如四个节点的并行计算机中,即使梯度信息是例如8位值,在Allreduce处理期间也可能不可避免地需要10位的寄存器。例如,如果四个节点中的每个节点中的8位值是无符号二进制数“11111111”,则这些值的相加后的值变为10位值“1111111100”。在这种情况下,最终以16位表达来执行操作,因此吞吐量减少1/2。当并行计算机中包括的节点的数目增加至512时,例如,相加后的值可能变为17位,并且在这种情况下,以32位表达来执行操作,因此吞吐量减少至1/4。
因此,为了抑制溢出,可以在相加之前预先将每个节点的梯度信息除以节点的数目。然而,在这种情况下,尽管可以减少溢出的发生,但是当并行计算机中包括的节点的数目大时,商变得非常小或者变为0,因此在相加时发生误差,从而使操作精度劣化。例如,如果并行计算机中包括的512个节点中的每个节点中的8位值是无符号二进制数“11111111”,则通过将该值除以节点数目“512”获得的结果是8位值“00000000”。因此,难以通过避免溢出来维持操作精度。
以这种方式,在相关技术中,当并行计算机的节点数目增加时,吞吐量降低,并且如果尝试通过使用低位整数来提高吞吐量,则操作精度劣化,因此难以通过获得节点平均值来抑制操作精度的劣化。
[引用列表]
[专利文献]
日本公开特许公报第2000-339278号。
日本公开特许公报第2000-20501号。
发明内容
[技术问题]
如上面所描述的,在相关技术中,难以通过获得节点平均值来抑制操作精度的劣化。
因此,在一个方面中,目的是提供可以通过获得节点平均值来抑制操作精度的劣化的运算处理设备、程序和运算处理设备的控制方法。
[问题的解决方案]
根据实施方式的方面,一种运算处理设备包括:能够彼此通信的多个节点(N个节点),多个节点中的每个节点包括存储器和处理器,存储器被配置成存储值和使用该值进行的操作结果,处理器被配置成当N为2或大于2的自然数、n为1或大于1的自然数并且N≠2n时执行第一处理,其中,第一处理被配置成将由第一节点保存的值除以2,第一节点是多个节点中的任意节点和按照计数顺序的最后一个节点,通过将多个节点中除第一节点以外的剩余节点进行配对来获得一个或更多个节点对,并且重复地计算由一个或更多个节点对中的每个节点对保存的值的平均值。
[本发明的有益效果]
根据一个方面,可以通过获得节点平均值来抑制操作精度的劣化。
附图说明
图1是示出一个示例中的并行计算机的示例的框图;
图2是示出节点的功能配置的示例的框图;
图3是示出由编号分配单元进行的MPI处理是N=4的情况的图;
图4是示出梯度信息的聚合处理的示例的图;
图5是示出流水线形式的平均处理的图;
图6是示出计算两个节点的保存数据的平均值的方法的图;
图7是示出在一个示例中由并行计算机进行的AllReduce处理的流程图;
图8是示出节点的硬件配置的示例的框图;
图9是示出节点的计数顺序被固定的情况的示例的图;
图10是示出其中节点的计数顺序被改变的示例的图;
图11是示出其中节点的计数顺序被改变的另一示例的图;
图12是示出正常所有节点平均处理的示例的流程图;以及
图13是示出当N=6且p=3时图12中的处理的图。
具体实施方式
在下文中,将参照附图描述本申请中公开的运算处理设备、程序和运算处理设备的控制方法的示例。
[示例]
图1是示出一个示例中的并行计算机的示例的框图。并行计算机1是具有多个节点10-1至10-N的计算机的示例并且是该示例中的运算处理设备的示例。N是2或大于2的自然数。节点10-1至10-N经由网络5彼此耦接并且可以经由网络5相互发送和接收数据。网络5是通信路径的示例。例如,节点10-1至10-N可以经由网络5进行通信。
节点10-1至10-N执行例如DL。在DL中,节点10-1至10-N执行参数优化。节点10-1至10-N在优化参数时计算更新数据。节点10-1至10-N中的每个节点具有作为用于计算更新数据的数值数据的梯度信息并且通过使用节点中的每个节点的梯度信息来执行AllReduce处理以计算更新数据。在下面的描述中,当节点10-1至10-N彼此不相区分时,节点也可以被称为“节点10”。
接下来,将参照图2描述由节点10执行的AllReduce处理。图2是示出节点的功能配置的示例的框图。在该示例中,将描述作为Allreduce处理中的操作而执行平均的情况作为示例。然而,AllReduce处理中的操作可以是其他操作,例如,加法、乘法、获取最大值、获取最小值等。
如图2所示,节点10-1包括编号分配单元101、执行处理确定单元102、正常聚合处理执行单元103、成对聚合处理执行单元104、数据发送单元105、数据接收单元106和数据存储单元107。由于节点10-2至10-N具有与节点10-1的配置相同的配置,所以将省略对节点10-2至10-N的配置的图示和描述。节点10-1至10-N中的每个节点执行如上面描述的DL中的各种处理,但是为了方便起见,在图2中,将描述执行AllReduce处理的功能并且将省略对其他功能的图示和描述。
数据存储单元107存储梯度信息。数据存储单元107在计算更新数据的过程中存储操作结果、更新数据等。
编号分配单元101使用例如消息传递接口(MPI)功能来生成如图3所示的作为可以相互通信的进程组的通信器2。图3是示出由编号分配单元进行的MPI处理为N=4的情况的图。由于节点10-1至10-4中的每个节点执行进程,所以通信器2可以被认为是如图3所示的节点10-1至10-4的组。通信器2中包括的节点10-1至10-4中的每个节点保存关于通信器2的信息。在该示例中,将描述节点10-1至10-4中的每个节点执行一个进程的情况作为示例。
编号分配单元101执行MPI功能以获取属于通信器2的进程的数目,例如,在该示例中为作为节点10的数目N的大小。在该示例中,由于在通信器2中包括节点10-1至10-4,因此编号分配单元101获取“4”作为大小。编号分配单元101执行MPI功能以对属于通信器2的每个进程设定作为标识编号的等级(rank)。在该示例中,该等级被分配以从0开始通过从属于通信器2的所有进程的数目依次减“1”获得的值。在该示例中,由于节点10-1至10-4中的每个节点执行一个进程,因此等级也可以被称为分配给节点10-1至10-4中的每个节点的编号。编号分配单元101将节点10-1的等级设置为“0”,将节点10-2的等级设置为“1”,将节点10-3的等级设置为“2”,并且将节点10-4的等级设置为“3”。此后,编号分配单元101将大小和分配给节点10-1至10-4中的每个节点的等级信息输出至执行处理确定单元102。
返回至图2的描述,执行处理确定单元102从编号分配单元101接收关于通信器2的大小和分配给每个节点10的等级的信息的输入。执行处理确定单元102确定AllReduce处理的目标的数目是否是“2”的幂。Allreduce处理的目标的数目是由属于通信器2的节点10执行的进程的总数目。在该示例中,每个节点10执行一个进程,Allreduce处理的目标的数目是通信器2中包括的节点10的数目,该数目与通信器2的大小匹配。
在节点10的数目不是“2”的幂的情况下,执行处理确定单元102确定执行正常所有节点平均处理。例如,正常所有节点平均处理是下述处理:在一个节点10中收集所有节点10的梯度信息以获得梯度信息的和,将该和分发给每个节点10,然后每个节点10通过将梯度信息的和除以节点10的数目来获得平均值。在这种情况下,执行处理确定单元102指示正常聚合处理执行单元103执行Allreduce处理。执行处理确定单元102将大小信息和每个节点10的等级信息发送至正常聚合处理执行单元103。
另一方面,在节点10的数目是“2”的幂的情况下,执行处理确定单元102确定使用成对平均来执行所有节点平均处理。在该示例中,由于节点10的数目为四,因此节点10的数目是“2”的2次幂,并且执行处理确定单元102确定使用成对平均来执行所有节点平均处理。在该示例中,使用成对平均进行的所有节点平均处理是下述处理:将节点10每两个节点——所述两个节点中的每个节点保存梯度信息或使用梯度信息的进行操作结果——进行配对,并且重复地进行成对的两个节点保存的值的平均值的计算。稍后将描述使用成对平均进行的所有节点平均处理的细节和每个示例。在这种情况下,执行处理确定单元102指示成对聚合处理执行单元104执行AllReduce处理。执行处理确定单元102将大小信息和每个节点10的等级信息发送至正常聚合处理执行单元103。
在节点10的数目不是2的幂的情况下,正常聚合处理执行单元103从执行处理确定单元102接收执行AllReduce处理的指示。正常聚合处理执行单元103基于等级来确定属于通信器2的节点10之中的聚合梯度信息的聚合节点。
在自身节点10不是聚合节点的情况下,使数据发送单元105将存储在数据存储单元107中的梯度信息发送至聚合节点。此后,正常聚合处理执行单元103从数据接收单元106接收梯度系数的和的输入。正常聚合处理执行单元103通过将梯度系数的和除以大小来计算平均值并且将计算出的平均值存储在数据存储单元107中。
在自身节点10是聚合节点的情况下,正常聚合处理执行单元103从数据接收单元106接收从另一节点10发送的梯度信息的输入。正常聚合处理执行单元103获得梯度信息的和并且使数据发送单元105将所获得的和发送至每个节点10。此后,正常聚合处理执行单元103通过将梯度系数的和除以大小来计算平均值并且将所计算的平均值存储在数据存储单元107中。
在节点10的数目是“2”的幂的情况下,成对聚合处理执行单元104从执行处理确定单元102接收执行AllReduce处理的指令。成对聚合处理执行单元104初始化表示重复次数的i并且设置i=0。成对聚合处理执行单元104将j设置为0或大于0的整数并且将具有2j和2j+1的等级的节点10设置为一对。例如,在自身节点10的等级是2j的情况下,成对聚合处理执行单元104确定具有2j+1的等级的节点10与自身节点10配对。在自身节点10的等级为2j+1的情况下,成对聚合处理执行单元104确定具有2j的等级的节点10与自身节点10配对。具有2j+1的等级的节点10的成对聚合处理执行单元104将存储在数据存储单元107中的梯度信息发送至被设置成一对的具有2j的等级的节点10。
另一方面,具有2j的等级的节点10的成对聚合处理执行单元104从被设置成一对的具有2j+1的等级的节点10接收梯度信息。接下来,成对聚合处理执行单元104计算存储在自身节点10的数据存储单元107中的梯度信息和接收到的梯度信息的平均值。成对聚合处理执行单元104将操作结果存储在数据存储单元107中。
接下来,成对聚合处理执行单元104将i增加1并且在大小被表示为“2”的n次幂时确定i是否已经达到n。n是1或大于1的自然数。如果i尚未达到n,则成对聚合处理执行单元104从0开始按顺序向已经计算出梯度信息的平均值的节点10分配编号,例如按顺序从最低的等级开始向具有2j的等级的节点10分配编号。成对聚合处理执行单元104将j设置为等于或大于0的整数并且将具有分配编号2j和2j+1的节点10设置为一对。
具有分配编号2j的节点10的成对聚合处理执行单元104从具有分配编号2j+1的节点10接收操作结果。接下来,成对聚合处理执行单元104计算存储在自身节点10的数据存储单元107中的操作结果和接收到的操作结果的平均值。成对聚合处理执行单元104将操作结果存储在数据存储单元107中。
在下文中,成对聚合处理执行单元104重复进行编号分配、从具有分配编号2j的节点10至具有分配编号2j+1的节点10的数据发送以及操作结果的平均值的计算,直到i达到n。
在i达到n的情况下,由于除了自身节点10以外不存在平均值计算结果,因此成对聚合处理执行单元104确定存储在自身节点10的数据存储单元107中的操作结果是所有梯度信息的平均值。成对聚合处理执行单元104指示数据发送单元105将存储在数据存储单元107中的所有梯度信息的平均值发送至每个节点10。如上面描述的,i是已经执行的两个节点10的平均处理的重复次数,并且如果当大小被表示为“2”的幂时重复次数达到乘子(multiplier),则获得所有节点10的梯度信息的平均值。
接下来,将参照图4描述当使用节点10-1至10-4时的梯度信息的聚合处理的流程。图4是示出梯度信息的聚合处理的示例的图。i和节点10-1至10-4中的每个节点的等级或分配编号被布置为下标W,并且表示了梯度信息的聚合处理的每个阶段中的节点10-1至10-4中的每个节点。在两个节点10的第i(i是0或大于0的整数)个平均处理中,在具有操作结果的节点10之中,将从较低等级编号开始的第j(j是0或大于0的整数)个节点10表示为节点Wij。在图4中,在两个节点10的平均处理中,不包括已经将梯度信息发送至其他节点10的节点10。
如图4所示,在i=0处的两个节点10的平均处理中,节点10-1至10-4被表示为节点W00、节点W01、节点W02和节点W03。由于节点10-1的等级是0=2j(j=0),所以节点10-1与具有1=2j+1(j=0)的等级的节点10-2配对。由于节点10-3的等级是2=2j(j=1),所以节点10-3与具有3=2j+1(j=1)的等级的节点10-4配对。
节点10-2的梯度信息被发送至节点10-1,并且节点10-1计算节点10-1的梯度信息和节点10-2的梯度信息的平均值。节点10-4的梯度信息被发送至节点10-3,并且节点10-3计算节点10-3的梯度信息和节点10-4的梯度信息的平均值。
在i=1处的两个节点10的平均处理中,节点10-1被表示为节点W10,并且节点10-3被表示为节点W11。由于节点10-1具有0=2j(j=0)的分配编号并且节点10-3具有1=2j+1(j=0)的分配编号,因此节点10-3是操作结果的发送侧。
因此,节点10-3将要保存的操作结果发送至节点10-1。节点10-1计算由节点10-1保存的操作结果和由节点10-3保存的操作结果的平均值。
在i=2处的两个节点10的平均处理中,节点10-1被表示为节点W20。在该示例中,通信器2的大小是“4”,并且此时,当通信器2的大小由“2”的幂表示时,i达到乘子。因此,节点10-1确定使用成对平均进行的所有节点平均处理的完成。
返回至图2的描述,数据发送单元105从正常聚合处理执行单元103或成对聚合处理执行单元104接收数据发送指令。数据发送单元105将指定数据发送至由指令指定的目的地节点10。
数据接收单元106接收从另一节点10输入的操作结果。数据接收单元106将接收到的数据输出至作为目的地的正常聚合处理执行单元103或成对聚合处理执行单元104。
如上面所描述的,优选地,在本示例中,为了使成对聚合处理执行单元104执行两个节点10的平均处理,满足以下三个条件。第一条件是Allreduce处理的目标的数目是“2”的幂。第二条件是要被平均的值是“2”的补码表示或者是无符号的。第三条件是操作顺序构成二叉树。
根据本示例的成对聚合处理执行单元104将使用自身节点10的梯度信息和操作结果进行的平均处理的执行流水线化以加速使用成对平均进行的所有节点平均处理的执行。接下来,将参照图5描述流水线形式的由成对聚合处理执行单元104执行的平均处理。图5是示出流水线形式的平均处理的图。将描述节点10-1从节点10-2接收梯度信息并计算平均值的情况。
在图5中,缓冲器111是用于存储接收到的数据和包括在数据存储单元107中的节点10-1的操作结果的存储区域。缓冲器112是用于包括在数据存储单元107中的节点10-1的接收到的数据的临时存储区域。缓冲器113是包括在节点10-2的数据存储单元107中的要发送的数据的存储区域。例如,存储在缓冲器111中的阵列数据是节点10-1的梯度信息的示例。存储在缓冲器113中的阵列数据是节点10-2的梯度信息的示例。当获取节点10-1和节点10-2的梯度信息的平均值时,节点10-2将阵列数据的部分数据发送至节点10-1。节点10-1通过利用与接收到的阵列数据的部分数据相对应的自身节点10-1的阵列数据的部分数据重复平均值的计算来获得整个阵列数据的平均值。
在第一阶段中,节点10-1接收存储在缓冲器113的区域202中的部分数据并且将该部分数据存储在缓冲器112的区域203中。
在下一第二阶段中,节点10-1计算存储在缓冲器111的区域201中的部分数据和存储在缓冲器112的区域203中的部分数据的平均值204并且将平均值204存储在缓冲器111的区域201中。与该处理并行地,节点10-1接收存储在缓冲器113的区域206中的部分数据并且将该部分数据存储在缓冲器112的区域207中。
在下一第三阶段中,节点10-1计算存储在缓冲器111的区域205中的部分数据和存储在缓冲器112的区域207中的部分数据的平均值208并且将平均值208存储在缓冲器111的区域205中。与该处理并行地,节点10-1接收存储在缓冲器113的区域210中的部分数据并且将该部分数据存储在缓冲器112的区域211中。
此后,节点10-1并行地重复作为梯度信息的阵列数据中的部分数据的平均处理并且完成整个阵列数据的平均值的计算。以这种方式,通过以流水线的形式重复作为梯度信息的阵列数据中的部分数据的平均处理,成对聚合处理执行单元104可以使用成对平均加速所有节点平均处理的执行。
当成对聚合处理执行单元104计算由两个节点10保存的值的平均值时,通过执行以下操作来避免溢出的发生。将参照图6描述由成对聚合处理执行单元104进行的对两个节点10保存的值的平均值的计算。图6是示出用于计算由两个节点保存的数据的平均值的方法的图。
在由接收侧节点10保存的值为x0并且发送侧节点10的值为x1的情况下,成对聚合处理执行单元104通过计算x0和x1的逻辑积来计算第一值。成对聚合处理执行单元104通过获得x0和x1的异或并且执行1位右移来计算第二值。在1位右移中,成对聚合处理执行单元104将0加至移位后的值的第一位。1位右移对应于除以“2”。成对聚合处理执行单元104通过将第一值和第二值相加来计算x0和x1的平均值。
例如,当逻辑积被表示为“&”,异或被表示为“^”,并且1位右移操作被表示为“>>1”时,成对聚合处理执行单元104通过执行被表示为(x0&x1)+((x0^x1)>>1)的操作来获得x0和x1的平均值。该操作方法是针对每个位计算平均值并随后将其相加的方法,并且是使用向负无穷舍入的舍入方法。
当x0与x1之间位值相同时,根据以下原理获得平均值。首先,通过x0&x1提取具有相同位值的位。在这种情况下,由于位值相同,所以x0&x1实际上是平均值。另一方面,当x0与x1之间位值不同时,通过以下原理获得平均值。首先,通过x0^x1提取具有不同位值的位。由于位值不同,所以除以2的操作被转换成移位操作(x0^x1)>>1,由此获得具有不同位值的位的平均值。
例如,将在x0=11001100且x1=10101010的情况下描述具体示例。在这种情况下,如果x0和x1被简单地相加并除以2,则在相加期间出现数字进位,并且出现从8位数据区域溢出。
另一方面,本示例中的成对聚合处理执行单元104通过操作221计算x0和x1的逻辑积。在这种情况下,成对聚合处理执行单元104获取“10001000”作为操作221的结果的第一值。在操作221中,没有发生溢出。
成对聚合处理执行单元104通过操作222获得x0与x1的异或并且通过操作223执行1位右移。在这种情况下,成对聚合处理执行单元104获取“01100110”作为操作222的结果的第二值。即使在操作222中也不会发生溢出。
成对聚合处理执行单元104通过操作224计算第一值和第二值的相加值。由此,成对聚合处理执行单元104获得“101111011”作为操作结果。在这种情况下,由于第二值的最高有效位是0,因此不会由于相加而发生溢出。计算值等于通过简单地将x0和x1相加并除以“2”而得到的x0和x1的计算平均值。例如,成对聚合处理执行单元104也可以通过该操作来计算x0和x1的平均值。以这种方式,成对聚合处理执行单元104可以计算x0和x1的平均值,而不会导致溢出。
接下来,将参照图7描述在一个示例中由并行计算机1执行的AllReduce处理。图7是示出在一个示例中由并行计算机进行的AllReduce处理的流程图。在下面的描述中,节点10所保存的梯度信息和操作结果可以被统称为“保存数据”。
图8是示出节点的硬件配置的示例的框图。图8所示的节点10包括中央处理单元(CPU)21、存储器22和通信装置23。CPU 21是执行操作并且控制所有节点10的处理器的示例。CPU 21执行存储在存储器22中的程序,从而实现图2所示的各个单元101至104的功能。例如,CPU 21可以执行图7所示的Allreduce处理。
存储器22是用于存储程序、数据等的存储装置的示例,并且可以形成图2中所示的数据存储单元107。存储器22可以由诸如便携式记录介质、半导体存储装置、磁记录介质、光学记录介质或磁光记录介质的计算机可读记录介质形成。便携式记录介质包括通用串行总线(USB)存储器等。半导体存储装置包括闪存等。光学记录介质包括致密盘只读存储器(CD-ROM)、数字多功能盘(DVD)等。当诸如盘等的磁记录介质、光学记录介质或磁光记录介质用作存储器22时,记录介质被加载至驱动器例如盘驱动器中,并且由驱动器从记录介质读取程序等,以及根据情境需要将数据等写入记录介质中。
通信装置23是能够将节点10耦接至网络5的发送/接收装置的示例,并且可以形成图2中所示的数据发送单元105和数据接收单元106。
无需多言的是,节点10的硬件配置不限于图8中所示的配置。
当开始图7中的AllReduce处理时,编号分配单元101执行MPI处理以生成通信器2并且为通信器2的大小和属于所生成的通信器2的每个节点10分配等级(步骤S1)。此后,编号分配单元101将通信器2的大小信息和等级信息输出至执行处理确定单元102。
执行处理确定单元102从编号分配单元101接收通信器2的大小信息和等级信息的输入。执行处理确定单元102将通信器2的大小设置为目标的数目N,所述目标的数目N是要经受AllReduce处理的节点10的数目N。执行处理确定单元102确定目标的数目N是否可以表示为“2”的n次幂,例如N=2n(步骤S2)。
在目标的数目N可以表示为“2”的n次幂(步骤S2:是)的情况下,执行处理确定单元102请求成对聚合处理执行单元104执行AllReduce处理。响应于执行AllReduce处理的请求,成对聚合处理执行单元104将i初始化为0(步骤S3)。
接下来,成对聚合处理执行单元104将j初始化为0(步骤S4)。
接下来,成对聚合处理执行单元104从尚未将保存的数据发送至另一节点10的较低等级侧起按顺序从0开始顺序地分配编号作为分配编号。其分配编号被表示为2j+1的节点10的成对聚合处理执行单元104将由自身节点10保存的数据发送至其分配编号被表示为2j的节点10。另一方面,其分配编号被表示为2j的节点10计算自身节点10的保存数据和接收到的保存数据的平均值。在两个节点10的第i个平均处理中,其分配编号被表示为2j的节点10的保存数据是Wi(2j),并且其分配编号被表示为2j+1的节点10的保存数据是Wi(2j+1)。在两个节点10的第(i+1)个平均处理中,将从较低等级侧起第j个节点10的保存数据表示为W(i+1)j。在这种情况下,在第i个处理中其分配编号被表示为2j的节点10成为第i+1个处理中的第j个节点10,并且其成对聚合处理执行单元104执行被表示为W(i+1)j=1/2·(Wi(2j)+Wi(2j+1))的操作(步骤S5)。
成对聚合处理执行单元104确定当N被表示为2的幂时j是否达到了乘子,例如j<N/2i-1(步骤S6)。如果j<N/2i-1(步骤S6:是),则成对聚合处理执行单元104将j增加1(步骤S7)并且返回至步骤S5的处理。
另一方面,如果不满足j<N/2i-1(步骤S6:否),则成对聚合处理执行单元104执行同步处理(步骤S8)。同步处理是等待直到其分配编号为2j的所有第i个节点10中完成平均处理的处理。
接下来,成对聚合处理执行单元104将i增加1(步骤S9)。
接下来,成对聚合处理执行单元104确定当通信器2的大小被表示为“2”的幂时i是否达到乘子,例如是否i<n(步骤S10)。如果i<n(步骤S10:是),则成对聚合处理执行单元104返回至步骤S4的处理。
另一方面,当不满足i<n时(步骤S10:否),成对聚合处理执行单元104确定作为所有节点10的梯度信息的平均值的Av为Wi0(步骤S11),并且处理结束。
另一方面,当目标的数目N不能被表示为“2”的n次幂(步骤S2:否)时,执行处理确定单元102请求正常聚合处理执行单元103执行AllReduce处理。响应于执行Allreduce处理的请求,正常聚合处理执行单元103例如根据下面的等式(1)执行正常所有节点平均处理(步骤S12),并且处理结束。
如上面所描述的,如果目标的数目N可以被表示为“2”的n次幂,则根据本实例的并行计算机1通过重复其中两个节点被配对的AllReduce处理的操作来对所有节点执行AllReduce处理。作为结果,并行计算机1可以减少操作错误并且抑制数据传输量,并且可以在不牺牲操作精度的情况下提高吞吐量。并行计算机1可以通过使用逻辑积和异或的操作获得两个值的平均值来在不导致溢出的情况下对所有节点执行平均处理。与节点间通信和从缓冲器的数据读取和写入处理相比,平均操作在非常短的时间内完成。通过将平均处理和从缓冲器读取数据以及向缓冲器写入数据的处理中的数据通信流水线化,并行计算机1可以交叠并减少(hide)处理时间。由此,并行计算机1可以抑制由于平均处理的次数的增加而导致的性能劣化。
在步骤S12中,正常聚合处理执行单元103可以响应于执行AllReduce处理的请求而根据例如下面的等式(2)执行正常所有节点平均处理。p为满足2p-1<N<2p的自然数。
在上面的等式(2)的最右边的数学表达式中,项xi/2p是通过将由每个节点10保存的值除以“2”的p次方获得的商。项Σ是通过将项xi/2p从i=1至i=N-1相加而获得的值。项2p/N是等于或大于“1”并且小于“2”的值,其由N和p唯一确定,例如,在偶数的情况下,重复取两个值的平均值的处理,以及在奇数的情况下,重复仅将一个值除以“2”并且取另外的两个值的平均值的处理,并且最后乘以固定值2p/N。
以这种方式,虚节点被添加至实际节点,或者从实际节点中选择“2”的幂的节点,使得要经受平均操作的节点的数目N变为“2”的幂。虚节点分布在实际节点之中以避免负载集中在特定节点上。
当节点的计数顺序被固定时,存在只有由特定节点保存的值持续被偏置地除以“2”并且商非常小或者甚至为零的可能性。图9是示出节点的计数顺序被固定的情况的示例的图。图9示出了其中节点10的数目是17,并且“节点编号”的行指示分配给节点10的节点10的编号“0”至“16”的示例。如上面所描述的,当每个节点10执行一个进程时,分配给节点10的编号和分配给由节点10执行的进程的等级是相同的。在“第一平均”至“第五平均”的每一行中,数字“0”、...指示执行由两个节点10保存的值的平均操作的位置的顺序。在每一行中,用灰点填充的数字指示由一个节点10保存的值被除以“2”的位置(例如,1/2操作)。
在图9的第一平均中,在数字“0”的位置处执行编号“0”和“1”处的节点10的平均操作,...,在数字“7”的位置处执行编号“14”和“15”处的节点10的平均操作,以及在用灰点填充的数字“8”的位置处对由编号“16”的节点10保存的值执行1/2操作。在第二平均中,在数字“0”的位置处执行在第一平均中的数字“0”和“1”的位置处获得的值的平均操作,...,以及在数字“3”的位置处执行在第一平均中的数字“6”和“7”的位置处获得的值的平均操作。在第二平均中,在用灰点填充的数字“4”的位置处对第一平均中的数字“8”的值执行1/2操作。在第三平均中,在数字“0”的位置处执行在第二平均中的数字“0”和“1”的位置处获得的值的平均操作,以及在数字“1”的位置处执行在第二平均中的数字“2”和“3”的位置处获得的值的平均操作。在第三平均中,在用灰点填充的数字“2”的位置处对第二平均中的数字“4”的值执行1/2操作。在第四平均值中,在数字“0”的位置处执行在第三平均中的数字“0”和“1”的位置处获得的值的平均操作,以及在用灰点填充的数字“1”的位置处对在第三平均中的数字“2”处的值执行1/2操作。在第五平均中,在数字“0”的位置处执行在第四平均中的数字“0”的位置处获得的值和在第四平均中的数字“1”的位置处获得的值的平均操作。
例如,在该示例中,上面的等式(2)如下。
即使节点的计数顺序被随机化,也可能发生当节点的计数顺序被固定时发生的上述现象。
因此,将描述改变节点的计数顺序的情况。图10是示出其中节点的计数顺序被改变的示例的图。图10示出了其中节点10的数目是17并且“节点编号”的行指示分配给节点10的节点10的编号“0”至“16”的示例。如上面所描述的,当每个节点10执行一个进程时,分配给节点10的编号和分配给由节点10执行的进程的等级是相同的。在“第一平均”至“第五平均”的每一行中,用灰点填充的数字“0”指示要除以“2”的第一位置(例如1/2操作),并且数字“0”、“1”、...指示执行由两个节点10保存的值的平均操作的位置的顺序。
在图10的第一平均中,对由用灰点填充的数字“0”的位置处的编号“16”处的节点10保存的值执行1/2操作,并且在数字“1”的位置处对编号“0”和“1”处的节点10执行平均操作,...,在数字“8”的位置处对编号“14”和“15”处的节点10执行平均操作。在第二平均中,在用灰点填充的数字“0”的位置处对第一平均中的数字“8”的值执行1/2操作。在第二平均中,在数字“1”的位置处执行在第一平均中的数字“0”和“1”的位置处获得的值的平均操作,并且在数字“4”的位置处执行在第一平均中的数字“6”和“7”的位置处获得的值的平均操作。在第三平均中,在用灰点填充的数字“0”的位置处对第二平均中的数字“4”的值执行1/2操作。在第三平均中,在数字“1”的位置处执行在第二平均中的数字“0”和“1”的位置处获得的值的平均操作,并且在数字“2”的位置处执行在第二平均中的数字“2”和“3”的位置处获得的值的平均操作。在第四平均中,在用灰点填充的数字“0”的位置处对第三平均中的数字“2”的值执行1/2操作。在第四平均中,在数字“1”的位置处执行在第三平均中的数字“0”和“1”的位置处获得的值的平均操作。在第五平均中,在数字“0”的位置处执行在第四平均中的数字“0”和“1”的位置处获得的值的平均操作。
如图10所示,当节点10的数目N为奇数时,代替固定按照计数顺序的第一个,首先使用顺序为按照计数顺序的最后一个节点10,并且该节点10的值被除以“2”。当操作结果的数目为奇数时,以先前最后一个操作结果作为第一的顺序将节点10的值除以“2”,执行先前第一操作结果和随后的操作结果的平均操作,并且此后,按照先前操作结果的顺序执行两个连续操作结果的平均操作。当操作结果的数目为偶数时,执行先前第一操作结果和随后的操作结果的平均操作,并且此后,按照先前操作结果的顺序执行两个连续操作结果的平均操作。即使当具有最大奇数的节点10的数目N为2p+1+1时,也在尽可能避免重复值除以“2”的情况下执行平均,从而抑制要被除以“2”的位置的偏置(bias)。
图11是示出其中节点的计数顺序被改变的另一示例的图。图11示出了其中节点10的数目是31,并且“节点编号”的行指示分配给节点10的节点10的编号“0”至“30”的示例。如上面所描述的,当每个节点10执行一个进程时,分配给节点10的编号和分配给由节点10执行的进程的等级是相同的。在“第一平均”至“第五平均”的每一行中,用灰点填充的数字“0”指示要除以“2”的第一位置(例如1/2操作),数字“0”、“1”、...指示执行由两个节点10保存的值的平均操作的位置的顺序。
在图11的第一平均中,对由用灰点填充的数字“0”的位置处的编号“30”处的节点10保存的值执行1/2操作,并且在数字“1”的位置处对编号“0”和“1”处的节点10执行平均操作,...,在数字“15”的位置处对编号“28”和“29”处的节点10执行平均操作。在第二平均中,在数字“0”的位置处执行在第一平均中的数字“0”和“1”的位置处获得的值的平均操作。在第二平均中,在数字“1”的位置处执行在第一平均中的数字“2”和“3”的位置处获得的值的平均操作,并且在数字“7”的位置处执行在第一平均中的数字“14”和“15”的位置处获得的值的平均操作。在第三平均中,在数字“0”的位置处执行在第二平均中的数字“0”和“1”的位置处获得的值的平均操作,并且在数字“1”的位置处执行在第二平均中的数字“2”和“3”的位置处获得的值的平均操作。在第三平均中,在数字“2”的位置处执行在第二平均中的数字“4”和“5”的位置处获得的值的平均操作,并且在数字“3”的位置处执行在第二平均中的数字“6”和“7”的位置处获得的值的平均操作。在第四平均中,在数字“0”的位置处执行在第三平均中的数字“0”和“1”的位置处获得的值的平均操作,并且在数字“1”的位置处执行在第三平均中的数字“2”和“3”的位置处获得的值的平均操作。在第五平均中,在数字“0”的位置处执行在第四平均中的数字“0”和“1”的位置处获得的值的平均操作。
如图11所示,例如,当节点10的数目是2p-1时,仅出现一个下述位置,在该位置处,首先使用顺序为按照计数顺序的最后一个节点10并且将由该节点10保存的值除以“2”。例如,代替固定按照计数顺序的第一个,而是首先使用顺序为按照计数顺序的最后一个节点10,并且将由最后一个节点10保存的值除以“2”。执行先前第一操作结果和随后的操作结果的平均操作,并且此后,按照先前操作结果的顺序执行两个连续操作结果的平均操作。因此,执行平均以尽可能避免重复值除以“2”,从而抑制要被除以“2”的位置的偏置。因此,在该示例中,上面的等式(2)如下。
图12是示出正常所有节点平均处理的示例的流程图。当图7所示的步骤S2中的确定结果是否时,由图2所示的正常聚合处理执行单元103例如根据上面的等式(2)执行图12所示的处理。p是满足2p-1<N<2p的自然数。将描述每个节点10执行一个进程的情况作为示例。前提是要被平均的值满足上述第二条件,即该值是“2”的补码表示或者是无符号的。
正常聚合处理执行单元103按照从“0”至“N-1”的计数顺序将节点10的编号分配给节点10(步骤S121)。正常聚合处理执行单元103设置i=0和N'=N(步骤S122)并且设置j=0(步骤S123)。正常聚合处理执行单元103确定N'是否是偶数(步骤S124)。如果确定结果为是,则处理进行至步骤S125,如果确定结果为否,则处理进行至下面描述的步骤S141。
正常聚合处理执行单元103执行被表示为W(i+1)j=(1/2)·(Wi(2j)+Wi(2j+1))的操作(步骤S125)。正常聚合处理执行单元103将j增加1(步骤S126)并且确定是否满足j<N'/2(步骤S127)。如果步骤S127中的确定结果为是,则处理返回至步骤S125;如果为否,则处理进行至步骤S128。正常聚合处理执行单元103计算N'=N'/2(步骤S128)。
在步骤S128之后,正常聚合处理执行单元103执行同步处理(步骤S129)。同步处理是等待直到在其分配编号为2j的所有第i个节点10中完成平均处理的处理。在步骤S129之后,正常聚合处理执行单元103将i增加1(步骤S130)并且确定是否满足i<p(步骤S131)。如果步骤S131中的确定结果为是,则处理返回至步骤S123,如果为否,则处理进行至步骤S132。正常聚合处理执行单元103确定作为节点10的梯度信息的平均值的Av为Wi0·2p/N(步骤S132),并且处理结束。
另一方面,当在步骤S124的确定结果为否时,正常聚合处理执行单元103执行被表示为W(i+1)0=(1/2)·(Wi(N'-1))的操作(步骤S141)并且执行被表示为W(i+1)(j+1)=(1/2)·(Wi(2j)+Wi(2j+1))的操作(步骤S143)。正常聚合处理执行单元103将j增加1(步骤S143)并且确定是否满足j<(N'/2-1/2)(步骤S144)。如果步骤S144中的确定结果为是,则处理返回至步骤S142;如果为否,则处理进行至步骤S145。正常聚合处理执行单元103执行被表示为N'=N'/2+1/2的操作(步骤S145),并且处理进行至上面描述的步骤S129。
图13是示出当N=6和p=3时图12中的处理的图。在图13中,在i=0(N'是偶数)处的两个节点10的平均处理中,分别在具有编号“0”至“5”的节点处获得值W00至W05。
在i=1(N'是奇数)处的两个节点10的平均处理中,根据分别由具有编号“0”和“1”的节点10保存的值W00和W01来计算值W10=(1/2)·(W00+W01)。根据由具有编号“2”和“3”的节点10保存的值W02和W03来计算值W11=(1/2)·(W02+W03)。根据由具有编号“4”和“5”的节点10保存的值W04和W05来计算值W12=(1/2)·(W04+W05)。
在i=2(N'是偶数)处的两个节点10的平均处理中,根据所计算的值W10和W11来计算值W21=(1/2)·(W10+W11)。根据计算值W12计算值W20=W12/2。
在i=3(i=p)处的两个节点10的平均处理中,根据所计算的值W21和W22来计算值W30=(1/2)·(W20+W21)。
因此,在图13所示的示例中,正常聚合处理执行单元103确定作为所有六个节点10的梯度信息的平均值的Av是Wi0·2p/N=W30·23/6。
如上面所描述的,根据图12所示的正常所有节点平均处理,可以通过获得节点平均值来抑制操作精度的劣化。当节点的数目不是“2”的幂时,可以通过计算所有节点的平均值来抑制溢出的发生和吞吐量的降低。即使不确保冗余位,也可以抑制溢出的发生。因此,可以抑制由于溢出的发生而导致的吞吐量的降低。作为结果,可以在不牺牲最终数据的精度的情况下执行所有节点的高吞吐量平均。
本文提供的所有示例和条件语言旨在用于帮助读者理解本发明和发明人对现有技术所贡献的构思的教示目的,并且不应被解释为受限于这些具体叙述的示例和条件,说明书中这些示例的组织也不涉及本发明的优势和劣势的展示。尽管已经详细描述了本发明的一个或更多个实施方式,但是应当理解,在不脱离本发明的精神和范围的情况下,可以对其进行各种改变、替换和变更。
[附图标记列表]
1 并行计算机
2 通信器
5 网络
10,10-1至10-N 节点
21 CPU
22 存储器
23 通信装置
101 编号分配单元
102 执行处理确定单元
103 正常聚合处理执行单元
104 成对聚合处理执行单元
105 数据发送单元
106 数据接收单元
107 数据存储单元
Claims (6)
1.一种运算处理设备,包括:
能够彼此通信的多个节点(N个节点),所述多个节点中的每个节点包括存储器和处理器,所述存储器被配置成存储值和使用所述值进行的操作结果,所述处理器被配置成当N为2或大于2的自然数、n为1或大于1的自然数并且N≠2n时执行第一处理,
其中,所述第一处理被配置成:
将由第一节点保存的值除以2,所述第一节点是所述多个节点中的任意节点和按照计数顺序的最后一个节点,
通过将所述多个节点中除所述第一节点以外的剩余节点进行配对来获得一个或更多个节点对,以及
重复地计算由所述一个或更多个节点对中的每个节点对保存的值的平均值。
2.根据权利要求1所述的运算处理设备,其中,
所述第一处理被配置成:
当N=2p+1+1并且p为满足2p-1<N<2p的自然数时,通过将由所述第一节点保存的值除以2来获得操作结果,
当所述操作结果为奇数时,执行第二处理,所述第二处理被配置成使得以先前最后一个操作结果作为第一的顺序将由所述第一节点保存的值除以2,所述第二处理还被配置成使得执行先前第一操作结果和随后的操作结果的平均操作并且此后按照先前操作结果的顺序执行两个连续操作结果的平均操作,以及
当所述操作结果为偶数时,执行第三处理,所述第三处理被配置成使得执行先前第一操作结果和随后的操作结果的平均操作并且此后按照先前操作结果的顺序执行两个连续操作结果的平均操作。
3.根据权利要求1所述的运算处理设备,其中,
当N=2p-1并且p为满足2p-1<N<2p的自然数时,
首先使用顺序为按照计数顺序的最后一个节点,并且将由所述节点保存的值除以2,
执行先前第一操作结果和随后的操作结果的平均操作,并且
此后,按照先前操作结果的顺序执行两个连续操作结果的平均操作。
5.一种用于存储使计算机执行处理的程序的非暂态计算机可读存储介质,所述计算机被提供有能够彼此通信的N个节点,所述处理包括:
当N为2或大于2的自然数、n为1或大于1的自然数并且N≠2n时执行第一处理,
其中,所述第一处理被配置成:
将由第一节点保存的值除以2,所述第一节点是所述多个节点中的任意节点和按照计数顺序的最后一个节点,
通过将所述多个节点中除所述第一节点以外的剩余节点进行配对来获得一个或更多个节点对,以及
重复地计算由所述一个或更多个节点对中的每个节点对保存的值的平均值。
6.一种运算处理设备的控制方法,其中,能够彼此通信的N个节点中的每个节点被配置成执行操作并且保存值和使用所述值进行的操作结果,所述方法包括:
当N为2或大于2的自然数、n为1或大于1的自然数并且N≠2n时执行第一处理,
其中,所述第一处理被配置成:
将由第一节点保存的值除以2,所述第一节点是所述多个节点中的任意节点和按照计数顺序的最后一个节点,
通过将所述多个节点中除所述第一节点以外的剩余节点进行配对来获得一个或更多个节点对,以及
重复地计算由所述一个或更多个节点对中的每个节点对保存的值的平均值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019-095467 | 2019-05-21 | ||
JP2019095467A JP7230683B2 (ja) | 2019-05-21 | 2019-05-21 | 演算処理装置、プログラム、及び演算処理装置の制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111984399A true CN111984399A (zh) | 2020-11-24 |
Family
ID=70775263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010411977.8A Pending CN111984399A (zh) | 2019-05-21 | 2020-05-15 | 运算处理设备及其控制方法以及用于存储程序的存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11593071B2 (zh) |
EP (1) | EP3742294A1 (zh) |
JP (1) | JP7230683B2 (zh) |
CN (1) | CN111984399A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113744037B (zh) * | 2021-08-16 | 2023-09-29 | 同盾科技有限公司 | 知识联邦中参与方通信方法、装置、电子设备及存储介质 |
JP2024100564A (ja) * | 2023-01-16 | 2024-07-26 | 富士通株式会社 | Spawn制御プログラム、Spawn制御方法、および情報処理装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000020501A (ja) * | 1998-07-03 | 2000-01-21 | Toshiba Corp | 並列計算機システム及びその演算処理装置間の通信方法 |
CN101236511A (zh) * | 2007-01-31 | 2008-08-06 | 国际商业机器公司 | 用于优化全局归约处理的方法和系统 |
US20100220928A1 (en) * | 2009-02-27 | 2010-09-02 | Fujitsu Microelectronics Limited | Image processing method |
US20160239597A1 (en) * | 2014-11-28 | 2016-08-18 | Fujitsu Limited | Apparatus and method for performing finite element computation |
CN108829517A (zh) * | 2018-05-31 | 2018-11-16 | 中国科学院计算技术研究所 | 一种用于在集群环境下进行机器学习的训练方法和系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63259767A (ja) * | 1987-04-17 | 1988-10-26 | Canon Electronics Inc | 平均値回路 |
JP3524430B2 (ja) | 1999-05-25 | 2004-05-10 | 株式会社日立製作所 | 並列計算機におけるリダクション処理方法 |
JP4321391B2 (ja) | 2004-07-16 | 2009-08-26 | 株式会社ニコン | 画像処理装置、および画像処理プログラム |
JP2019067084A (ja) | 2017-09-29 | 2019-04-25 | 富士通株式会社 | 情報処理システム、情報処理装置、及び、転送先決定方法 |
US20190188563A1 (en) * | 2017-12-18 | 2019-06-20 | Kabushiki Kaisha Toshiba | System |
JP6981329B2 (ja) * | 2018-03-23 | 2021-12-15 | 日本電信電話株式会社 | 分散深層学習システム |
US11521067B2 (en) * | 2018-11-30 | 2022-12-06 | International Business Machines Corporation | Decentralized distributed deep learning |
-
2019
- 2019-05-21 JP JP2019095467A patent/JP7230683B2/ja active Active
-
2020
- 2020-05-15 CN CN202010411977.8A patent/CN111984399A/zh active Pending
- 2020-05-15 US US16/874,729 patent/US11593071B2/en active Active
- 2020-05-18 EP EP20175284.7A patent/EP3742294A1/en not_active Ceased
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000020501A (ja) * | 1998-07-03 | 2000-01-21 | Toshiba Corp | 並列計算機システム及びその演算処理装置間の通信方法 |
CN101236511A (zh) * | 2007-01-31 | 2008-08-06 | 国际商业机器公司 | 用于优化全局归约处理的方法和系统 |
US20100220928A1 (en) * | 2009-02-27 | 2010-09-02 | Fujitsu Microelectronics Limited | Image processing method |
US20160239597A1 (en) * | 2014-11-28 | 2016-08-18 | Fujitsu Limited | Apparatus and method for performing finite element computation |
CN108829517A (zh) * | 2018-05-31 | 2018-11-16 | 中国科学院计算技术研究所 | 一种用于在集群环境下进行机器学习的训练方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
JP2020190894A (ja) | 2020-11-26 |
US11593071B2 (en) | 2023-02-28 |
US20200371750A1 (en) | 2020-11-26 |
JP7230683B2 (ja) | 2023-03-01 |
EP3742294A1 (en) | 2020-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11137981B2 (en) | Operation processing device, information processing device, and information processing method | |
JP7525237B2 (ja) | 効率的パラメータ・アップデートのための削減された精度パラメータを有する機械学習ハードウェア | |
US10108538B1 (en) | Accessing prologue and epilogue data | |
CN108564168A (zh) | 一种对支持多精度卷积神经网络处理器的设计方法 | |
CN114127740A (zh) | 人工智能模型的分布式训练中的数据并行性 | |
US20190138922A1 (en) | Apparatus and methods for forward propagation in neural networks supporting discrete data | |
CN114127702A (zh) | 在存储器受限设备上执行大型人工智能模型 | |
CN114127741A (zh) | 用于人工智能建模的动态多层执行 | |
CN111984399A (zh) | 运算处理设备及其控制方法以及用于存储程序的存储介质 | |
US11620105B2 (en) | Hybrid floating point representation for deep learning acceleration | |
US20230110219A1 (en) | Neural Network Training With Decreased Memory Consumption And Processor Utilization | |
US10628124B2 (en) | Stochastic rounding logic | |
US20190130274A1 (en) | Apparatus and methods for backward propagation in neural networks supporting discrete data | |
US11455143B2 (en) | Using a low-bit-width dot product engine to sum high-bit-width numbers | |
US11297127B2 (en) | Information processing system and control method of information processing system | |
US20230161555A1 (en) | System and method performing floating-point operations | |
US11275713B2 (en) | Bit-serial linear algebra processor | |
US20190073584A1 (en) | Apparatus and methods for forward propagation in neural networks supporting discrete data | |
US11455142B2 (en) | Ultra-low precision floating-point fused multiply-accumulate unit | |
US11995554B2 (en) | Apparatus and methods for backward propagation in neural networks supporting discrete data | |
CN112596912B (zh) | 二值或三值神经网络卷积计算的加速运算方法及装置 | |
JP7453563B2 (ja) | ニューラルネットワークシステム、ニューラルネットワークの学習方法及びニューラルネットワークの学習プログラム | |
CN110097181B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
CN116610285A (zh) | 用于计算点积的方法和系统 | |
CN116610284A (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 |