|
我来简单说说吧:
Whetstone最初是英国国家物理实验室的Brian Wichmann设计出来的,是用来测试假定机器上的ALGOL 60编译器,这个系统后来就叫做Whetstone,然后这个benchmark程序就也被称作Whetstone。
Whetstone这个测试的首次实际执行时1972年Harold Curnow写的一段Fortran,在76年的时候Curnow和Wichmann把这个程序发表在The Computer Journal上,这被认为是历史上第一个重要的假想性测试程序(synthetic benchmark),测试代码包括了标量、向量类指令,涵盖了加法、乘法、sin、cos、atan、sqrt、log、exp等浮点指令以及少量的整数指令,而且它的loop很短,可以被绝大多数CPU的L1 cache吃掉。
Whetstone很快就有了C编写的版本,并在以后的测试中也大都使用该版本,特别是gcc可以很好地支持它的编译。
Whetstone从一开始就是高级语言编写的,而且代码比较短、干净,结构简单,故此可以在Unix、Linux、Windows等操作系统上编译执行。
很显然,Whetstone从一开始就是一个提供了源代码的浮点测试程序,采用高级语言编写,它在Power+AIX的系统上就会被编译成Power/AIX二进制操作码,在x86+Windows上就是被编译成x86/Windows二进制操作码,在x86+Linux上就是被编译成x86/Linux二进制操作码。
在不打开优化指令开关的情况下进行编译,Whetstone就是直接在FPU上执行,在x86处理器上跑非优化的二进制码就是在x87单元上跑。
toscana008说的Whetstone在*nix上跑就以为Whetstone在x86处理器上不是用x87跑是本身就是不正确的说法,而提出"RISC不能跑x87"来说明Whetstone在x86上不能跑x87同样是缺乏*nix、编译等知识造成的误区。
Whetstone的双精度C版本,如果在编译器打开了优化指令开关的情况下跑,还是在SIMD单元上跑的。
最后,Whetstone并不能充分反映CPU的浮点性能,这在80年代、90年代初的时候已经被业界广泛认识,TOP500上的HPL(High Performance Linpack)相比之下更能反映系统的双精度浮点性能。
在比对CPU性能的时候,SPEC CPU的测试数据是最具意义的,远不是Linpack所能比的,更勿论玩具般的Whetstone。 |
|