mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-18 07:15:19 +00:00
This was a seperate repository in CVS and so it missed the conversion.
benchmarks/
As above.
157 lines
4.1 KiB
Python
Executable File
157 lines
4.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
#
|
|
# Use /usr/bin/time and a number of repetitions to collect data for test
|
|
# parallelism programs.
|
|
#
|
|
|
|
import os
|
|
import sys
|
|
|
|
REPS=100
|
|
|
|
DATA = ' '.join([
|
|
"data/apply_exclusion.m",
|
|
"data/apply_exclusion.m.1",
|
|
"data/array_util.m",
|
|
"data/array_util.m.1",
|
|
"data/callgraph.m",
|
|
"data/callgraph.m.1",
|
|
"data/canonical.m",
|
|
"data/canonical.m.1",
|
|
"data/cliques.m",
|
|
"data/cliques.m.1",
|
|
"data/conf.m",
|
|
"data/conf.m.1",
|
|
"data/coverage.m",
|
|
"data/coverage.m.1",
|
|
"data/create_report.m",
|
|
"data/create_report.m.1",
|
|
"data/dense_bitset.m",
|
|
"data/dense_bitset.m.1",
|
|
"data/display.m",
|
|
"data/display.m.1",
|
|
"data/display_report.m",
|
|
"data/display_report.m.1",
|
|
"data/dump.m",
|
|
"data/dump.m.1",
|
|
"data/exclude.m",
|
|
"data/exclude.m.1",
|
|
"data/feedback.m",
|
|
"data/feedback.m.1",
|
|
"data/html_format.m",
|
|
"data/html_format.m.1",
|
|
"data/interface.m",
|
|
"data/interface.m.1",
|
|
"data/io_combinator.m",
|
|
"data/io_combinator.m.1",
|
|
"data/mdbcomp.m",
|
|
"data/mdbcomp.m.1",
|
|
"data/mdprof_cgi.m",
|
|
"data/mdprof_cgi.m.1",
|
|
"data/mdprof_dump.m",
|
|
"data/mdprof_dump.m.1",
|
|
"data/mdprof_fb.automatic_parallelism.m",
|
|
"data/mdprof_fb.automatic_parallelism.m.1",
|
|
"data/mdprof_fb.m",
|
|
"data/mdprof_fb.m.1",
|
|
"data/mdprof_feedback.m",
|
|
"data/mdprof_feedback.m.1",
|
|
"data/mdprof_procrep.m",
|
|
"data/mdprof_procrep.m.1",
|
|
"data/mdprof_test.m",
|
|
"data/mdprof_test.m.1",
|
|
"data/measurements.m",
|
|
"data/measurements.m.1",
|
|
"data/measurement_units.m",
|
|
"data/measurement_units.m.1",
|
|
"data/message.m",
|
|
"data/message.m.1",
|
|
"data/old_html_format.m",
|
|
"data/old_html_format.m.1",
|
|
"data/old_query.m",
|
|
"data/old_query.m.1",
|
|
"data/prim_data.m",
|
|
"data/prim_data.m.1",
|
|
"data/profile.m",
|
|
"data/profile.m.1",
|
|
"data/program_representation.m",
|
|
"data/program_representation.m.1",
|
|
"data/program_representation_utils.m",
|
|
"data/program_representation_utils.m.1",
|
|
"data/query.m",
|
|
"data/query.m.1",
|
|
"data/read_profile.m",
|
|
"data/read_profile.m.1",
|
|
"data/report.m",
|
|
"data/report.m.1",
|
|
"data/rtti_access.m",
|
|
"data/rtti_access.m.1",
|
|
"data/slice_and_dice.m",
|
|
"data/slice_and_dice.m.1",
|
|
"data/startup.m",
|
|
"data/startup.m.1",
|
|
"data/timeout.m",
|
|
"data/timeout.m.1",
|
|
"data/top_procs.m",
|
|
"data/top_procs.m.1",
|
|
"data/trace_counts.m",
|
|
"data/trace_counts.m.1",
|
|
"data/util.m",
|
|
"data/util.m.1",
|
|
"data/var_use_analysis.m",
|
|
"data/var_use_analysis.m.1" ])
|
|
|
|
#TESTS = [
|
|
# ("./quicksort_plain %s" % DATA, "", "plain.log"),
|
|
# ("./quicksort_plain_nopar %s" % DATA, "-P 4", "plain_nopar_4.log"),
|
|
# ("./quicksort_plain_par %s" % DATA, "-P 1", "plain_par_1.log"),
|
|
# ("./quicksort_plain_par %s" % DATA, "-P 2", "plain_par_2.log"),
|
|
# ("./quicksort_plain_par %s" % DATA, "-P 4", "plain_par_4.log"),
|
|
# ("./quicksort_maybe_par %s" % DATA, "-P 1", "maybe_par_1.log"),
|
|
# ("./quicksort_maybe_par %s" % DATA, "-P 2", "maybe_par_2.log"),
|
|
# ("./quicksort_maybe_par %s" % DATA, "-P 4", "maybe_par_4.log"),
|
|
# ("./quicksort_maybe_par2 %s" % DATA, "-P 1", "maybe_par2_1.log"),
|
|
# ("./quicksort_maybe_par2 %s" % DATA, "-P 2", "maybe_par2_2.log"),
|
|
# ("./quicksort_maybe_par2 %s" % DATA, "-P 4", "maybe_par2_4.log"),
|
|
# ("./quicksort_top_par %s" % DATA, "-P 1", "top_par_1.log"),
|
|
# ("./quicksort_top_par %s" % DATA, "-P 2", "top_par_2.log"),
|
|
# ("./quicksort_top_par %s" % DATA, "-P 4", "top_par_4.log"),
|
|
#]
|
|
|
|
def do_test(test):
|
|
log = test[2]
|
|
cmd = test[0]
|
|
env = test[1]
|
|
time_cmd = ("time -a -v -o %s %s" % (log, cmd)).split(" ")
|
|
|
|
for rep in range(REPS):
|
|
sys.stderr.write("Rep %d of %d\n" % (rep + 1, REPS))
|
|
write_log(log, "Rep: %d\n" % rep)
|
|
os.putenv("MERCURY_OPTIONS", env)
|
|
os.spawnlp(os.P_WAIT, "time", *time_cmd)
|
|
|
|
def write_log(log, message):
|
|
log = open(log, "a")
|
|
log.write(message)
|
|
log.close()
|
|
|
|
def do_tests(programs):
|
|
import operator
|
|
|
|
tests = reduce(operator.concat,
|
|
[[("%s %s" % (program, DATA), "-P %d" % ncores, "%s_p%d.log" % (program, ncores))
|
|
for program in programs
|
|
if (program.startswith("asm_fast.gc.par") or (ncores == 1))]
|
|
for ncores in range(1, 5)])
|
|
|
|
num_tests = len(tests)
|
|
for num, test in enumerate(tests):
|
|
sys.stderr.write("Running test %d of %d\n" % (num+1, num_tests))
|
|
do_test(test)
|
|
|
|
if __name__ == "__main__":
|
|
do_tests(sys.argv[1:])
|
|
|
|
|