CPU性能跑分工具 SPEC2006
#
比较
2006年8月24日,标准性能评估公司(SPEC)宣布CPU2006将取代SPEC2000。 Spec2006基准测试被广泛的应用于工业界和学术界。新套件比Spec2000要大很多,而且将涵盖到CPU、存储器系统、编译器特别是 C++编译器。cpu2000只有1个关于C++的基准测试,CPU2006则含有7个相关套件,这其中包括了50W行c++代码,Fortran和C语言和之前一样有很好的覆盖
2017年6月(SPEC)又发布了新一代的CPU测试工具SPEC2017其相较于SPEC2006也有做了和多的升级,具体的升级点可以查看官网
跑分细则
其跑分主要分为四个部分:1.INT整形单线程 2.INT整形满线程 3.FP浮点单线程 4.FP浮点多线程
1. 其中"int"整形跑分项为11项分别如下:
400.perlbench:C语言编写,同spec2000的253.perlbmk类似,是Perl V5.8.7版本的删减版,同样删除了一下操作系统特性有关的东西,增加了第三方的模块,如:SpamAssassin V2.61,Digest-MD5v2.33 HTML-Parser v3.35,MHonArc V2.6.8,IO-stringy V1.205,MailTools V1.60,TimeDate V1.16。400.perlbench采用3个脚本进行增加负载或工作。1.主要的负载在于打开 垃圾邮件过滤软件SpamAssassin。采取的 过滤方式是采用记分制,也就是说会根据我们所设定的标准来给予分数超过标准值的时候即判定
为 SPAM(垃圾邮件),其余为非垃圾邮件。但对SpamAssassin软件做了很大程度的修改,避免一些I/0操作,并且没 有使用贝叶斯过滤。2.是比较流行的email到HTML的转换器MHonArc 3.使用了spec2006的工具套件specdiff。
401.bzip2:C语言实现,同spec2000的256.bzip2类似,基于Julian Seward的bzip2 v1.03.唯一的不同是SPEC中的bzip2除了输入外,无文件I/O。所有的压缩和解压都在内存中进行。输入,输出都和gzip的相似。负载包括六个部分:两个小的JPEG图片、一个程序、一个tar包起的几个源程序文件、一个HTML文件、混合文件,包括压缩起来的高可压缩文件及不怎么可压缩的文件。测试分别使用了三个不同的压缩等级进行压缩和解压缩
403.gcc:C语言实现,同spec2000的176.gcc类似。该测试是基于gcc V3.2,为AMDCPU生成机器码。相比spec2000的176.gcc,该测试有更多的输入文件,因此测试压力会更大,负载来源于对9组C代码进行编译。
429.mcf:C语言实现,同时需要libm库支持,同spec2000的181.mcf类似,MCF是一个用于大型公共交通中的单站车辆调度的程序。但对输入文件做了一定的修改,由32位变成64位,用以兼容64位系统。并且增加了cache命中和程序的性能。相比spec2000的181.mcf来说,占用的内存由之前的100M-190M变为860M-1700M。
445.gobmk:C语言实现,同spec2000的186.crafty类似。不同的是这里是实现的围棋游戏。相比spec2000程序更复杂。
456.hmmer:C语言实现。HMMER是基于隐马尔可夫模型(profile HMMs),用于生物序列分析工作。同Timed HMMer Search 类似。
458.sjeng:C语言实现。基于一种象棋游戏Sjeng11.2,属于人工智能的范畴。
462.libquantum: C语言实现(C99)。libquantum是模拟量子计算机的库文件,用来进行量子计算机应用的研究。
464.h264ref: C语言实现。一种视频压缩程序,基于H264AVC 9.3版,去除了I/O和平台相关的东西。
471.omnetpp: C++语言实现。OMNeT++,离散事件仿真。包括约8000台计算机和900个交换机/集线器,以及混合了各种从10Mb到1000Mb速率的大型CSMA/CD协议以太网络模拟。
473 astar:C++语言实现,实现了2D寻路算法A的三种不同版本。
2. 其中"fp"浮点跑分项为12项分别如下: 其中"fp"浮点跑分项为17项分别如下:
410.bwaves:Fortran 77语言实现,流体力学范畴。对三维瞬跨音速粘性流中冲击波的模拟计算
416.gamess:Fortran语言实现,量子化学范畴。采用GMAESS组件,包含 胞嘧啶分子、水和Cu2+离子、三唑离子等3种SCF自洽场计算。
433.milc:C语言实现,量子力学范畴,采用MILC组件,包含用来研究QCD量子色动力学、夸克及胶子的四维SU(3)格点规范理论的模。
434.zeusmp :Fortran 77/REAL8语言实现,属于计算流体力学范畴,ZEUS-MP程序,用来计算理想、非相对论条件下的流体力学和磁流体力学,zeusmp模拟计算了一个统一磁场中的3D冲击波。
435.gromacs :C & Fortran语言实现,属于生物化学/分子力学范畴。GROMACS是一个分子力学计算套件,然而也可以用于非生物系统,gromacs模拟了在一个水和离子溶液中的蛋白质溶菌酶结构在各种实验手段如核磁共振的X光照射下的变化。
436.cactusADM:Fortran 90, ANSI C语言实现,物理中的广义相对论。来源于CactusBenchADM。cactusADM对时空曲率由内部物质决定的爱因斯坦演化方程进行求解,爱因斯坦演化方程由10个标准ADM 3+1分解的二阶非线性偏微分方程组成。
437.leslie3d :Fortran 90语言实现,属于流体力学范畴。 LESlie3d是用来计算湍流的计算流体力学程序,leslie3d计算了一个如燃油注入燃烧室的时间分层混合流体。
444.namd:C++语言实现。属于生物/分子学范畴。NAMD是一个大型生物分子系统并行计算程序,namd模拟了了92224个原子组成的A-I载脂蛋白
447.dealII:C++语言实现。进行有限元分析,w/Boost lib 、deal.II lib、deal.II是定位于自适应有限元及误差估计的C++库,dealII对非常系数的亥姆霍兹方程进行求解,它使用了基于二元加权误差估计生成最佳网格的自适应方法,该方程在3维得解。
450.soplex:C++语言实现。采用Plex v1.2.1程序,Plex使用单纯形算法解线性方程
453.povray:ISO C++ 语言实现。 POV-Ray POV-Ray是一个光线追踪渲染软件,povray渲染一幅1280x1024的反锯齿国际象棋棋盘图像 (12)
454.calculix:Fortran 90 & C语言实现,结构力学范畴。CalculiX是一个用于线性及非线性三位结构力学的有限元分析软件,454.calculix计算了一个高速旋转的压缩盘片在离心力的作用下的应力和变形情况
459.GemsFDTD:Fortran 90语言实现。属于电磁学范畴。GemsFDTD使用FDTD(有限差分时域)方法求解三维时域中的麦克斯韦方程,计算了一个理想导体的雷达散射截面
465.tonto: Fortran 95实现。量子化学范畴Tonto是一个面向对象的量子化学程序包,465.tonto计算面向量子晶体学,它基于一个符合X光衍射实验数据的、约束的分子Hartree-Fock波函数
470.lbm :ANSI C语言实现。lbm使用LBM(格子波尔兹曼方法)模拟非压缩流体,它模拟了两种情况:类似活塞推动的剪切驱动流体和管道流体,测试包含了3000个步骤
481.wrf :Fortran 90 &
#
#
#将文件spec2006_gcc8.3.tar.gz复制到桌面上
#解压缩到/home目录下
tar -zxvf spec2006_gcc8.3.tar.gz /home
#进入文件spec2006
cd /home/spec2006
#执行以下命令(x86架构)
bash install.sh
#输入yes
yes
#安装成功
#进入config文件
cd config
#将文件Example-linux64-amd64-gcc41.cfg 复制一份改为自己喜欢的名字,我这边就改为了x86
cp Example-linux64-amd64-gcc41.cfg x86.cfg
#编辑文件
vim x86.cfg
#找到以##SW config开头的文件将下面的代码复制上去
## SW config
sw_os = SUSE SLES9 (for AMD64)
sw_file = ext3
sw_state = runlevel 3
sw_compiler = gcc , g++ & gfortran 4.9.2 (for AMD64)
sw_avail = Dec-9999
sw_other = None
sw_auto_parallel = No
sw_base_ptrsize = 64-bit
sw_peak_ptrsize = Not Applicable
#####################################################################
# Optimization
#####################################################################
## Base is low opt
default=base=default=default:
COPTIMIZE = -std=gnu89 -flto -O3 -ffast-math -funroll-loops -fomit-frame-pointer -ftree-vectorize -fprefetch-loop-arrays
CXXOPTIMIZE = -std=c++03 -flto -O3 -ffast-math -funroll-loops -fomit-frame-pointer -ftree-vectorize -fprefetch-loop-arrays
FOPTIMIZE = -O3 -ffast-math
notes0100= C base flags: $[COPTIMIZE]
notes0110= C++ base flags: $[CXXOPTIMIZE]
notes0120= Fortran base flags: $[FOPTIMIZE]
#####################################################################
# 32/64 bit Portability Flags - all
#####################################################################
default=base=default=default:
notes25= PORTABILITY=-DSPEC_CPU_LP64 is applied to all benchmarks in base.
PORTABILITY = -DSPEC_CPU_LP64
400.perlbench=base=default=default:
COPTIMIZE = -std=gnu89 -flto -O3 -ffast-math -funroll-loops -fomit-frame-pointer -ftree-vectorize -fprefetch-loop-arrays
416.gamess=default=default=default:
FOPTIMIZE = -O3 -march=native -ffast-math -funroll-loops -fomit-frame-pointer -fprefetch-loop-arrays -fno-tree-dominator-opts -fno-aggressive-loop-optimizations -fwhole-program -flto=jobserver -fuse-linker-plugin
429.mcf=base=default=default:
COPTIMIZE = -std=gnu89 -flto -O3 -ffast-math -funroll-loops -fomit-frame-pointer -ftree-vectorize -fprefetch-loop-arrays
#####################################################################
# Portability Flags - INT
#####################################################################
400.perlbench=default=default=default:
notes35 = 400.perlbench: -DSPEC_CPU_LINUX_X64
CPORTABILITY= -DSPEC_CPU_LINUX_X64 -include math.h
EXTRA_CFLAGS = -fno-strict-aliasing
462.libquantum=default=default=default:
notes60= 462.libquantum: -DSPEC_CPU_LINUX
CPORTABILITY= -DSPEC_CPU_LINUX
416.gamess=default=default=default:
#FOPTIMIZE=-O1 -march=native
FPORTABILITY = -std=legacy -fno-aggressive-loop-optimizations -fdelete-dead-exceptions
464.h264ref=default=default=default:
CPORTABILITY = -fsigned-char
403.gcc=default=default=default:
483.xalancbmk=default=default=default:
CXXPORTABILITY= -DSPEC_CPU_LINUX -include cstdlib -include cstring
#447.dealII=default:
#CXXPORTABILITY = -include cstdlib -include cstring
#CXXPORTABILITY= -DSPEC_CPU_LINUX -DXALAN_STRICT_ANSI_HEADERS
482.sphinx3=base=default=default:
CPORTABILITY = -fsigned-char
454.calculix=default=default=default:
#####################################################################
# Portability Flags - FP
#####################################################################
481.wrf=default=default=default:
#wrf_data_header_size = 8
CPORTABILITY = -DSPEC_CPU_CASE_FLAG -DSPEC_CPU_LINUX
447.dealII=default:
CXXPORTABILITY = -include cstring -include cstddef -include cstdlib
#####################################################################
完成后保存,重新进入spec2006界面
#打开并编辑run_spec2006.sh文件
vim run_spec2006.sh
将框中的.cfg文件改为前面修改的我这里就改为了x86.cfg
#然后运行即可
bash run_spec2006.sh
#gcc编译所以一定要注意gcc的版本
#查看gcc版本
gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
目标:x86_64-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
线程模型:posix
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
#如果没有需要下载
#ubuntu
apt install gcc g++ gfortran
#CentOs
yum install gcc gcc-c++ gcc-gfortran
上图中为需要跑的模块
编译完成后
跑分完成后在result文件夹中可以找到.pdf的结果文件
四.总结#
以上只是我本人的一些观点和步骤,如有不足或者与本人意见不同的地方欢迎在评论区参与讨论
作者:Xiaoma
出处:https://www.cnblogs.com/xiaomawo/articles/18000165
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
本文来自博客园,作者:{小马窝},转载请注明原文链接:{https://www.cnblogs.com/xiaomawo}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具