TA的每日心情![](source/plugin/dsu_paulsign/img/emot/kx.gif) | 开心 2015-11-7 19:03 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
hellohello22 发表于 2014-1-4 11:31
那你的意思,wPRIME计算的几十秒时间是错误的?
就计算1个32M位的pim,2个软件计算结果差别数十倍,我对 ...
都告诉你了算法不一样,否则为何一个支持多核一个只是单核,而且先前我亲测的不止一次提到的G1620用你的读数方法单核28秒,双核31秒,你就是不解释,选择性的抱住你的观点不放,告诉你算法不一样效率差很多你也不信,让你去找你也不找,简直就是油盐不进,我起码算完了有疑问会去学习然后纠正一下,你连纠正都不纠正,纠正自己不是没面子的事,对你的执着和自以为是,我也只能呵呵了。
SuperPI所采用的Gauss-Legendre算法:(PS:又叫做AGM算法(Arithmetic-Geometric Mean))
1.初值确定
a = 1
b = 1 / sqrt( 2 )
t = 1 / 4
x = 1
2. a与b都取同样的精度,反复迭代计算下式:
y = a
a = ( a + b ) / 2
b = sqrt( b * y )
t = t - x * ( y - a )^2
x = 2 * x
3.a和b迭代到足够精度后,根据下式可以计算出PI值
Pi = ( a + b )^2 / ( 4 * t )
这个公式的特点是每迭代一次将得到比前一次迭代高一倍的精度,所以要计算104万位(2的22次方),迭代19次就够了,这就是为什么SuperPi的计算为数都是以2的倍数递增,且计算时会出现一条条的纪录,这就是每一次迭代所花费的时间!理论上每次花费的时间都应该是完全相同的。比较可笑的是SuperPi MOD版本的汉化翻译,把19次迭代翻译成需要重复计算19次,明显存在着理解上的错误。
计算42亿位的巨型机所使用的Borwein四次迭代式:
1.初值确定:
a[0] = 6 - 4* sqrt( 2 )
y[0] = sqrt( 2 ) - 1
2. 反复计算下式,提高精度
y[k+1] = { 1-(1-y[k]^4 )^(1/4) } / { 1+(1-y[k]^4)^(1/4) }
a[k+1] = a[k]*(1+y[k+1])^4 - 2^(2?k+3)*y[k+1]?(1+y[k+1]+y[k+1]^2)
3.当a[n]和b[n]达到足够精度后,可以确定Pi值
Pi = 1 / a[n]
所以可以看出,该公式首先算出其实是Pi的倒数,算出a[n]后,要做一个“巨型”的除法才能得到真正的Pi值
另一方面必须要认识到,SuperPi的编写年代久远,现在看来实现的效率非常低。Qpi即使用完全同样的算法,在我的E6300机器上只需3.37秒就完成了104万位的计算的19次迭代!
计算过程(QPI4.5版 使用-agm3参数,和SuperPi完全相同算法 E6300未超频 Vista环境 ):
Starting 1st iteration, time : 0.13
Starting 2nd iteration, time : 0.19
Starting 3rd iteration, time : 0.17
Starting 4th iteration, time : 0.19
Starting 5th iteration, time : 0.19
Starting 6th iteration, time : 0.19
Starting 7th iteration, time : 0.17
Starting 8th iteration, time : 0.19
Starting 9th iteration, time : 0.17
Starting 10th iteration, time : 0.19
Starting 11th iteration, time : 0.17
Starting 12th iteration, time : 0.19
Starting 13th iteration, time : 0.19
Starting 14th iteration, time : 0.17
Starting 15th iteration, time : 0.19
Starting 16th iteration, time : 0.19
Starting 17th iteration, time : 0.17
Starting 18th iteration, time : 0.17
Starting 19th iteration, time : 0.17
Total iteration time : 3.37
Computing final value, time : 0.14
Total time : 3.56 seconds
Total memory used : 12,003,171 (11.45 M
Processor utilization : 128.98%
CPU利用率达到了128.98%说明其利用了第二个核心的28.98%的效率,发挥了了一定的双核优势,但即使是完全单核执行应该也不会慢到哪里去,比起SuperPi漫Zhang的30秒计算几乎达到了10倍速,而这个成绩也比超频榜上的那些个发烫的成绩要快得多了,如果使用最快的chudnovsky算法,只要1.5秒便结束了104万的战斗....如果换成超频榜上的那些牛机,只需零点几秒便解决了!
不知道用SuperPi的人中有几个人知道Pifast,有几个知道Qpi,还有几个人两个都知道的
|
|