61 Star 52 Fork 21

PerfBenchmark / GCBS-GPU

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
config.md 10.71 KB
一键复制 编辑 原始数据 按行查看 历史
赵烨 提交于 2023-03-30 08:41 . !9add skip_verify in config.ini

配置文件使用指南

配置文件定义了环境信息、编译构建、运行、日志级别等一系列配置项,是GCBS与测试环境的重要交互方式。基于相同的软硬件环境和GCBS工具版本,用户使用相同的配置文件可稳定复现基本一致的测试结果。

配置文件是ini格式的文件,遵循业界通用的ini文件语法。您可以定制您的配置文件,并通过以下两种方式来指定它: 1、 通过--config-f来指定配置文件的绝对路径; 2、 将配置文件放在config目录中,并通过--config-f来指定文件名,文件后缀可以省略;

若未指定配置文件,GCBS将使用默认配置文件config_sample.ini

如果您还不知道如何编写配置文件,可以根据config目录中的默认配置文件config_sample.ini做修改,下面是您可能感兴趣的与配置文件相关的说明。

配置文件语法规则

1、大小写敏感;

2、注释以#或;开头,注释不会被视为配置项;

3、缩进代表本行内容为前一个配置项的值,如:

hardware_others = Hyper Threading: Enable
                  Turbo: Enable
software_others = None

此时GCBS读取解析后内存中hardware_others的值为:

Hyper Threading: Enable\nTurbo: Enable

配置选项类型

配置文件提供的配置项有四种类型。 1、 通用配置项 配置文件提供了与命令行相似的通用配置项,可以有效降低命令行的复杂度。如在配置文件中定义:

action = standard
test_target = ServerSuite
copies = 10
report = pdf

那么以下两条命令行指令完全一致:

python3 gcbs.py
python3 gcbs.py --action=standard --test_target=ServerSuite --copies=10 --report=pdf

命令行优先级高于ini配置文件,若相同的配置项既出现在命令行又出现在配置文件,以命令行为主。

2、 测试和环境信息 配置文件支持描述配置项,补充描述被测计算机的软硬件环境系统,方便用户理解被测计算机产品信息,比如网卡、显卡的型号,GCBS工具获取不到或采集的型号不准确,用户可通过配置文件纠正配置信息。

3、 编译选项 配置文件提供配置项控制workload的编译行为。

4、 JAVA运行参数 配置文件提供配置项以方便用户进行JVM调优。

详情参阅 “配置项” 章节。

配置文件结构

配置文件分为两个部分: 1、 general区 在命名区之前,通常用于定义本次运行的一些通用配置。如:

[general]
action = standard		
test_target = ServerSuite
iterations = 1	
copies = 1   		
multithread = 1		
report = all		 
output_dir = output_dir 
skip_fail = 0
skip_verify = 1
taskset = 0-3  
#=============================Debug Options==================================
debug = 0  

2、 命名区 命名区以一个区域标识行打头,如:

[ServerSuite.MemSuite]
CC = ${base_dir}/gcc
CC_VERSION = -v
CFLAGS = -Ofast

需要注意的是,多个命名区可能有相同的配置项,此时需要应用优先级规则来决定配置项的取值。优先级规则参阅“命名区”小节

命名区

命名区以区域标识行打头,延续到下一个标识行。配置文件支持多个命名区,它们的顺序不会影响配置项的最终值。如果区域标识行有重复,它们标识的命名区内容会自动合并。 区域标识行的格式如下:

[compiler] 或者 [suite] 或者 [workload]

其中compiler为固定区域标识,代表默认的编译构建选项;

命名区标识可限制作用于某个测试套件或者某个workload,示例如下:

假设ServerSuite包括CPUSuite, MemSuite, CPUSuite包括scimarkpy_fft, MemSuite包括stream_single, stream_omp。
benchmark标识行可以为:
[ServerSuite]                      # 作用于ServerSuite下的所有子测试套件
[ServerSuite.CPUSuite]             # 仅作用于ServerSuite下的CPUSuite子套件
[ServerSuite.MemSuite.stream]      # 仅作用于ServerSuite.MemSuite下stream前缀的测试负载,包括stream_single和stream_omp
[ServerSuite.MemSuite.stream_omp]  # 仅作用于ServerSuite.MemSuite下stream_omp负载

命名区优先级规则

配置文件通过优先级规则来组织命名区的区域合并、冲突。

1、workload或suite的标识符优先级高于compiler固定标识符;

2、对suite和workload标识符,优先级如下:

高优先级    具体workload > 子套件sub-suite > 父套件suite     低优先级

例如:

[compiler]
CC = ${base_dir}/gcc
CC_VERSION = -v
CFLAGS = -Ofast

[ServerSuite]
CFLAGS = -O3

[ServerSuite.FileIOSuite]
CFLAGS = -O2

[ServerSuite.FileIOSuite.fio]
CFLAGS = -O0

python3 gcbs.py -t DesktopSuite --mode Desktop
python3 gcbs.py -t ServerSuite --mode Server

执行结果:
1、DesktopSuite中所有负载采用-Ofast编译;
2、ServerSuite中FileIOSuite以外测试套的负载采用-O3编译;
3、FileIOSuite中fio以外负载采用-O2编译,fio采用-O0编译。

配置项

通用配置项

Option Default Area Explain
action standard general 指定本次工具的活动。
test_target [] general 指定本次运行的suite或workload。
iterations 1 general 要运行的迭代次数。
copies 1 general 指定运行副本数;默认为1,即单核运行;如果设为cpu最大核数,即满核运行。
multithread 1 general 指定运行并发线程数。
report ['all'] general 指定本次运行输出的报告类型。
output_dir output_dir general 设置工作目录,负载运行数据和测试结果报告都会存放到该路径下。
skip_fail 0 general 值为1时,负载运行失败不退出程序。
skip_verify 0 general 值为1时,程序跳过hash认证。
taskset [] general 绑核列表,由逗号分隔的一系列cpu核号构成,同时支持通过-分隔符来标识一个编号范围,如1-5等价于1,2,3,4,5。 当该列表长度大于copies时,只会选前copies的cpu核进行绑定,若小于copies,则会在超出列表长度时,从列表头重新绑定。
debug 0 general 值为1时,开启debug模式。

测试和环境信息

Option Default Area Explain
manufacturer "" general 硬件制造商。
product_model "" general 产品型号。
cpu_model "" general CPU型号。
netcards "" general 网卡信息。
raid "" general raid卡信息。
display_cards "" general 显卡信息。
os "" general 操作系统名称和版本。
tester_name "" general 测试者名称。
test_data "" general 测试时间。
software_others "" general 其他软件相关信息。
hardware_others "" general 其他硬件相关信息。

编译选项

Option Default Area Explain
LD_LIBRARY_PATH "" compiler 动态链接库搜索路径设置。
CC /usr/bin/gcc compiler 如何调用C编译器。
CC_VERSION -v compiler 如何获取C编译器版本。
CFLAGS "" compiler 既不是优化也不是可移植性的C语言编译标志。
CXX /usr/bin/g++ compiler 如何调用C++编译器。
CXX_VERSION -v compiler 如何获取C++编译器版本。
CXXFLAGS "" compiler 既不是优化也不是可移植性的C++语言编译标志。
CLD "" compiler 在编译C语言的程序时,如何调用链接器。
CXXLD "" compiler 在编译C++语言的程序时,如何调用链接器。
CLD_FLAGS "" compiler 适用所有C Workload使用的链接标志。
CXXLD_FLAGS "" compiler 适用所有CXX Workload使用的链接标志。
LD_FLAGS "" compiler 适用所有模块时使用的链接标志。
LIBS "" compiler 指定链接库选项。
AR ar compiler 应用于创建静态库,但是启用特殊选项(如:LTO)时,需要编译器自带AR工具(如:gcc-ar)。
RANLIB ranlib compiler 应用于静态库建立索引,以便编译器加速查找符号表。启用特殊选项(如:LTO)时,需要使用编译器自带RANLIB工具(如:gcc-ranlib)。

JAVA运行参数

Option Default Area Explain
java_options "" compiler 传递给JVM的调优参数。
C
1
https://gitee.com/perfbenchmark/gcbs-gpu.git
git@gitee.com:perfbenchmark/gcbs-gpu.git
perfbenchmark
gcbs-gpu
GCBS-GPU
master

搜索帮助