SPEC CPU2017的runcpu命令使用

devtools/2024/12/23 1:13:28/

1. 基本语法

runcpu [options] [benchmark_list]

  • options: 可选参数,用于控制测试的运行方式、输出格式、配置文件等。
  • benchmark_list: 可以是单个基准测试名称或一组基准测试,如 500.perlbench_rall(表示运行所有基准测试)。例如,
    单独运行 500.perlbench_r
    runcpu 500.perlbench_r
    可以使用通配符或组名来一次运行多个基准测试。例如,运行所有C++基准:
    runcpu CXX
    可以运行所有基准:
    runcpu all

2. 常用选项

  • --config=<filename>:指定配置文件,例如 --config=myconfig.cfg。配置文件定义了编译器设置、优化级别、系统设置等参数,通常位于 config/ 目录下。
  • --tune=<base|peak|all>:选择基准测试的优化模式。优化模式可以是:1、base: 标准优化模式,严格遵守优化规则。2、peak: 更加激进的优化设置。3、all: 同时执行 basepeak 优化。
  • --size=<test|train|ref>:选择基准测试数据集的大小,test使用小型测试数据集(用于快速运行和验证),train使用中等规模的数据集(通常用于调试),ref使用完整的参考数据集(用于正式性能测量)。
  • --reportable:生成符合报告要求的测试结果。此选项用于生成正式的基准测试报告(不能与调试、测试等模式混用)。
  • --action=run:运行指定的基准测试。其他可能的操作包括:1、build:仅编译基准测试,而不执行。2、validate:仅验证基准测试结果是否符合规范。3、clean:清理测试生成的文件。4、setup:为指定的基准测试准备运行环境,但不执行测试。
  • --iterations=<n>:指定基准测试的重复运行次数(默认是 3 次)。增大迭代次数可以提高测试结果的精度。
  • --threads=<n>:为并行基准测试指定线程数(用于 SPECrate 测试)。如果未指定,测试将默认使用系统的核心数。
  • --copies=<n>:为并行基准测试指定并发执行的副本数(多副本模式下每个副本运行一个基准测试)。常用于多核系统的吞吐量测试。
  • --output=filename:指定输出文件名称。默认情况下,输出会保存在result(结果)目录中。
  • --rawformat=format:指定输出的格式。常用的格式包括:1、text:生成文本报告。2、html:生成 HTML 格式的报告。3、pdf:生成 PDF 格式的报告。
  • --loose:允许某些调优选项不符合标准规范。例如,可能允许在 base 调优模式下使用一些 peak 模式的选项。
  • --rebuild:强制重新编译所有基准测试。即使已有编译结果,也会重新编译。
  • --deletework:运行测试后删除临时工作目录。这有助于节省磁盘空间。
  • --setprocgroup:为每个副本/线程分配到单独的 CPU 处理组。这有助于多核处理器环境中优化资源使用。
  • --validonly:仅执行结果验证,而不重新运行基准测试。通常用于对现有结果进行合规性检查。
  • --noaltconfig:禁止使用配置文件中的 altconfig选项。
  • --verbose:启用详细输出,显示更多运行时信息。
  • --logfile=<filename>:将输出日志保存到指定文件中。
  • --feedback:在编译和运行之间使用反馈机制(如果配置文件支持)。
  • --debug:启用调试模式,输出额外的调试信息。这对排查错误或了解运行细节非常有用。

3. 结果查看与处理

特别注意,--reportable--output 是两个不同的参数,它们的作用和用途是不同的:

3.1 --reportable 参数

--reportable 参数用于生成符合 SPEC 基准测试提交标准 的结果报告。它的主要功能是确保测试结果符合SPEC的规范,可以正式提交给SPEC进行认证和审核。

  • 当使用 --reportable 运行基准测试时,系统会强制遵循一些规定,如使用参考数据集(ref)、标准的配置文件、没有超出允许范围的优化选项等。
  • --reportable 的目的是生成正式的、可报告的结果,这些结果可以被用来进行系统性能的对比和发布。
  • 不指定输出文件--reportable 本身不会指定输出文件的位置,它生成的报告会存放在默认的结果目录(通常是 result/ 目录)中。
3.2 --output 参数

--output 参数用于指定测试结果文件的 输出文件名 和路径。

  • 这个参数允许用户自定义保存测试结果的文件名和位置。例如,如果用户想将结果保存到特定的文件或特定的目录,可以使用 --output
  • --output 的结果可以是报告的多种格式(文本、HTML、PDF、CSV 等),具体格式取决于是否与其他参数一起使用,如 --rawformat
  • --output 参数不强制遵循 SPEC 的提交规则,它仅用于控制结果文件的保存和命名,而不改变测试的严格性或规范性。
3.3 区别与用途
  • --reportable 控制的是测试的 合规性 和生成报告的 严格性,用于确保结果可以提交给SPEC。
  • --output 控制的是测试结果的 文件存储位置和名称,用于灵活地管理输出文件。
    这两个参数可以 同时使用,当用户需要生成符合提交标准的报告并且想要自定义输出文件的路径时,可以如下组合,生成一份符合 SPEC 提交要求 的报告,并将其保存为 my_report.txt 文件。
    runcpu --reportable --config=myconfig.cfg --tune=base --size=ref --output=my_report.txt all
3.4 基准测试结果查看、导出和分析
3.4.1 导出结果

导出结果时,用户可以选择多种格式,例如PDF、CSV等,以便进行进一步的分析或分享。
(1) 导出为PDF格式文件
要将结果导出为PDF文件,可以使用 runcpu 命令结合 --rawformat 选项:
runcpu --reportable --rawformat=pdf --output=myresults.pdf
此命令生成的PDF文件将包含最近一次运行的基准测试结果报告。

(2) 导出为CSV格式文件
对于需要进一步数据分析的情况,可以将结果导出为CSV格式,以便导入到数据分析工具中:
runcpu --reportable --rawformat=csv --output=myresults.csv
CSV文件中的数据可以用Excel、Python或其他工具进行详细分析。

3.4.2 查看结果

SPEC CPU2017运行完基准测试后,自动生成的结果会存储在指定的目录中。查看这些结果有多种方式:
(1) 结果目录
测试结果通常存储在安装目录的 result/ 子目录中。每次测试运行都会生成一个新的结果文件夹,文件夹名称通常以时间戳和测试配置命名。例如:
/path/to/cpu2017/result/cpu2017.004.refspeed2024-09-05-12-30-45/

(2) 查看HTML或文本报告

  • HTML文件:可以在浏览器中查看,包含完整的测试结果和图表。打开路径中的 .html 文件即可:
    firefox /path/to/cpu2017/result/cpu2017.004.refspeed2024-09-05-12-30-45.html
  • 文本文件:用 cat 或其他文本编辑工具查看 .txt 文件中的结果:
    cat /path/to/cpu2017/result/cpu2017.004.refspeed2024-09-05-12-30-45.txt

(3) 使用 runcpu 查看结果
用户也可以通过命令行工具 runcpu 直接查看上一次运行的测试结果:
runcpu --reportable last
此命令会显示上一次基准测试运行的详细报告,包含性能分数和相关数据。

3.4.3 深入分析和自定义报告

用户可以根据需要定制输出格式,或生成更详细的报告:
(1) 自定义输出格式
SPEC CPU2017提供了自定义输出格式的选项。通过修改配置文件或使用命令行参数,用户可以定义特定的报告格式。详见SPEC CPU2017的官方文档或 runcpu --help

(2) 反馈机制
通过 --feedback 选项,用户可以在编译和运行之间使用反馈机制,以优化运行。例如:
runcpu --feedback all
该选项可以生成包含反馈优化的结果,用于更深入的性能调优分析。

3.4.4 比较不同测试的结果

比较多次运行的结果是分析性能趋势和验证系统一致性的重要步骤。用户可以手动比较结果目录中的数据,或者编写脚本自动化比较过程。
(1) 手动比较
查看每个测试的结果文件(如 .txt.html),对比不同运行的性能分数、时间和资源消耗。
(2) 自动比较
使用脚本或工具对比多个结果文件中的关键指标,如SPECspeed和SPECrate分数。这样可以方便地生成趋势图或汇总报告。

3.4.5 归档结果

为了长期保存和管理基准测试结果,建议将结果文件打包归档。可以使用以下命令将结果目录打包为压缩文件:
tar -czvf spec_results_backup.tar.gz /path/to/cpu2017/result/
这样会生成一个包含所有结果的压缩文件 spec_results_backup.tar.gz,便于日后参考或恢复。

4. 使用示例

以下是一些常见的使用示例:

示例 1:仅编译基准测试而不运行

runcpu --action=build all
此命令只编译所有基准测试,但不实际运行。

示例 2:运行所有基准测试并使用指定配置

runcpu --config=myconfig.cfg --tune=base --size=ref all
此命令运行使用myconfig.cfg 配置文件,运行所有基准测试,使用标准(base)优化模式和参考数据集(ref)。

示例 3:运行单个基准

runcpu --config=myconfig.cfg --tune=base 500.perlbench_r
此命令使用 myconfig.cfg 配置文件,在 base 模式下运行 500.perlbench_r 基准测试。

示例 4:运行单个基准测试并指定输出结果格式

runcpu --config=myconfig.cfg --tune=peak --size=ref --rawformat=csv --output=result.csv 500.perlbench_r
此命令运行 500.perlbench_r 基准测试,使用峰值(peak)优化,并导出结果为CSV格式。

示例 5:并行运行多个副本

runcpu --config=myconfig.cfg --tune=base --size=ref --copies=4 all
此命令使用 myconfig.cfg 配置文件,运行所有基准测试,使用 base 模式、参考数据集,并同时运行4个副本。

示例 6:多线程和多副本运行

runcpu --config=myconfig.cfg --tune=base --threads=8 --copies=4 all
此命令在 8 个线程和 4 个副本的情况下运行所有基准测试。

示例 7:生成报告

runcpu --reportable --config=myconfig.cfg --tune=base --size=ref all
此命令生成一个可报告的结果,符合 SPEC 提交要求。

示例 8:查看最近运行的结果

runcpu --reportable last
此命令查看最近一次测试运行的结果报告。

5. 总结

通过上述步骤,用户可以高效地查看、导出和分析SPEC CPU2017的基准测试结果,包括:

  • 深入分析:利用自定义输出格式和反馈机制,生成详细报告和优化结果。
  • 比较结果:手动或自动化比较多次运行的结果,分析性能趋势。
  • 归档结果:打包并保存结果文件,方便日后查阅和管理。
    从而深入了解系统性能并进行优化,具体来说,
  • runcpu 是SPEC CPU2017的核心工具,用于运行基准测试和生成报告。
  • 可以通过 --config--tune--size 等参数来控制测试的配置和数据集。
  • 可以通过调整 --threads--copies 等并发选项,可以优化并行基准测试的性能。
  • 可以通过 --reportable--output 等选项导出为不同的格式,具体地,--reportable 用于生成正式、可提交的报告,--output 用于指定测试结果文件的保存路径和文件名。用户可以同时使用这两个参数,确保报告符合提交标准的同时,灵活管理输出文件的命名和位置。
  • 可以使用 --rawformat 将结果设置导出为PDF、CSV等的具体格式,以便分析或分享。
  • 可以通过结果目录中的HTML或文本文件,或使用 runcpu --reportable 查看上次运行结果。

官方参考资料https://www.spec.org/cpu2017/Docs/runcpu.html


http://www.ppmy.cn/devtools/107708.html

相关文章

【区块链 + 供应链】基于区块链的数字化供应链管理系统平台 | FISCO BCOS应用案例

数字化供应链管理系统平台基于 FISCO BCOS 底层技术研发&#xff0c;利用区块链多中心化、不可篡改、高安全性的技术特征&#xff0c;可实现资产上链、多中心化份额登记、业务规则智能化管理等&#xff0c;真正打通核心企业、中小企业与银行间的 信息壁垒&#xff0c;解决传统模…

HTML5好看的花店商城源码2

文章目录 1.设计来源1.1 主界面1.2 界面效果11.3 界面效果21.4 界面效果31.5 界面效果41.6 界面效果51.7 界面效果61.8 界面效果71.9 界面效果8 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#…

c++ +Opencv实现车牌自动识别

c Opencv实现车牌自动识别 1. 图像预处理 2. 车牌定位 3. 字符分割 4. 字符识别 完整流程概述&#xff1a; &#x1f388;边走、边悟&#x1f388;迟早会好 要用C和OpenCV实现车牌自动识别&#xff0c;主要流程分为几个步骤&#xff1a; 图像预处理&#xff1a;提高车牌…

Qt获取当前系统时间、系统时间戳

Qt获取当前系统时间、系统时间戳 一、获取当前系统时间二、获取系统时间戳三、QDateTime和QTime的其他知识点3.1. QDateTime3.2. QTime3.3. Qt时区处理3.4. Qt日期格式3.5. Qt时间间隔3.6. Qt闹钟和定时器在Qt框架中,获取当前系统时间和系统时间戳是一项常见的任务,通常可以通…

HBase 源码阅读(一)

1. HMaster main方法 在上文中Macos M1 IDEA本地调试 HBase 2.2.2&#xff0c;我们使用HMaster的主函数 使用"start"作为入参&#xff0c;启动了HMaster进程 这里我们再深入了解下HMaster的运行机理 public static void main(String [] args) {LOG.info("STAR…

在 Linux 和类 Unix 系统中,终端(Terminal)和 Shell

在 Linux 和类 Unix 系统中&#xff0c;终端&#xff08;Terminal&#xff09;和 Shell 是两个相关但不同的概念。以下是它们的定义和关系&#xff1a; 1. 终端&#xff08;Terminal&#xff09; 终端 是一个用于与计算机交互的用户界面。它可以是一个物理设备&#xff08;如…

SQL通用语法、SQL分类以及DDL

1.SQL 1.1SQL通用语法 1.SQL语句可以单行或多行书写&#xff0c;以分号结尾2.SQL语句可以使用空格/缩进来增强语句的可读性。3.MySQL数据库的SQL语句不区分大小写&#xff0c;关键字建议使用大写。4.注释&#xff1a; 单行注释&#xff1a;–空格 注释内容或#注释内容&#…

uniapp项目(vue3)修改小程序头像,并上传图片到oss(华为云)

文章目录 概要实现流程实现代码示例 概要 项目使用uniapp开发小程序&#xff0c;需要实现切换头像功能&#xff0c;需要支持使用微信头像和手机相册选择头像。由于小程序用户头像昵称获取规则调整&#xff0c;所以使用微信提供的头像昵称填写能力来实现头像切换功能 提示&…