SPEC2006学习使用

2023-10-31 17:44
文章标签 学习 使用 spec2006

本文主要是介绍SPEC2006学习使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

spec 2006学习记录

1. 安装依赖包:

apt-get install gcc g++ gfortran libbz2-dev

2.解压缩speccpu2006测试工具包,并附执行权限:

tar xvf speccpu2006-v1.0.1-newest.tar 
chmod -R a+x /home/speccpu2006-v1.0.1


3.编辑 tools/src/buildtools 文件,将311行注释,并添加一行export PERLFLAGS="-A libs=-lm -A libs=-ldl"

    // export LD_LIBRARY_PATH DYLD_LIBRARY_PATHexport PERLFLAGS="-A libs=-lm -A libs=-ldl"

4.修改tools/src/make-3.8.0/glob/glob.c文件,
在209行“#if !defined __alloca && !defined GNU_LIBRARY”和230行“#endif”前添加“//”注释掉

//#if defined __alloca && !defined __GNU_LIBRARY__# ifdef __GNUC__
#  undef alloca
#  define alloca(n)     __builtin_alloca (n)
# else  /* Not GCC.  */
#  ifdef HAVE_ALLOCA_H
#   include <alloca.h>
#  else /* Not HAVE_ALLOCA_H.  */
#   ifndef _AIX
#    ifdef WINDOWS32
#     include <malloc.h>
#    else
extern char *alloca ();
#    endif /* WINDOWS32 */
#   endif /* Not _AIX.  */
#  endif /* sparc or HAVE_ALLOCA_H.  */
# endif /* GCC.  */# define __alloca       alloca# ifdef __GNUC__
#  undef alloca
#  define alloca(n)     __builtin_alloca (n)
# else  /* Not GCC.  */
#  ifdef HAVE_ALLOCA_H
#   include <alloca.h>
#  else /* Not HAVE_ALLOCA_H.  */
#   ifndef _AIX
#    ifdef WINDOWS32
#     include <malloc.h>
#    else
extern char *alloca ();
#    endif /* WINDOWS32 */
#   endif /* Not _AIX.  */
#  endif /* sparc or HAVE_ALLOCA_H.  */
# endif /* GCC.  */# define __alloca       alloca//#endif

5.安装speccpu2006:

./install.sh  //在弹出的提示信息中,选择yes,后回车

6.初始化环境变量:

[root@localhost /speccpu2006-v1.0.1]# source shrc

7.检查SPEC CPU2006是否安装成功

root@test-attft2000c8f4:~/speccpu2006-v1.0.1# . ./shrc
root@test-attft2000c8f4:~/speccpu2006-v1.0.1# runspec -V
runspec v4662 - Copyright 1999-2006 Standard Performance Evaluation Corporation
Using 'unknown' toolsThis is the SPEC CPU2006 benchmark tools suite.Version summary:CPU2006 version: 1.0.1Benchmarks version: 098aTools version: 098arunspec version: 4662 ($Id: runspec 4662 2006-07-24 21:10:20Z cloyce $)Tools information:Tools package installed: unknownFile locking method: LockFileEx (network-safe)
Mode |  UID  |  GID  |   Size  |    Modified Date   | Name
0755 | 0     | 0     |  218536 | 31-Nov-2023 07:12:48 | specmake
0755 | 0     | 0     | 1330400 | 31-Nov-2023 07:12:48 | specperl
0755 | 0     | 0     |   26568 | 31-Nov-2023 07:12:48 | specinvoke
0755 | 0     | 0     |   30664 | 31-Nov-2023 07:12:48 | specinvoke_pm
0775 | 0     | 0     |  136344 | 31-Nov-2023 07:12:48 | specbzip2
0755 | 0     | 0     |   34808 | 31-Nov-2023 07:12:48 | specmd5sum
0755 | 0     | 0     |    7607 | 31-Nov-2023 07:13:19 | specdiff
0755 | 0     | 0     |   85740 | 31-Nov-2023 07:13:19 | specpp
0755 | 0     | 0     |   88872 | 31-Nov-2023 07:13:19 | runspec
0775 | 1000  | 1000  |    1143 | 16-Nov-2018 01:41:28 | runspec.batVersion info for specinvoke (/root/speccpu2006-v1.0.1/bin/specinvoke): Version: 4205
Version info for specmake (/root/speccpu2006-v1.0.1/bin/specmake): GNU Make 3.80spec
Version info for specbzip2 (/root/speccpu2006-v1.0.1/bin/specbzip2): bzip2 v1.0.3, 15-Feb-2005
Version info for specpp (/root/speccpu2006-v1.0.1/bin/specperl): filepp version 1.7.1SPEC
Version info for specperl (/root/speccpu2006-v1.0.1/bin/specperl): This is specperl, v5.8.7 built for aarch64-linuxFor more detail on specperl, say 'specperl -V'
root@test-attft2000c8f4:~/speccpu2006-v1.0.1# 


8.选择相应配置文件进行测试:

[root@localhost /speccpu2006-v1.0.1/config]# cd config/
[root@localhost /speccpu2006-v1.0.1/config]# cp arm64.cfg test.cfg //根据架构选择不通的cfg文件[root@localhost /speccpu2006-v1.0.1/config]# runspec -c arm64.cfg -n 1 -r 1 all  //单线程
[root@localhost /speccpu2006-v1.0.1/config]# runspec -c arm64.cfg -n 1 -r N all  //多线程

9. SPEC2006测试参数详解

单个项目测试

runspec -c  test.cfg  429.mcf --rate 4 -n 1  --noreportable

int整数测试

runspec -c test.cfg  int --rate 8 -n 1 -size=ref   --noreportable    --output_format all

fp浮点数测试

runspec -c test.cfg  fp --rate 8 -n 1 -size=ref   --noreportable    --output_format all

全项目测试

runspec -c test.cfg --rate 8  --noreportable --size=ref  --tune=base  -o text,screen,pdf -I --iterations=1 all

1)ref:测试规模

   测试规模有test,ref,train其中test最小跑的时间最短,如果测试编译器正确性的时候可以用test规模,但是想测试性能时候用ref

2)iterations=3次:测试次数

编译器性能稳定时候测一次就行,也可以写成n 3;
如果想得到加权统计的结果,也就是常说的cpu的spec分数,需要设置iterations大于等于3。


3) all 测试范围: 表示进行fp和int测试

将all替换成int 或 fp 进行定点和浮点的测试;将all替换成456/444等文件编号,表示对某一测试项进行单独测试
对于CPU的SPEC测试,默认这一项是all,但是对于其中的某一项测试分数不满意,可通过指定此测试项的编号,进行单独测试。测试也会得到一个分数,做单项的性能调优时候,可以用得到。


4)输出格式:-o text,screen,pdf

表示测试完成,生成报告的格式,依次分别是txt,屏幕显示和pdf格式,保存目录在spec解压目录result中。


5)noreportable && reportable :

表示检测/不检测生成的二进制文件是否修改过。
–reportable 如果原来生成的二进制文件被修改了,则运行时会自动重新编译生成二进制文件,确保运行的程序是原始的程序。


6)测试核数:-r 设置测试的CPU核心数目;


7)测试模式:-tune = base 基准测试;-tune = peak 峰值测试;-tune默认是base 可以选择base, peak, or all ,Report 首先是base,其次是peak.


8)-I : 表示测试中,如遇报错,略过错误继续测试;

注意测试前清空缓存:
 

echo 3 > /proc/sys/vm/drop_caches //清理缓存

这篇关于SPEC2006学习使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/317036

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi