并行除法算法及并行除法计算器的制造方法

文档序号:6489306阅读:727来源:国知局
并行除法算法及并行除法计算器的制造方法
【专利摘要】本发明是涉及一种利用多个处理器实现并行除法的算法与装置,是把传统只能一人计算的除法,变成可以任意多人同时并行计算的算法与装置。独创点是,发明出了可以并行计算出任何一步余数的新方法:计算A除以B第K步的余数,用A乘10的K次幂模B的方法来并行计算出余数。用该方法,可以把计算A/B的N位商,巧妙的变化成同时计算A/B,A1/B,A2/B,...A(m-1)/B,的N/m+1位商,m为该计算机核的个数。这样m个核就能同时用任何一种除法的计算方法来并行计算Ai/B的N/m+1位商,最后把各核计算结果合并,就得到A/B的N位商。需要特别说明的是,由于该算法的这个m可以任意大,因此该算法也能用于可以同时做数百万次并行计算的量子计算机。
【专利说明】并行除法算法及并行除法计算器
[0001]所属领域
[0002]本发明是涉及一种利用多个处理器实现并行除法的算法与装置,具体地说是涉及一种把传统只能一人计算的除法,变成可以任意多人同时并行计算的算法与装置。
【背景技术】
[0003]上世纪八九十年代以来,随着半导体工艺技术的飞速进步和体系结构的不断发展,桌面处理器的主频在2000年达到了 1GHz,2001年达到2GHz,2002年达到了 3GHz。但在将近5年之后我们仍然没有看到4GHz处理器的出现。原因就在于如果继续通过提高主频来提高处理器的性能,就会使处理器的功耗以指数(三次方)而非线性(一次方)的速度急剧上升,很快就会触及所谓的“频率的墙”(frequency wall)。因此无法再通过简单提升时钟频率就可设计出下一代的新CPU。主频之路已经走到了拐点,采用同样的微架构的情况下,为了达到提高处理器性能的目的,我们可以采用多核的方法,同时有效地控制功耗的急剧上升。由此可见,将来处理器发展的趋势是:为了达到更高的性能,在采用相同微架构的情况下,可以增加处理器的内核数量同时维持较低的主频。这样设计的效果是,更多的并行提高处理器性能,较低的主频有效地控制了功耗的上升。开创于2005年春季的多核时代到来了,其标志是Intel的Pentium D2 = 800双核芯片,现在四核cpu已经成了 pc电脑主流配置,8核也不少见,连手机也已经开始使用双核芯片。
[0004]现在计算机硬件已经进入了多核时代,计算机软件计算方式也要“改朝换代”了,串行计算将步入历史,而并行计算则逐渐走向主流.目前能够充分发挥多核威力的软件还很少,为了与高速发展的硬件相适应,许多公司投入大量资金来研究多核并行计算技术。由英特尔和无锡市滨湖区政府共同资助建设全球首个并行计算中心:“英特尔中国并行计算中心”,已于2010年年初正式投入运行。并行计算已经在数据中心和超级计算机有了很多应用,随着更高性能和更低能耗的多核时代的不断演进,并行计算在个人电脑上也会有更多更广应用,必将渗透到人们工作和生活的方方面面。为最大程度地发挥多核的优势,需要有针对多核并行计算开发和优化应用程序。正是在此大背景下,我从四大基本运算中最复杂的除法着手,发明了除法并行计算算法,为多核计算机除法计算并行提供了新的重要工具。

【发明内容】

[0005]1.发明目的
[0006]本发明的目的是把人类使用了几千年只能串行计算的传统除法,变成可以并行计算,使多核计算机进一步提高除法的计算速度,为众多多核并行计算应用程序,超级计算机并行计算以及未来的量子计算机提供了重要工具。
[0007]2.算法原理
[0008]普通除法的基本计算过程是这样的,第一步用除数来分被除数计算出商数,再把余数看做新的被除数,继续用除数来分,如此循环做下去。从这个计算过程可以看出,后面的每一步必须在前一步完成后,计算出新的余数,才可以做下一步的计算。因此这种方法是典型的串行计算方法,无法进行并行计算。
[0009]我发明的并行计算算法的核心点是发明出了可以并行计算出任何一步余数的新方法:计算A除以B的第K步的余数,可以用A乘10的K次幂模B的方法来计算出余数。由于10的K次幂模B是可以并行计算,所以这一步也能发挥多核的优势。
[0010]不失一般性,在下面的说明中总是设定A < B,g A > B,只要先做一步普通除法,以后的除法就变成A < B的情形了。
[0011]利用这个原理就可以把计算A/B的N位商,巧妙的变化成同时计算A/B,A1/B,A2/B,A3/B,...A(m-1)/B,的Ν/m+l位商,m为该计算机核的个数(计算机算机实际可以并行计算的进程数)。首先计算41^2^3,...,Am-1,m-l个新被除数的值,加上原来的被除数A,共有m个被除数,这样m个核就能同时开始用任何一种除法的计算方法来并行计算Ai/B的Ν/m+l位商,最后把每个核计算结果合并,就得到A/B的N位商。
[0012]为了使原理说明简单明了,把并行计算的进程数m取为计算机的核数,(计算机实际可以并行计算的进程数),实际应用时m可以根据B/m的大小而改变,m可以取计算机的核数的任何一个因子数,以使B/m的余数最大为最好,因为这个余数较小时最后这一进程需要做的多余计算会多一些。需要特别说明的是,由于该算法的这个m可以任意大,因此该算法也能用于未来十几年 后就会面世的量子计算机。由于量子计算机可以同时做数百万次的并行计算,因此,今天因为除法计算量太大而不能解决的问题,届时都会迎刃而解了。
[0013]应用这个原理就可以除法实现并行计算,另一个重要突破就是该原理可以用在除法计算的许多方面,例如除法结果可以从小数点后1000位开始计算而并不要知道前1000位是什么数。
[0014]3.算法特点:
[0015]该方法的串行计算部分的计算量很小,两大部分主要计算工作量都可以并行计算,因此加速比很高。理论上有几个核就提高到几倍。各个并行计算进程部分完全同时独立完成本部分的计算,不需要和别的进程通信,所以适用各种类型超级计算机或多核计算机的并行除法计算。该方法也适用于任何进制数的除法运算,在G进制下计算A除以B第K位的余数,可以用A乘G的K次幂模B的方法来并行计算出第K位的余数。
[0016]4.算法逻辑如下:
[0017]Λ代表该行为注释说明
[0018]Λ多核计算机除法并行计算算法逻辑
[0019]Λ输入:Μ被除数,N除数,M < N, core_num计算机核数
[0020]Δ D[l...core_num-l]保存 core_num_l 个新的被除数
[0021]AG[1...b]保存b位普通除法结果
[0022]Λ输出:Η[1...N]保存Μ/Ν全部N位商
[0023]Program:
[0024]Δ Procedure Ptcf (A,B,c,E[c])任何一种普通除法过程,A < B,计算 A/B 的 c位商,保存在E [c]
[0025]Δ begin
[0026]b — floor (N/ core_num)
[0027]R — fmod(N,core—num)[0028]If (R ! =0)
[0029]b = b+1
[0030]D[0] — M
[0031]Λ并行计算计算core_num-l个新被除数
[0032]For k — I to core_num_l
[0033]Do
[0034]X — k*b [0035]y — M*pow(10, x)
[0036]D [k] — fmod (y, N)
[0037]Λ新被除数并行计算结束
[0038]Λ并行除计算开始
[0039]For k — O To core_num_l
[0040]Do
[0041]G.clear ()清空 G
[0042]Call Ptcf (D[k], N, b, G[b])
[0043]For j — I To b
[0044]Do H[j+k*b] — G[j]
[0045]Λ并行除计算结束
[0046]Λ输出计算结果:Η[Ν]
[0047]Δ End
[0048]发明有益效果
[0049]本发明把人类使用了几千年只能串行计算的传统除法,变成可以并行计算,从而大大提高了除法的计算速度。今天多核CPU已经成为计算机普遍使用的基本配置,因此每个多核计算机都可以从本发明获益。特别是对于那些具有十几万核数的超级计算机更是受益匪浅,过去因除法计算量太大而不能解决的有些问题,现在使用本发明后有可能解决了。根据我几年来在多核计算机大量实际计算测试,不管用什么方法计算除法,用我发明的这个多核并行计算算法,都比传统的除法要快。理论上有几个核,除法计算速度提高到几倍。由于现在多核计算机的核还只有几个或十几个,超级计算机也只有十几万个,而量子计算机的并行计算能力相当于数百万个核的能力,那时该算法才能真正发挥出它的并行计算威力。
[0050]发明实施方案
[0051]算法实际计算实例:
[0052]Δ以四核计算机算13/47为例
[0053]Core_num = 4
[0054]M = 13
[0055]N = 47
[0056]b = 47/4 =11
[0057]R = 47mod 4
[0058]b = 11+1 = 12[0059]D[O] = 13
[0060]Λ并行计算出三个新被除数
[0061]D[l] = (13*10~12 mod 47) = 40
[0062]D[2] = (13*10~24 mod 47) = 11
[0063]D[3] = (13*10~36 mod 47) = 23
[0064]Λ并行除计算:四个核同时做12位普通除法计算,
[0065]Ptcf (13,47,12, G[12])
[0066]Η[1...12] = G[l...12] = 0.276595744680
[0067]Ptc(40,47,12,G[12])
[0068]G[13...24] = G[l...12] = 851063829787
[0069]Ptcf (11,47,12, G[12])
[0070]H[25...36] = G[l...12] = 234042553191
[0071]Ptcf (23,47,12, G[12])
[0072]H[37...48] = G[l...12] = 489361702127
[0073]Λ最后一个会多算几位(本例多计算一位)
[0074]Λ合并输出各核计算结果
[0075]H[l...47] = 0.276595744680 851063829787 2340425519148936170212。
【权利要求】
1.一种实现并行除法的算法与装置,其特征是:提出了一种可以并行计算出任何一步余数的新方法:计算A除以B第K步的余数,可以用A乘10的K次幂模B的方法来并行计算出余数。
2.根据权利要求1所述的方法,其特征是:把计算A/B的N位商,变化成同时计算A/B,A1/B,A2/B,A3/B,...A(m_l)/B,的Ν/m+l位商,m为该计算机核的个数(计算机算机实际可以并行计算的进程数)。首先并行计算Al,A2,A3,...,Am-Lm-1个新被除数的值,加上原来的被除数A,共有m个被除数,这样m个核就能同时开始用任何一种除法的计算方法来并行计算Ai/B的Ν/m+l位商,最后把每个核计算结果合并,就得到A/B的N位商。
3.根据权利要求2所述的方法,其特征是:同时并行计算的进程数m可以任意大,因此该算法也可以用于同时做数百万次并行计算的量子计算机。
4.根据权利要求1所述的一种实现并行除法的算法与装置,其特征是:除法计算可以从小数点后任何一位开始计算而并不要知道前面的计算结果。
5.根据权利要求1所述的一种实现并行除法的算法与装置,其特征是:说明书仅以10进制为例来说明原理,事实上该方法也适用于任何进制数的除法运算,在G进制下计算A除以B第K步的余数,可以用A乘G的K次幂除以B的方法来并行计算出第K位的余数。
【文档编号】G06F7/535GK103699356SQ201210365716
【公开日】2014年4月2日 申请日期:2012年9月27日 优先权日:2012年9月27日
【发明者】任光前 申请人:任光前
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1