浮点数求和的处理方法及计算机系统的制作方法

文档序号:6560381阅读:295来源:国知局
专利名称:浮点数求和的处理方法及计算机系统的制作方法
技术领域
本发明涉及用于计算浮点数据和的浮点数据求和处理方法及计算机系统,更具体地涉及用于计算多个计算机节点的浮点数据和的浮点数据求和处理方法及计算机系统。
背景技术
已有并行计算机系统,其中安装有包括计算机的多个节点,并且这些节点通过网络连接。在这种并行计算机中,通过多个节点并行计算一个作业,并且通过网络交换处理数据。如果规模足够大,则这种并行计算机包括成百上千个节点。
在这种并行计算机中,集中多个节点的数据,并且执行指定的操作。这种操作称为“归约处理”。这种归约处理的例子有确定所有节点数据和的操作以及确定所有节点数据的最大值或最小值的操作。
由指数和尾数表示的浮点格式是一种由计算机处理数据格式,这种格式可表示比小数点的位置处于预定位置的定点格式更宽的数值范围。图19表示浮点格式,并显示IEEE标准的浮点格式。
图19显示32比特单精度浮点数据以及64比特双精度浮点数据。在这两种情况下,数据包括符号位、指数(exponent)部分和尾数(mantissa)部分。符号位指定数值的符号,其中“1”表示负数,“0”表示正数。指数部分表示一个整数值,该整数值为2的幂,尾数部分表示大于或等于1.0且小于2.0的值(归一化数字)。通过尾数与指数表示的数相乘的结果为实际数值。
在此的浮点数据求和中,如果将3个或更多浮点数据相加,则根据所述3个数据相加的顺序,计算结果中的数值不同。图20和图21显示求和过程。此处,以16进制来表示双精度浮点数据的值。
如图20所示,如果包括指数部分和尾数部分的浮点数据1、2、3和4以数据1、2、3和4的顺序来相加,则数据1和数据2相加,并且相加结果1和数据3相加,然后相加结果2和数据4相加。
如图21所示,如果数据以数据1、3、4和2的顺序相加,则数据1和数据3相加,相加结果1和数据4相加,然后相加结果2和数据2相加。
如图20和图21中的数值所示,4个数据的相加结果不同。这是因为每次对计算结果进行归一化,并且对尾数部分进行截尾。
在多个计算机并行执行一个作业的并行计算机中,可收集并行执行过程中的结果和最终结果,并且可由此确定其和。如果数据格式在这种情况下是浮点格式,则根据计算顺序,计算结果不同,因此会影响并行计算的精确性。因此,提出一种即使在计算顺序不固定的情况下保证计算结果一致性的方法。
图22表示浮点数据的传统求和过程,并显示一种即使计算顺序不固定也能保证计算结果一致性的方法。
如图22所示,在处理效率方面,分别安装用于执行多个节点的浮点数据的求和的归约装置是有效的,该浮点数据分别来自每个节点。首先,每个节点仅获得浮点数据的指数部分,并指示归约装置确定指数部分的最大值。
归约装置比较发送自每个节点的指数部分数据,仅保持具有最大值的指数部分,并且当比较来自所有节点的指数部分数据结束时,归约装置将具有最大值的指数部分返回到所有节点。
每个节点根据从归约装置返回的具有最大值的指数部分执行尾数部分的数位(digits)匹配。并且每个节点指示归约装置确定数位匹配的尾数部分数据的和。
归约装置将发送自每个节点的尾数部分数据相加,并且当完成来自所有节点的尾数部分数据相加时,归约装置将结果返回到所有节点。
每个节点根据具有最大值的指数部分数据与尾数部分数据的和来生成归一化的浮点数据。
由此方法,按照现有技术,根据指数部分的最大值,由每个节点执行尾数部分数据的数位匹配,并且将数位匹配的数据发送到归约装置,从而在不考虑求和过程的计算顺序的情况下来进行求和计算(例如,日本专利申请2005-506596)。
然而,在现有技术的情况下,当确定浮点数据的和时,需要比较指数部分的大小和相加尾数部分,两次操作。因此,在每个节点和归约装置之间的数据交换也需要两次,这样使得归约处理时间较长。特别是,如果节点数增加到几百或几千,则在处理时间中的此种增加阻碍了并行处理速度的增加。
另外,为了固定计算顺序,在归约装置中可安装用于存储所有节点的数据的存储电路,从而首先接收所有节点的数据,然后依序执行相加。但是,节点数的增加也增加了存储电路的规模,从而增加了成本。而且在接收所有节点的数据之后开始计算也增加了处理时间。如果节点数增加到几百或几千,则电路规模变大,同时处理时间长度也明显增加。

发明内容
本发明的一个目的在于提供一种浮点数求和的处理方法和计算机系统,用于提高众多节点的浮点数据的求和速度。
本发明的另一目的在于提供一种浮点数求和的处理方法和计算机系统,其在无需固定计算顺序的情况下提高众多节点的浮点数据的求和速度,并因此对于并行处理是有效的。
本发明的再一目的在于提供浮点数求和的处理方法和计算机系统,用于在不安装非必要存储电路的情况下提高众多节点的浮点数据的求和速度。
为了实现上述目的,本发明提供一种用于计算三个或更多浮点数据的和的浮点数据的求和处理方法,包括以下步骤计算在按浮点数据的指数部分大小分组的多个组中指数部分具有最大值的组的尾数部分和,以及指数部分具有第二最大值的组的尾数部分之和;并将所述指数部分具有最大值的组的尾数部分和与所述指数部分具有第二最大值的组的尾数部分之和相加。
本发明的计算机系统具有多个节点和用于计算每个节点的浮点数据的和的归约装置。所述归约装置在按浮点数据的指数部分大小分组的多个组中指数部分具有最大值的组的尾数部分之和,以及指数部分具有第二最大值的组的尾数部分之和;并将所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和相加。
本发明的另一计算机系统具有多个节点以及归约装置,用于计算每个节点的浮点数据的和。其中,每个节点计算按浮点数据的指数部分大小分组的多个组中指数部分具有最大值的组的尾数部分之和,以及指数部分具有第二最大值的组的尾数部分之和,并将该计算结果发送到归约装置。然后,所述归约装置为多个节点计算所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和,并将所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和相加,并将该计算结果返回到每个节点。然后每个节点将从归约装置返回的所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和相加。
在本发明中,优选地,计算步骤还包括以下步骤比较所述指数部分的有效位;并根据该比较结果来计算所述指数部分具有最大值的组的尾数部分和与所述指数部分具有第二最大值的组的尾数部分和。在本发明中,优选的是所述计算步骤还包括以下步骤根据所述指数部分的非有效位的值来移位尾数部分,以生成具有扩展的数据宽度的尾数部分;并使用具有扩展的数据宽度的尾数部分来计算所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和。
另外,在本发明中,优选的是所述相加步骤还包括以下步骤将所述指数部分具有第二最大值的组的尾数部分支求和结果与指数部分具有最大值的组的尾数部分之求和结果的数位进行匹配;和指数部分具有最大值的组的尾数部分之求和结果与数位匹配的指数部分具有第二最大值的组的尾数部分之求和结果相加。
优选地,本发明还包括根据尾数部分的相加结果与所述指数部分的有效位来生成浮点数据的步骤。
在本发明中,指数值较最大值小2(值)或更多的组的计算结果不影响指数部分具有最大值的组的计算结果。所以,通过仅计算指数部分具有最大值的组与指数部分具有第二最大值的组的和;并将指数部分具有最大值的组的和与指数部分具有第二最大值的组的和相加,即使在不考虑数值的计算顺序的情况下也可保证计算结果的一致性。


图1是表示根据本发明实施例的计算机系统的框图;图2是表示图1中节点的框图;图3是表示图1和图2中网络适配器的框图;图4表示图1中发送帧的格式;图5是表示图1中归约装置的框图;图6是表示根据本发明第一实施例的浮点数据求和处理的示意图;图7是表示图6中数据转换处理的示意图;图8是表示图7中补码数据生成处理的示意图;图9表示图5中比较结果和计算处理的关系;图10是表示图6中求和处理的示意图;图11是表示图6中转换处理到浮点数据的示意图;图12是表示图6中指数的有效位与尾数部分的绝对值间关系的示意图;图13表示图6中数据转换处理的示例;图14表示图6中求和处理的示例;图15表示图6中转换处理到浮点数据的示例;图16是表示根据本发明第二实施例的浮点数据求和处理的示意图;图17是表示图16中归约装置的框图;图18表示图17中的比较结果和计算处理;图19表示浮点数据的格式;图20表示浮点数据的传统求和处理;图21表示图20中的计算顺序改变时的浮点数据的传统求和处理;和图22表示无需固定传统计算顺序的浮点数据的求和处理。
具体实施例方式
以下将按计算机系统配置、归约装置的配置、第一实施例、第二实施例和其它实施例的顺序来表示本发明的实施例,但是本发明并非仅限于这些实施例。
计算机系统配置图1是表示本发明的计算机系统实施例的框图,图2是表示图1中节点的框图,图3是表示图1中网络适配器的框图,以及图4是表示图1中发送数据的帧格式。
图1表示作为计算机系统的并行计算机。如图1所示,并行计算机具有多个(在这种情况下为4个)节点10、11、12和13,两个交叉交换器(图1中的SWA和SWB)20和21,和归约装置22。每个节点10、11、12和13具有3个网络适配器(图1中的A、B和C)14A、14B和14C。每个节点10、11、12和13的网络适配器14A和14B分别通过交叉交换器20和21相互通信。每个节点10、11、12和13的网络适配器14C与归约装置22通信。换而言之,每个节点10、11、12和13的每个网络适配器14A、14B和14C经由诸如以太网(注册商标)之类的接口通过传输线路与交叉交换器20和21以及归约装置22连接。
如图2所示,节点10(11、12、13)是其中通过系统控制器42连接CPU40、存储器44、IO适配器46和上述网络适配器14A至14C的计算机。根据节点所需的处理能力,可安装多个CPU 40、存储器44和IO适配器46。
如图3所示,图1和图2中的网络适配器14A(14B,14C)包括与系统控制器42相连的主机接口控制电路50、发送控制电路52、与传输线路相连的网络接口控制电路54以及接收控制电路56。网络适配器14A(14B、14C)负责节点之间以及与归约装置22的数据通信。
为了经由网络适配器14A(14B,14C)发送数据,将图4所示的帧格式用于通信。图4中的帧格式表示了用于以太网(注册商标)的帧格式,包括目的地址、发送端地址、帧类型(例如,命令类型、数据大小)、数据和帧校验码(例如,CRC(循环冗余码))。数据区域的数据长度(数据大小)是可变的,并且如果必要,将发送数据划分成多个帧并进行发送。
归约装置的配置图5是表示图1中的归约装置的框图。如图5所示,归约装置22的主要部分包括网络控制部分22-1,用于控制到每个节点的发送以及从每个节点的接收;数据转换部分22-2,用于将来自每个节点的下述浮点数据转换成预定数据格式,并且将计算结果转换成浮点数据;寄存器22-3,用于在数据转换之后保持接收的数据;算术电路(ALU1,ALU2)22-4和22-7,用于执行各种归约运算;寄存器(R1,R2)22-5和22-8,用于保持计算结果;比较电路(CMP)22-6,用于比较数据;以及多路复用器22-9,用于选择寄存器22-5和22-8。
由数据转换部分22-2转换的接收数据被第一寄存器22-3保持,并且被输入到第一算术电路22-4、第二算术电路22-7和比较电路22-6。比较电路22-6比较如下文所述的指数部分的有效位。第一算术电路22-4的计算结果被第二寄存器22-5保持,并且被输入到第一算术电路22-4、比较电路22-6和第三寄存器22-8。
由第三寄存器22-8保持的数据被输入到第二算术电路22-7。根据比较电路22-6的比较结果,第一和第二算术电路22-4和22-7执行相加。第二寄存器22-5保持与指数部分具有最大值的组相应的尾数部分的计算结果,第三寄存器22-8保持与指数部分具有第二最大值的组相应的尾数部分的计算结果。
在该实施例中,数据转换部分22-2、算术电路22-7、寄存器22-8和多路复用器22-9被添加到传统归约装置的配置中。
浮点求和处理的第一实施例图6是表示浮点求和处理的第一实施例的示意图,图7是表示在图6中数据转换处理的示意图,图8是表示当图6中的数据转换处理中确定补码时的处理的示意图,图9表示基于图5和图6中的比较结果的计算过程,图10和图11是表示将计算结果转换成浮点数据的处理的示意图,图12是表示指数部分的有效位与尾数部分的绝对值之间的关系。
如图6所示,节点10、11、12和13直接将待归约的浮点数据发送到归约装置22,并指示执行求和处理。
归约装置22按到达顺序将来自所有节点的浮点数据相加,并且将计算结果返回到此加法处理中所有的节点。在该加法处理中执行随后在图7和图8中表示的数据转换处理,基于随后在图9中表示的大小比较的加法处理,以及随后在图10和图11中表示的将计算结果转换成浮点数据的处理。同时节点10、11、12和13从归约装置22接收计算结果。
以下描述归约装置22的求和处理。在以下描述中,将图19所示的64比特双精度浮点数据作为示例来描述,但是32比特单精度浮点数据也可采用同样的方式来处理。
如图7所示,确定求和处理的数据宽度。如果待计算的数据的最大数是127,则在求和中,有效数位的数可扩展到最大7个数位(2的7次幂=128)。所以,首先,对浮点数据的数位的数(在双精度情况下为52比特)与所述数位的数(7比特)进行求总。换而言之,比特数的总数为52+7=59比特。
然后,确定指数部分的待删除的非有效位数。一种情况为由待删除的比特数表示的数位数量大于上述数位的总数。如果待删除的比特数是5比特,则数位数量是31,如果待删除的比特数是6比特,则数位数量是63(2的6次幂=64)。在双精度的情况下,数位总数量是59,所以大于总值的待删除的比特数一定是指数部分的非有效的6比特,以满足上述情况。
因此,需要的数据宽度是52(尾数部分)+7(待增加的数位数量)+63(移位量)+2(其它)=124比特。其它2比特是省略尾数部分的最高有效位和符号位。
当计算数据宽度确定时,如图7所示,将浮点数据转换成具有此数据宽度的转换数据。换而言之,在双精度浮点数据的124比特宽度的情况下,对尾数部分的最大有效数位进行补码,将尾数部分移位指数部分的非有效6比特的量,并设置在此位置。并且,对除尾数部分外的部分置“0”。在浮点情况下,如果值非零,则省略最高有效数位“1”,并要求上述补码。
如图8所示,如果符号表示负数,则将数据转换成124比特宽,然后被转换成2的补码。由图5中的数据转换部分22-2执行该尾数部分的转换,并且将指数部分和转换的尾数部分的有效位设置在第一寄存器22-3中。
以下参照图9来描述求和处理。在图9中,指数1和尾数1表示新接收到的指数部分和尾数部分的有效位,指数3和尾数3表示在计算结果中的指数部分及其尾数部分的有效位的最大值,尾数4表示与计算结果中的指数部分的有效位的第二最大值相应的尾数部分。
在图5中,将指数1和尾数1设置在第一寄存器22-3中,将指数3和尾数3设置在第二寄存器22-5中,将尾数4设置在第三寄存器22-8中。当新接收的浮点数据的指数部分和尾数部分的有效位被设置到第一寄存器22-3中时,比较电路22-6比较指数1与第二寄存器22-5的指数3。
如图9所示,如果比较电路22-6的比较结果是指数1>指数3+1,则指数1具有最大值,从而通过算术电路22-4将指数1和尾数1设置在第二寄存器22-5中作为新的指数3和新的尾数3,并且由于指数3不具有第二最大值,所以将“0”设置在第三寄存器22-8中。
如果比较电路22-6的比较结果是指数1=指数3+1,则指数1具有最大值,从而通过算术电路22-4将指数1和尾数1设置在第二寄存器22-5中作为新的指数3和新的尾数3,并且由于指数3具有第二最大值,所以将第二寄存器22-5的尾数3设置在第三寄存器22-8中。
如果比较电路22-6的比较结果是指数1=指数3,则指数1和指数3是处于具有最大值的相同组中,从而指示算术电路22-4将尾数1相加到第二寄存器22-5的尾数3,然后将指数3和尾数1+尾数3设置在第二寄存器22-5中作为新的指数3和新的尾数3,并且第三寄存器22-8的值(指数4)没有改变。
如果比较电路22-6的比较结果是指数1+1=指数3,则指数3具有最大值,所以第二寄存器22-5的指数3和尾数3没有改变,由于指数1具有第二最大值,所以指示算术电路22-7将第三寄存器22-8的尾数4和尾数1相加,并且将尾数1+尾数4设置在第三寄存器22-8值作为新的尾数4。
如果比较电路22-6的比较结果是指数1+1<指数3,则指数3具有最大值,并且指数1不具有第二最大值,所以第二寄存器22-5的指数3和尾数3与第三寄存器22-8的尾数没有改变。
由此获得指数部分的有效位的值为最大值的指数(新指数3),指数部分的有效位的值为最大值的尾数部分(新尾数3)的计算结果,以及有效位的值为第二最大值的指数部分的尾数部分(新尾数4)的计算结果。
现在,参照图10和图11描述根据上述已得的3个值,即新指数3、新尾数3和新尾数4的转换处理。
首先,如图10所示,将尾数4向右移位64比特,以便与指数部分的有效位为最大值的尾数部分的数位匹配,尾数4为指数部分的有效位的值为第二最大值的尾数部分的计算结果,并且在有效位中对比特123的值(所有为“0”或“1”)进行补码。然后,将尾数4的数位匹配值与尾数3的值相加以确定其和。
然后,如图11所示,将指数部分的有效位的值为最大值的指数3与图10中确定的尾数的和转换成双精度浮点数据。例如,根据指数部分的5比特(比特62-58)和尾数部分的124比特,生成1比特符号、11比特指数部分和52比特尾数部分。
在图5中,数据转换部分22-2获得由第二寄存器22-5和第三寄存器22-8保持的值,并执行上述的数位匹配、求和及转换。
图12是描述指数的有效位与尾数部分指示的绝对值的范围之间的关系的示意图。首先,如上所述,指数部分的非有效位被删除并且反映在尾数部分,并且通过5比特(62-58比特)指数部分和124比特尾数部分表示计算的数据。考虑到待计算的最大数据量(在图7的情况下为127)来确定该尾数部分,从而当确定所有数据的和时不会出现上溢。
如图12所示,在同时具有相同的指数有效位的值以及相同的数值的绝对值范围的指数值组中,指数值组(在此情况下为n)的最低有效位表示大于指数值与n相差2(在此情况下为n-2)的指数值组的最高有效位的值,所述数值的绝对值范围由每组和的计算结果的指数部分和尾数部分表示。
换而言之,指数值较最大值小2(值)或更多的组的计算结果不影响指数值具有最大值的组的计算结果。这与加零的情况相同,因为当尾数部分的数位匹配时,由于指数部分的不同不存在有效数字。
在确定指数相同的组的和的计算中,根据指数部分的非有效位(在此情况下为6比特)移位尾数部分,以增加有效位,所以尾数部分不进行截尾。因此,在计算指数部分相同的组的情况下,如图9所示,在无须考虑计算顺序的情况下获得相同的计算结果。
另外,如上所述,指数值较最大值小2(值)或更多的组的计算结果不影响指数部分的值具有最大值的组的计算结果,所以仅计算指数部分具有最大值的组与指数部分具有第二最大值的组的和。同时分别计算在指数部分具有最大值的组中的和以及在指数部分具有第二最大值的组的和。然后,匹配数位并计算以上两个结果的和,因此即使在无须考虑数值顺序的情况下执行计算也可保证计算结果的一致性。
以下将参照图13、图14和图15描述使用实际数值的示例。这是当使用双精度浮点格式数据IEEE标准时的示例,其中,删除指数部分的非有效6比特以扩展尾数部分,并且计算数据的数量为4。数值都是十六进制表示,并且在比特数少于“4”的情况下,将数据移位至右端。
图13表示删除数据1、2、3和4的指数部分的非有效6比特以扩展尾数部分时的转换数据。数据1、2、3和4都是小数表示,为“2.59407338536541E+18”、“2.88230376151712E+18”、“-2.26673591177743E+23”和“2.26677049942257E+23”。“E+18”表示10的18次幂。
如图13所示,转换之前的数据1为指数=44C,尾数=8 0018 0000 0000,符号+。在“在处理1期间”,对省略的最高有效位“1”进行补码运算,并且将尾数部分扩展到124比特。然后,由于指数部分的非有效6比特(=0C)将124比特的尾数部分向左移位12比特。指数部分存储5个有效位。该5比特指数值表示指数组。
数据2也相同,由于符号表示负数,所以加入转换数据的补码计算。同样,获得数据3和4的转换数据。
然后,分别针对每个指数值组计算数据1、2、3和4。如图13所示,数据1和数据2处于相同指数值组,数据3和数据4处于另一相同指数值组。如图14所示,通过将数据1的尾数部分与数据2的尾数部分相加获得指数值组(指数=11)的尾数3(见图9)。
同样,将数据3的尾数部分与数据4的尾数部分相加,并获得指数值组(指数=10)的尾数4(见图9)。由于较之于尾数3尾数4的指数部分的差值为64(=6比特),所以将尾数4向右移位64比特,以根据图10中的原则来匹配指数部分。并且将移位的值与尾数3相加,以确定最终计算结果。
将最终计算结果转换成如图15所示的双精度浮点格式。因为在“转换1期间”,由有效5比特来表示指数组,所以在省略的非有效6比特中对零进行补码。然后,因为在“转换2期间”,双精度浮点的尾数的有效数位的数量是53比特,所以将尾数部分转换成53比特尾数部分。进行这种转换后,尾数部分的左端53比特变成“1”。在图15中,当将非有效53比特向左移位3比特时的值变成尾数部分,而且由于将数据向左移位3比特,所以将指数部分改变为当减去3(即,-3)时的值。对于转换之后的符号,在尾数部分的124比特的左端的值变成符号位。
在“转换3期间”,省略在尾数部分的53比特的左端的1比特,所以对于浮点格式使用52比特。在转换之后,获得包括1比特符号比特、11比特指数部分和52比特尾数部分的双精度浮点格式数据。
浮点求和处理的第二实施例图16是描述根据本发明的第二实施例的浮点求和处理的示意图,图17是描述其归约装置的框图,图18表示在比较结果和图17中的计算处理之间的关系。本实施例是这样一个例子,即,当多个CPU 40存在于节点中时,在节点内执行浮点求和之后,然后通过归约装置22来执行所有节点的浮点求和。
如图16所示,为了对多个CPU的浮点数据求和,每个节点10、11、12和13通过图7到图9中的处理来计算每个指数值的组的和。每个节点将计算的指数部分和尾数部分发送到归约装置22,并指示计算在节点中的和。
如图17所示,与图5中的配置不同,归约装置22不具有数据转换部分22-2。换而言之,由于发送转换的指数部分和尾数部分,所以转换运算不是必须的。归约装置22依到达顺序将所有的指数部分和尾数部分的数据相加,并且将计算结果返回到所有节点。在此加法处理过程中,执行随后在图18中描述的基于大小比较的加法处理。节点10、11、12和13从归约装置22接收计算结果,并生成在图10和图11中所示的归一化的浮点数据。
现在参照图18描述在归约装置的加法处理中的求和处理。在图18中,与图9相同,指数1和尾数1表示指数部分和尾数部分的新接收到的有效位,尾数2表示与指数部分的有效位具有第二最大值的新接收到的数据相应的尾数部分,指数3和尾数3表示在计算结果中指数部分与其尾数的有效位的最大值,尾数4表示在计算结果中与有效位具有第二最大值的指数部分相应的尾数部分。
在图17中,将指数1、尾数1和尾数2设置在第一寄存器22-3中,将指数3和尾数3设置在第二寄存器22-5中,将尾数4设置在第三寄存器22-8中。当将新接收到的浮点数据的指数部分和尾数部分的有效位设置在第一寄存器22-3中时,比较电路22-6将指数1和在第二寄存器22-5中的指数3进行比较。
如图18所示,如果比较电路22-6的比较结果是指数1>指数3+1,则指数1具有最大值,所以将指数1和尾数1设置在第二寄存器22-5中作为新的指数3和新的尾数3,并且通过算术电路22-4将尾数2设置在第三寄存器22-8中。
如果比较电路22-6的比较结果是指数1=指数3+1,则指数1具有最大值,所以通过算术电路22-4将指数1和尾数1设置在第二寄存器22-5中作为新的指数3和新的尾数3,并且由于指数3具有第二最大值,所以通过算术电路22-7计算尾数2+尾数3,并且将尾数2+尾数3设置在第三寄存器22-8中。
如果比较电路22-6的比较结果是指数1=指数3,则指数1和指数3处于相同的最大值的组,所以指示算术电路22-4将尾数1与在第二寄存器22-5中的尾数3相加,并且将指数3和尾数1+尾数3设置在第二寄存器22-5中作为新的指数3和新的尾数3,并且通过算术电路22-7计算尾数2+尾数4,并且将尾数2+尾数4设置在第三寄存器22-8中。
如果比较电路22-6的比较结果是指数1+1=指数3,则指数3具有最大值,所以在第二寄存器22-5中的指数3和尾数3没有改变,并指示算术电路22-4将第三寄存器22-8中的尾数4和尾数1相加,由于指数1具有第二最大值,则将尾数1+指数4设置在第三寄存器22-8中作为新的尾数4。
如果比较电路22-6的比较结果是指数1+1<指数3,则指数3具有最大值,并且指数1不具有第二最大值,所以在第二寄存器22-5中的指数3和尾数3以及第三寄存器22-8中的尾数4不改变。
由此获得指数部分的有效位的值为最大值的指数(新指数3)、指数部分的有效位的值为最大值的尾数部分的计算结果(新尾数3)和指数部分的有效位的值为第二最大值的尾数部分的计算结果(新尾数4)。
最后,将三个数据,即指数3、尾数3和尾数4返回到所有节点。所有节点根据接收到的指数3、尾数3和尾数4来生成归一化的浮点数据。
这样,通过节点进行节点内的浮点求和,并通过归约装置来进行在节点之中的浮点求和。
其它实施例在上述实施例中,为了说明使用了64比特双精度浮点数据,但是本发明还可应用于32比特单精度浮点数据。在这种情况下,数位的增加数量取决于数据的最大数,所以仍然是7比特,但是要被删除的位数仅是5比特,所以数据宽度是23(尾数部分)+7+31+2=63比特。
另外,描述了具有4个节点的并行计算机,但是本发明还可应用于具有2个或2个以上节点的并行计算机。对于节点的配置,描述了具有CPU、存储器等的计算机单元,但是也可使用其它计算机配置。传输线路的格式不仅限于以太网(注册商标),但是可以是其它网络协议。
由于指数值较最大值小2(值)或更多的组的计算结果不影响指数部分具有最大值的组的计算结果,所以计算仅指数部分具有最大值的组的和以及指数部分具有第二最大值的组的和,并且将指数部分具有最大值的组的和以及指数部分具有第二最大值的组的和相加,因此如果在不管数值的计算顺序的情况下进行计算也可保证计算结果的一致性。
权利要求
1.一种用于计算三个或更多浮点数据的和的浮点数据求和处理方法,包括以下步骤计算按浮点数据的指数部分大小分组的多个组中指数部分具有最大值的组的尾数部分之和,以及指数部分具有第二最大值的组的尾数部分之和;并将所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和相加。
2.根据权利要求1所述的浮点数据的求和处理方法,其特征在于,所述计算步骤还包括以下步骤比较所述指数部分的有效位;并根据该比较结果计算所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和。
3.根据权利要求1所述的浮点数据的求和处理方法,其特征在于,所述计算步骤还包括以下步骤根据所述指数部分的非有效位的值移位尾数部分,以生成具有扩展数据宽度的尾数部分;并使用所述具有扩展的数据宽度的尾数部分计算所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和。
4.根据权利要求1所述的浮点数据的求和处理方法,其特征在于,所述求和步骤还包括以下步骤将所述指数部分具有第二最大值的组的尾数部分之求和结果与所述指数部分具有最大值的组的尾数部分之求和结果的数位进行匹配;并将所述指数部分具有最大值的组的尾数部分之求和结果与数位匹配的所述指数部分具有第二最大值的组的尾数部分之求和结果相加。
5.根据权利要求1所述的浮点数据的求和处理方法,还包括根据尾数部分相加结果与指数部分的有效位生成浮点数据的步骤。
6.一种计算机系统,包括多个节点;以及归约装置,用于计算每个节点的浮点数据的和,其中,归约装置计算按浮点数据的指数部分大小分组的多个组中指数部分具有最大值的组的尾数部分之和,以及指数部分具有第二最大值的组的尾数部分之和;并将所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和相加。
7.根据权利要求6所述的计算机系统,其特征在于,所述归约装置比较所述指数部分的有效位,并根据该比较结果计算所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和。
8.根据权利要求6所述的计算机系统,其特征在于,所述归约装置根据所述指数部分的非有效位的值移位尾数部分,以生成具有扩展的数据宽度的尾数部分;并使用具有扩展的数据宽度的尾数部分计算所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和。
9.根据权利要求6所述的计算机系统,其特征在于,所述归约装置将所述指数部分具有第二最大值的组的尾数部分之求和结果与所述指数部分具有最大值的组的尾数部分之求和结果的数位进行匹配;并将所述指数部分具有最大值的组的尾数部分之求和结果与数位匹配的所述指数部分具有第二最大值的组的尾数部分之求和结果相加。
10.根据权利要求6所述的计算机系统,其特征在于,所述归约装置根据尾数部分的相加结果与所述指数部分的有效位生成浮点数据。
11.一种计算机系统,包括多个节点;以及归约装置,用于计算每个节点的浮点数据的和,其中,每个节点计算按浮点数据的指数部分大小分组的多个组中指数部分具有最大值的组的尾数部分和,以及指数部分具有第二最大值的组的尾数部分和;并将该计算结果发送到归约机构,而且其中,所述归约装置为多个节点计算所述指数部分具有最大值的组的尾数部分和与所述指数部分具有第二最大值的组的尾数部分和;并将该计算结果返回到每个节点,然后每个节点将从归约装置返回的所述指数部分具有最大值的组的尾数部分和与所述指数部分具有第二最大值的组的尾数部分和相加。
12.根据权利要求11所述的计算机系统,其特征在于,每个节点比较所述指数部分的有效位;并根据该比较结果计算所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和。
13.根据权利要求11所述的计算机系统,其特征在于,每个节点根据所述指数部分的非有效位的值移位尾数部分,以生成具有扩展数据宽度的尾数部分;并使用具有扩展数据宽度的尾数部分计算所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和。
14.根据权利要求11所述的计算机系统,其特征在于,每个节点将所述指数部分具有第二最大值的组的尾数部分求和结果与所述指数部分具有最大值的组的尾数部分求和结果的数位进行匹配;并将所述指数部分具有最大值的组的尾数部分之求和结果与数位匹配的所述指数部分具有第二最大值的组的尾数部分之求和结果相加。
15.根据权利要求11所述的计算机系统,其特征在于,每个节点根据所述尾数部分的相加结果与所述指数部分的有效位生成浮点数据。
16.一种计算机系统,包括多个节点;以及归约装置,用于计算每个节点的浮点数据的和,其中,每个节点计算按浮点数据的指数部分大小分组的多个组中指数部分具有最大值的组的尾数部分之和,以及指数部分具有第二最大值的组的尾数部分之和;并将该计算结果发送到归约装置,其中,所述归约装置为多个节点计算所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和;并将所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和相加。
17.一种用于使计算机计算三个或更多浮点数据的和的程序,包括以下步骤计算根据浮点数据的指数部分大小分组的多个组中指数部分具有最大值的组的尾数部分之和,以及指数部分具有第二最大值的组的尾数部分之和;并将所述指数部分具有最大值的组的尾数部分之和与所述指数部分具有第二最大值的组的尾数部分之和相加。
全文摘要
计算机系统在用于计算多个节点的浮点数据的和的系统中即使计算顺序不固定的情况下,执行求和处理。每一节点将浮点数据发送到归约装置,归约装置仅计算指数部分具有最大值的组与指数部分具有第二最大值的组的和;并将指数部分具有最大值的组的和与指数部分具有第二最大值的组的和相加。由此,即使在不考虑值的计算顺序的情况下也可保证计算结果的一致性。
文档编号G06F7/48GK101042638SQ20061010780
公开日2007年9月26日 申请日期2006年7月21日 优先权日2006年3月23日
发明者稻垣淳一, 小薮正夫, 石畑宏明 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1