PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

转载个文章,关于SuperPi的

  [复制链接]
1#
dxkzy 发表于 2013-3-2 04:35 发自PCEVA移动客户端 | 显示全部楼层
看到这帖子被顶上来,顺带说一句
wprime也根本不是国内很多媒体说的算质数,而是用牛顿迭代法算平方根...
2#
dxkzy 发表于 2013-3-2 05:14 发自PCEVA移动客户端 | 显示全部楼层
硬件哨兵 发表于 2013-3-2 01:58
Pi = 【  ( a + b ) / 2  +  sqrt( b ・ y )  】^2 / 【 4 ・ t -2 ・ x ・ ( y - a )^2】

我不知 ...

计算机科班出生的来说几句
首先目前冯诺伊曼体系下计算机内所有运算和数据存储都是二进制,不管算什么都用二进制
其次带小数点的数字是人类世界的描述,在计算机内部它既可以是浮点形式、也可以是字符串形式甚至可以是点阵形式,取决于不同的需要,由软件开发者决定
而本文正是介绍了superpi的软件开发者如何通过整数数组完成pi计算的,其原理在程序设计中有一个专门的概念叫高精度计算.所以可以说superpi绝大部分运算是整数运算,小部分运算是逻辑运算,极小部分(远低于1%)的是浮点运算
最后想夹带点私货,虽然这玩意整数运算为主,但很可能最后体现的是cpu读缓存、内存的速度...

评分

参与人数 1活跃度 +20 收起 理由
overthink + 20 很给力!

查看全部评分

3#
dxkzy 发表于 2013-3-2 20:11 | 显示全部楼层
硬件哨兵 发表于 2013-3-2 19:59
俺的常识告诉俺,PI是一个无理数,算PI用除法。 3.14往下算算算算多少多少位。

简单的说,就是小学学的列竖式计算除法
竖式可以去掉小数点算,算完了再把小数点添上就行了
至于二进制还是十进制,程序编写的时候大多数用十进制,但是编译器会帮程序员变成二进制,CPU只能执行二进制指令(或者更明确的说是导线上的高低电平)
4#
dxkzy 发表于 2013-3-2 21:03 | 显示全部楼层
本帖最后由 dxkzy 于 2013-3-2 21:11 编辑
硬件哨兵 发表于 2013-3-2 20:28
那也是做除法哇。就算不带分号,列竖式计算除法,也是做除法。

http://zh.wikipedia.org/wiki/%E6%B5%AE%E ...

列竖式算除法只用乘法和减法吧...?
另外整数可以做整数除法的,就是有商和余数那种
至于这个整数除法具体是怎么实现的,是通过FPU变通实现还是用一个很强的ALU实现,就要具体问AMD和INTEL了
但是从使用者或者说开发者的角度看,整数除法也算在整数性能内吧
5#
dxkzy 发表于 2013-3-2 21:20 | 显示全部楼层
硬件哨兵 发表于 2013-3-2 21:17
先做除法

然后计算PI这样一个无理数的用整数除法

应该压根就没用除法算吧
除法都是用乘法和减法代替的
6#
dxkzy 发表于 2013-3-2 21:43 | 显示全部楼层
硬件哨兵 发表于 2013-3-2 21:24
http://zh.wikipedia.org/wiki/%E6%B5%AE%E7%82%B9%E6%95%B0%E8%BF%90%E7%AE%97#.E6.B5.AE.E7.82.B9.E6.9 ...

我一开始就说的很明确了吧,你眼中的浮点数在代码里面是用整数数组表示的...
7#
dxkzy 发表于 2013-3-2 22:01 | 显示全部楼层
硬件哨兵 发表于 2013-3-2 21:55
又绕回去了,SUPER PI就是算圆周率哇  

π ≈22/7    这个公式不精确

建议你去看看什么叫高精度计算,如果不会编程的话,可以学点编程的基础
8#
dxkzy 发表于 2013-3-2 22:13 | 显示全部楼层
硬件哨兵 发表于 2013-3-2 22:08
好吧,  反正就是99%的整数运算  反正就是用了 99%的ALU

你是这意识吧?



所以你的下一个问题是为什么AMD整数性能好,但是superpi却不强对吧
我个人理解,AMD模块化之后,每个模块整数运算时可以当双核心用
但是superpi软件没有针对多核优化,所以只能用到一个核心也就是半个模块
9#
dxkzy 发表于 2013-3-2 22:41 | 显示全部楼层
硬件哨兵 发表于 2013-3-2 22:21
X4 955 有3个ALU   同频率 也慢了一半了

所以了

你是说这个帖子里和intel的比?
http://bbs.pceva.com.cn/thread-82532-1-1.html
实际上不同架构的CPU性能对比的话有很多可能性了,比如流水线不行,分支预测不行等等
我估计是内存控制器或者缓存不给力
就像我最早那帖子里夹带的私货,superpi是个内存密集型的应用
就是说ALU只起到算寄存器里面数据的作用,如果数据来不及从内存放到寄存器中的话,ALU再多都没用
10#
dxkzy 发表于 2013-3-2 22:59 | 显示全部楼层
硬盘哨兵 发表于 2013-3-2 22:55
主要是差距太大

一个14秒  一个26秒

我只能说这很正常,CPU执行程序比你想象得复杂的多,如果有兴趣的话可以pm我私聊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部