安装步骤

# Ubuntu16.04
# 注意安装gFortran
. ./install.sh
. ./shrc

一般情况下经过以上步骤即可安装完毕,进行使用,注意需要执行shrc设置完环境变量以后才可正常执行后续的各种操作。

此外SPEC官方并不建议使用root权限,因为所有的测试集并不需要修改系统文件。

常用命令

runspec int --noreportable --n=1 --size=test

  • 正式运行SPEC2006之前需要跑一下test尺寸,test尺寸比较小,因此跑起来耗时教短,可用于确保所有测试集都可正常编译运行。
  • int:表明这是整数测试集,这个参数也可用fp,all代替,分表表示只使用浮点测试集和所有测试集。
  • –noreportable 不生成报告 --reportable生成报告,若开启将会生成诸如html,pdf等格式的报告。
  • –n=1:表示只跑一轮,每个测试集只会跑一遍。若要生成报告,则至少跑3轮
  • –size=test:表示这次只跑少量集合,用于测试所有集合是否都已经编译执行正确

runspec int --reportable --size=ref -I

  • -I 表示跑benchmark的适合忽略错误,如果中途出错也不会停下来。
  • 如果没有指定rate和copies则为测试speed,speed只能测试单核性能。
  • 若想测试多核性能,则可通过 --rate=128进行指定,这里讲使用128个线程。
  • rate和speed指标的区别请看
    Q15. What is the difference between a “rate” and a “speed” metric?

如何检测自己的电脑是多少核心的呢?

  • 逻辑CPU核心数(包括超线程技术):
cat /proc/cpuinfo |grep "processor"|sort -u|wc -l
  • 物理CPU个数:
grep "physical id" /proc/cpuinfo|sort -u|wc -l 
或者
grep "physical id" /proc/cpuinfo|sort -u 
  • 每个物理CPU上的真实内核个数:
grep "cpu cores" /proc/cpuinfo|uniq
  • 每个物理CPU上逻辑内核个数:
grep "siblings" /proc/cpuinfo|uniq
  • 若每个核心上的逻辑内核比真实内核多,则说明开启了超线程技术
  • 来源Linux读取CPU信息

runspec 481 --noreportable --n=1

  • 有时候为了修复编译错误,可以让他单独跑481这一项

runspec -c xxx.cfg

  • -c用于指定配置文件,如果没有指定,则默认使用根目录的config文件夹下的default.cfg作为配置文件

常见错误

gcc5.x如何跑SPEC2006

  • 在无法通过的测试集的gcc编译选项上加 --std=gnu89

缺少库文件

  • 在gcc的编译选项上加 -include /usr/include/memory.h include 后面的路径需要换成自己的,这里只是举个例子

447.dealII 遇到 error: ‘ptrdiff_t’ does not name a type

  • linux下需要引入 头文件,使用上述方法在config文件中找到447.dealII的配置在CXXPORTABILITY后面加上 -include cstddef -include cstdlib -include cstring
  • 进入的头文件若是系统库,则不需要具体路径

spec2006 fp test failed with 416.gamess and 481.wrf

  • 416 miscompare 问题是gcc旧版本的bug,当开启O2优化的适合会出错
  • 升级新版本gcc或者用-O0进行编译或者换一个编译器
  • 483 end of file 问题,我是通过把配置文件中的wrf_data_header_size=8注释掉解决的

如果不幸需要自己编译工具链,可能会遇到更多奇怪的问题

Specmd5sum multiple definition of `getline’

  • Specmd5sum文件夹中的库文件跟系统库文件的函数冲突了,打开md5sum.c,注释掉#include "getline.h"

在perl中make时遇到 MAKE: *** NO RULE TO MAKE TARGET ‘<COMMAND-LINE>’

  • 这是因为gcc在高版本中改变了输出,以至于这里没有及时过滤掉,其实只要将makefile(注意不是Makefile)中<command-line>
    的那一行全删掉即可。
  • 这里有个问题是,buildtools每次编译都会将之前生成的东西清空,然后重新生成makefile文件,因此手工删除makefile中的会失败。
  • 于是自己随便在网上找了一段代码用于删除makefile文件中的’<command-line>’
#include <stdio.h>
#include <stdlib.h>
#include <string.h> void Delete(char* filepath, char str[])

{

char buf[4096]; //每读取一行,都将内容放到该数组中

FILE* fp = fopen(filepath, "r"); //filepath里是原内容
FILE* fpt = fopen("temp", "w");    //将filepath文件第n行内容删除后存入temp.txt中 

while(!feof(fp))
{
fgets(buf,sizeof(buf), fp);
if (!strstr(buf,str))
{
fprintf(fpt, "%s", buf);
printf("%s\n",buf);
}
}
fclose(fp);
fclose(fpt); fpt = fopen("temp", "r");
fp = fopen(filepath, "w");
fgets(buf, sizeof(buf), fpt);
while(!feof(fpt))
{
fprintf(fp, "%s", buf);
fgets(buf, sizeof(buf), fpt);
} fclose(fp);
fclose(fpt);

}

void main()

{

Delete("x2p/makefile", "command");

Delete("makefile", "command");

}

  • 将上述代码另存为delete.c,置于工具链中的perl-5.8.7根目录下
  • 并修改buildtools中的shell脚本,如下打加号的部分
    DYLD_LIBRARY_PATH=`pwd`
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH
./Configure -dOes -Ud_flock $PERLFLAGS -Ddosuid=undef -Dprefix=$INSTALLDIR -Dd_bincompat3=undef -A ldflags=-L${INSTALLDIR}/lib -A ccflags=-I${INSTALLDIR}/include -Ui_db -Ui_gdbm -Ui_ndbm -Ui_dbm -Uuse5005threads ; testordie "error configuring perl"
  • gcc -o del delete.c
  • ./del
  • cd x2p
  • $MYMAKE
  • cd ../
  • ./del
$MYMAKE; testordie "error building perl"
./perl installperl; testordie "error installing perl"

Blog:Spec2006

[转帖]SPEC2006的更多相关文章

  1. nginx负载均衡基于ip_hash的session粘帖

    nginx负载均衡基于ip_hash的session粘帖 nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除 ...

  2. [转帖]网络协议封封封之Panabit配置文档

    原帖地址:http://myhat.blog.51cto.com/391263/322378

  3. [转帖]零投入用panabit享受万元流控设备——搭建篇

    原帖地址:http://net.it168.com/a2009/0505/274/000000274918.shtml 你想合理高效的管理内网流量吗?你想针对各个非法网络应用与服务进行合理限制吗?你是 ...

  4. 3d数学总结帖

    3d数学总结帖,以下是对3d学习过程中数学知识的简单总结 角度值和弧度制的互转 Deg2Rad 角度A1转弧度A2 => A2=A1*PI/180 Rad2Deg 弧度A2转换角度A1 => ...

  5. [转帖]The Lambda Calculus for Absolute Dummies (like myself)

    Monday, May 7, 2012 The Lambda Calculus for Absolute Dummies (like myself)   If there is one highly ...

  6. [转帖]FPGA开发工具汇总

    原帖:http://blog.chinaaet.com/yocan/p/5100017074 ----------------------------------------------------- ...

  7. [Android分享] 【转帖】Android ListView的A-Z字母排序和过滤搜索功能

      感谢eoe社区的分享   最近看关于Android实现ListView的功能问题,一直都是小伙伴们关心探讨的Android开发问题之一,今天看到有关ListView实现A-Z字母排序和过滤搜索功能 ...

  8. AxureRP7.0各类交互效果汇总帖(转)

    了便于大家参考,我把这段时间发布分享的所有关于AxureRP7.0的原型做了整理. 以下资源均有对应的RP源文件可以下载. 当然 ,其中有部分是需要通过完成解密游戏[攻略]才能得到下载地址或者下载密码 ...

  9. 未能加载文件或程序集“Newtonsoft.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=30a [问题点数:40分,结帖人u010259408]

    未能加载文件或程序集“Newtonsoft.Json, Version=4.0.0.0, Culture=neutral, PublicKeyToken=30a [问题点数:40分,结帖人u01025 ...

  10. 转帖-[教程] Win7精简教程(简易中度)2016年8月-0day

    [教程] Win7精简教程(简易中度)2016年8月 0day 发表于 2016-8-19 16:08:41  https://www.itsk.com/thread-370260-1-1.html ...

随机推荐

  1. 讲真,你知道Python咋来的吗?

    摘要:什么是Python?它怎么诞生的?它跟C语言.shell语言有什么区别?语言环境是怎么样的?这些你都知道吗? Python诞生在一个圣诞节 Python诞生于1989年的一个圣诞节,其创作者Gu ...

  2. 细说Python Lambda函数的用法,建议收藏!

    摘要:今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 名称是用于引用或寻址任何实体的约定.我们周围的几乎所有事物都有名字.编程领域也与此一致.但这是必须命名的吗?还 ...

  3. Python图像处理丨带你掌握图像几何变换

    摘要:本篇文章主要讲解图像仿射变换和图像透视变换,通过Python调用OpenCV函数实. 本文分享自华为云社区<[Python图像处理] 十二.图像几何变换之图像仿射变换.图像透视变换和图像校 ...

  4. 适合新手的12个Mybatis-Plus常用注解

    摘要:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 本文分享自华为云社区<那些年,我们一起学过 ...

  5. ​Black Hat 2022 聚焦软件供应链安全

    Black Hat 大会被公认为世界信息安全行业最权威大会,也是在全球范围内最具有技术性的信息安全大会.Black Hat USA 聚焦网络安全事件,并且持续向外界输出前沿安全技术研究成果以及行业发展 ...

  6. 火山引擎DataLeap:助力PICO落地数据流程规范,提升开发效率

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   作为目前中国市场领跑的头部XR品牌之一,字节跳动旗下的PICO已经拥有了超百万客户.   过去一年,PICO在 ...

  7. SpringBoot 配置 Swagger

    Profile Config 多环境不同配置 1.添加 Pom 文件 <dependency> <groupId>io.springfox</groupId> &l ...

  8. 【django-vue】主页前端搭建 git介绍和安装 git工作流程 git常用命令 git过滤文件 重写drf方法 跨域中间件 导出项目依赖

    目录 上节回顾 1 主页前端 Header组件 Banner组件 Footer组件 2 git介绍和安装 git和svn比较 pycharm中配置git svn,git ,github,gitee,g ...

  9. ABAP 辨析 标准表|排序表|哈希表

    1.文档介绍 本文档将介绍内表的区别和用法,涉及标准表.排序表.哈希表 2.用法与区别 2.1.内表种类 内表顶层为任意表,任意表分为索引表和哈希表,索引表又可分为标准表和排序表,结构如图: 2.2. ...

  10. 2024-01-17:lc的30. 串联所有单词的子串

    2024-01-17:用go语言,给定一个字符串 s 和一个字符串数组 words. words 中所有字符串 长度相同. s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接 ...