SPEC benchmark inputs in SMT mode
(too old to reply)
2018-10-29 22:48:27 UTC
Hello All,

I am attempting to do some SMT experiments with multiple benchmarks in SE mode, but am having some trouble passing options to the binaries. I have no problem running multiple binaries that take no arguments (hello world), or a single binary with an argument (SPEC gzip). But if I try to pass arguments with the -o (options) flag to multiple binaries, both will run but the second binary does not get its input.

I have tried several iterations of the syntax (quotes, no quotes, etc. ), and also tried passing them with the -i (input) flag.

An example of what I am trying to do:

build/X86/gem5.opt \
configs/example/se.py \
-I 10000000 \
-c ./SPECs/401.bzip2/src/benchmark;./SPECs/429.mcf/src/benchmark \
-o ./SPECs/401.bzip2/data/input.program;./SPECs/429.mcf/data/inp.in \
--cpu-type=DerivO3CPU --l1d_size=64kB --l1i_size=16kB --caches --smt

Based on the contents of se.py, it seems like the -c (options.cmd) flag and the -o (options.options) flag evaluate together in the same manner:

workloads = options.cmd.split(';')
if options.input != "":
inputs = options.input.split(';')
if options.output != "":
outputs = options.output.split(';')
if options.errout != "":
errouts = options.errout.split(';')
if options.options != "":
pargs = options.options.split(';')

There is then a loop that pairs the arguments with the benchmarks.

Does anyone know the proper way to pass input data to multiple benchmark binaries for SMT runs? I have failed to find example code for this. If there is an alternative method for running SPECS with SMT, I would very much appreciate your guidance.

Thank you for your time and help!