diff options
Diffstat (limited to 'src/boost/libs/compute/perf/perfdoc.py')
-rwxr-xr-x | src/boost/libs/compute/perf/perfdoc.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/boost/libs/compute/perf/perfdoc.py b/src/boost/libs/compute/perf/perfdoc.py new file mode 100755 index 00000000..e9c60362 --- /dev/null +++ b/src/boost/libs/compute/perf/perfdoc.py @@ -0,0 +1,70 @@ +#!/usr/bin/python + +# Copyright (c) 2014 Kyle Lutz <kyle.r.lutz@gmail.com> +# Distributed under the Boost Software License, Version 1.0 +# See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt +# +# See http://boostorg.github.com/compute for more information. + +import os +import sys +import pylab + +from perf import run_benchmark + +fignum = 0 + +def plot_to_file(report, filename): + global fignum + fignum += 1 + pylab.figure(fignum) + + run_to_label = { + "stl" : "C++ STL", + "thrust" : "Thrust", + "compute" : "Boost.Compute", + "bolt" : "Bolt" + } + + for run in sorted(report.samples.keys()): + x = [] + y = [] + + for sample in report.samples[run]: + x.append(sample[0]) + y.append(sample[1]) + + pylab.loglog(x, y, marker='o', label=run_to_label[run]) + + pylab.xlabel("Size") + pylab.ylabel("Time (ms)") + pylab.legend(loc='upper left') + pylab.savefig(filename) + +if __name__ == '__main__': + sizes = [pow(2, x) for x in range(10, 26)] + algorithms = [ + "accumulate", + "count", + "inner_product", + "merge", + "partial_sum", + "partition", + "reverse", + "rotate", + "saxpy", + "sort", + "unique", + ] + + try: + os.mkdir("perf_plots") + except OSError: + pass + + for algorithm in algorithms: + print("running '%s'" % (algorithm)) + report = run_benchmark(algorithm, sizes, ["stl", "thrust", "bolt"]) + plot_to_file(report, "perf_plots/%s_time_plot.png" % algorithm) + |