searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

speccpu性能测试方法

2025-12-15 09:29:37
2
0

测试指标

测试类型 评估目标 并行规则 适用场景
SPECspeed 单任务完成时间(时间越短越好) 允许OpenMP或编译器自动并行优化(如 -fopenmp 单核性能、高频敏感型应用(游戏/实时计算)
SPECrate 单位时间完成任务量(值越高越好) 禁止任何并行优化,仅通过多副本(Copies)实现多核负载 服务器/工作站多核吞吐能力

 

测试类型 得分计算逻辑 得分意义 是否越大越好
SPECspeed 参考时间 / 实测时间 单任务完成效率(时间越短得分越高) ✅ 
SPECrate 任务量 × 副本数 / 实测时间 多核吞吐能力(单位时间处理量) ✅ 

测试模式

维度 base(基准模式)   peak(峰值模式)  
优化强度 标准优化,禁用硬件/编译器私有扩展 激进优化,允许厂商定制指令集(如AVX-512)
编译规则 严格统一:同语言测试需完全相同的编译选项与顺序 灵活定制:可为每个测试单独优化编译参数
验证要求 必须通过结果验证(否则成绩无效) 允许部分测试未通过验证
报告优先级 官方认证必备(如SPECint_base2017) 可选补充(如SPECint2017)

关键区别([网页1][网页3][网页4]):

  • base 确保跨平台公平对比,代表通用性能水平;

  • peak 挖掘硬件极限性能,但可能牺牲兼容性(如依赖特定编译器版本)。

安装方法

Installing on Unix - CPU 2017

tar -xvf cpu2017.tar.gz
cd cpu2017
./install.sh -d /opt/cpu2017  # 指定安装目录

工具版本:

 speccpu2017-1.1.5

测试脚本

n_cpu=$(nproc)
basedir=${1:-/opt/speccpu2017}
iterations=${2:-1}
rate=${3:-"intrate fprate"}
speed=${4:-""}
peak=${5:-"false"}

arch=$(uname -m)
[ "$arch" == "x86_64" ] && arch=x86
c_f=$basedir/config/ctyunos-gcc-linux-${arch}.cfg

# Cleanup and copy configuration file
[ -f $c_f ] && rm -rf $c_f
cp $basedir/config/Example-gcc-linux-${arch}.cfg $c_f

# Modify configuration file
sed -i 's#^%   define  gcc_dir .*#%   define  gcc_dir        "/usr"#g' $c_f
sed -i 's/^%   define label .*/%   define label "ctyunostest"/g' $c_f
if [ "$(gcc --version | head -n 1 | cut -d ' ' -f 3 | cut -d '.' -f 1)" -ge 10 ]; then
    sed -i 's/^#%define GCCge10/%define GCCge10/g' $c_f
fi
# Source environment variables
cd $basedir
source $basedir/shrc

# Run SPEC CPU tests
if [ ! -z "$rate" ]; then
    runcpu --config=ctyunos-gcc-linux-${arch}.cfg --tune=base --copies=$n_cpu --noreportable --iterations=$iterations $rate
    if [ "$peak" == "true" ]; then
        runcpu --config=ctyunos-gcc-linux-${arch}.cfg --tune=peak --copies=$n_cpu --noreportable --iterations=$iterations $rate
    fi
fi
if [ ! -z "$speed" ]; then
    runcpu --config=ctyunos-gcc-linux-${arch}.cfg --tune=base --threads=$n_cpu --noreportable --iterations=$iterations $speed >
fi
    if [ "$peak" == "true" ]; then
        runcpu --config=ctyunos-gcc-linux-${arch}.cfg --tune=peak --threads=$n_cpu --noreportable --iterations=$iterations $rate
    fi
#result
grep -E "SPEC(speed|rate)\(R\)" $basedir/result/*.txt |grep -v "Not Run" |sed 's/Est.//g'|awk '{print $2,$3}'
0条评论
作者已关闭评论
高淑杰
5文章数
0粉丝数
高淑杰
5 文章 | 0 粉丝
高淑杰
5文章数
0粉丝数
高淑杰
5 文章 | 0 粉丝
原创

speccpu性能测试方法

2025-12-15 09:29:37
2
0

测试指标

测试类型 评估目标 并行规则 适用场景
SPECspeed 单任务完成时间(时间越短越好) 允许OpenMP或编译器自动并行优化(如 -fopenmp 单核性能、高频敏感型应用(游戏/实时计算)
SPECrate 单位时间完成任务量(值越高越好) 禁止任何并行优化,仅通过多副本(Copies)实现多核负载 服务器/工作站多核吞吐能力

 

测试类型 得分计算逻辑 得分意义 是否越大越好
SPECspeed 参考时间 / 实测时间 单任务完成效率(时间越短得分越高) ✅ 
SPECrate 任务量 × 副本数 / 实测时间 多核吞吐能力(单位时间处理量) ✅ 

测试模式

维度 base(基准模式)   peak(峰值模式)  
优化强度 标准优化,禁用硬件/编译器私有扩展 激进优化,允许厂商定制指令集(如AVX-512)
编译规则 严格统一:同语言测试需完全相同的编译选项与顺序 灵活定制:可为每个测试单独优化编译参数
验证要求 必须通过结果验证(否则成绩无效) 允许部分测试未通过验证
报告优先级 官方认证必备(如SPECint_base2017) 可选补充(如SPECint2017)

关键区别([网页1][网页3][网页4]):

  • base 确保跨平台公平对比,代表通用性能水平;

  • peak 挖掘硬件极限性能,但可能牺牲兼容性(如依赖特定编译器版本)。

安装方法

Installing on Unix - CPU 2017

tar -xvf cpu2017.tar.gz
cd cpu2017
./install.sh -d /opt/cpu2017  # 指定安装目录

工具版本:

 speccpu2017-1.1.5

测试脚本

n_cpu=$(nproc)
basedir=${1:-/opt/speccpu2017}
iterations=${2:-1}
rate=${3:-"intrate fprate"}
speed=${4:-""}
peak=${5:-"false"}

arch=$(uname -m)
[ "$arch" == "x86_64" ] && arch=x86
c_f=$basedir/config/ctyunos-gcc-linux-${arch}.cfg

# Cleanup and copy configuration file
[ -f $c_f ] && rm -rf $c_f
cp $basedir/config/Example-gcc-linux-${arch}.cfg $c_f

# Modify configuration file
sed -i 's#^%   define  gcc_dir .*#%   define  gcc_dir        "/usr"#g' $c_f
sed -i 's/^%   define label .*/%   define label "ctyunostest"/g' $c_f
if [ "$(gcc --version | head -n 1 | cut -d ' ' -f 3 | cut -d '.' -f 1)" -ge 10 ]; then
    sed -i 's/^#%define GCCge10/%define GCCge10/g' $c_f
fi
# Source environment variables
cd $basedir
source $basedir/shrc

# Run SPEC CPU tests
if [ ! -z "$rate" ]; then
    runcpu --config=ctyunos-gcc-linux-${arch}.cfg --tune=base --copies=$n_cpu --noreportable --iterations=$iterations $rate
    if [ "$peak" == "true" ]; then
        runcpu --config=ctyunos-gcc-linux-${arch}.cfg --tune=peak --copies=$n_cpu --noreportable --iterations=$iterations $rate
    fi
fi
if [ ! -z "$speed" ]; then
    runcpu --config=ctyunos-gcc-linux-${arch}.cfg --tune=base --threads=$n_cpu --noreportable --iterations=$iterations $speed >
fi
    if [ "$peak" == "true" ]; then
        runcpu --config=ctyunos-gcc-linux-${arch}.cfg --tune=peak --threads=$n_cpu --noreportable --iterations=$iterations $rate
    fi
#result
grep -E "SPEC(speed|rate)\(R\)" $basedir/result/*.txt |grep -v "Not Run" |sed 's/Est.//g'|awk '{print $2,$3}'
文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0