tracer_nvbit工具
路径accel-sim-framework/util/tracer_nvbit
Makefile中编译了trace生成的工具,类似于intel pin中的pintool
关键脚本run_hw_trace.py
目录说明
gpu-app-collection项目,里面有多个文件夹(bin、data_dirs、src,app-specific-gpgpu-sim-options),还有很多脚本。
run_hw_trace.py会运行指定的benchmark suit(如rodinia),然后将各个banchmark的输出文件存放在hw_run/traces
中。
每个benchmark suit中有多个workload(例如rodinia的backprop-rodinia-2.0-ft、lud-rodinia-2.0-ft等等)。
以backprop为例,backprop-rodinia-2.0-ft文件夹下面有多个文件
其中一个是traces文件夹,里面存放的就是它的trace文件。该trace文件夹下包含3个文件,其中.trace文件是最原始的trace文件,它在批处理之后就被删除了,取而代之的是.traceg文件;kernelslist文件类似,会在批处理后变成kernelslist.g文件。
1- kernel traces files with .trace extension (one file per kernel), e.g. kernel-1.trace, kernel-2.trace, etc.
2- kernelslist (one file), this contains the kernel files list that have been traced along with the CUDA memcpy commands
3- stats.csv (one file), this contains the statistcs of the kernels, e.g. how many kernels traced, traced intructions, etc.
backprop-rodinia-2.0-ft文件夹有一个run.sh,里面设置了多个环境变量(CUDA_VERSION、CUDA_VISIBLE_DEVICES、TRACES_FOLDER、CUDA_INJECTION64_PATH),然后,运行post-traces-processing对trace文件进行了预处理,生成.traceg文件,还会生成一个kernelslist.g文件。
run.sh内容
1、设置环境变量
2、运行预处理程序
3、删除原始的.trace和kernelslist文件
ps:run.sh是run_hw_trace.py自动生成的
trace格式(https://github.com/accel-sim/accel-sim-framework/blob/release/util/tracer_nvbit/README.md):
traces format = threadblock_x threadblock_y threadblock_z warpid_tb PC mask dest_num [reg_dests] opcode src_num [reg_srcs] mem_width [adrrescompress?] [mem_addresses]
中括号的是可选的,
run_hw_trace.py
代码引入了common库(accel-sim-framework/util/job_launching/common.py
)
common.load_defined_yamls函数,该函数加载了一个define-all-apps.yml
文件(accel-sim-framework/util/job_launching/apps/define-all-apps.yml
)。
define-all-apps.yml
文件中定义了各个benchmark的可执行文件路径、数据路径、运行参数以及mem大小等等。模板如下:
execs:
- <exec_name_1>:
- args: <commandline arg_list 1> # Leave blank if no arguments
<optional> accel-sim-mem: <xG>
- args: <commandline arg_list 2>
...
- <exec_name_2>
...
...
# If you have a bunch of random benchmarks in random places, then a "suite" can be just one benchmark
accel-sim.out
该文件为最终的目标文件,根据makefile,它建立在trace-driven、trace-parser、gpgpu-sim、makedirs、$(BUILD_DIR)/main.o、version等目标文件的基础上。
util/job_launching文件夹
run_simulations.py文件
这个文件是运行accel-sim的脚本文件
1、里面有两个变量:options.simulator_dir和running_sim_dir。其中:
- simulator_dir为为gpgpusim的路径,路径为./accel-sim-framework/gpu-simulator/bin/release/accel-sim.out;
- running_sim_dir变量为accel-sim.out的副本的路径,路径为“./accel-sim-framework/sim_run_11.0/gpgpu-sim-builds”+版本号
2、options.launcher不知道是什么变量
3、有一个循环,通过调用config.run
函数配置各个benchamark
4、注释里的Torque应该是一个调度程序。
Torque是一个开源的PBS作业调度应用软件,被广泛应用于高性能服务集群中实 现作业的调度管理
config.run
get_stats.py
文件:accel-sim-framework/util/job_launching/get_stats.py
该文件好像是在对结果进行统计,其中./stats/example_stats.yml
是默认的配置文件,该配置文件定义了我们需要统计的信息。
accel-sim-framework/util/plotting/correl_mappings.py
文件中定义了各个统计信息的名字映射。