diff options
author | Josh Blum | 2012-12-09 13:35:23 -0800 |
---|---|---|
committer | Josh Blum | 2012-12-28 12:29:01 -0600 |
commit | 02308d2f65f2b75b2d43db598739efd9c51851a6 (patch) | |
tree | d306889fc3e8e220bfe00a3a1397d6c340c398b9 | |
parent | 449d485d9b8caeffb8fd6c7181fb47ec3cf33bc0 (diff) | |
download | sandhi-02308d2f65f2b75b2d43db598739efd9c51851a6.tar.gz sandhi-02308d2f65f2b75b2d43db598739efd9c51851a6.tar.bz2 sandhi-02308d2f65f2b75b2d43db598739efd9c51851a6.zip |
work on benchmark stubs
-rw-r--r-- | benchmark/benchmark.py | 50 | ||||
-rw-r--r-- | benchmark/bm_grextras_math.py | 29 |
2 files changed, 79 insertions, 0 deletions
diff --git a/benchmark/benchmark.py b/benchmark/benchmark.py new file mode 100644 index 0000000..ad98284 --- /dev/null +++ b/benchmark/benchmark.py @@ -0,0 +1,50 @@ +import sys +import os +import time +import subprocess +import pylab as p + +__path__ = os.path.dirname(__file__) + +GRAS_ENV = { + 'PATH': os.path.join(os.getenv('HOME'), 'usr/gras/bin:$PATH:%s'%os.getenv('PATH')), + 'LD_LIBRARY_PATH': os.path.join(os.getenv('HOME'), 'usr/gras/lib:%s'%os.getenv('LD_LIBRARY_PATH')), + 'PYTHONPATH': os.path.join(os.getenv('HOME'), 'usr/gras/lib/python2.7/dist-packages:%s'%os.getenv('PYTHONPATH')), +} + +def tokwargs(**kwargs): + return kwargs + +BENCHMARK_MATH_OPS = tokwargs( + wat='Benchmark GrExtras vs gr-blocks math blocks', + moar=''' + All blocks are using vector optimization. + - GrExtras math blocks avoid an unnecessary memcpy. + - GrExtras math blocks enable automatic bufer in-placing. + ''', + tests = [ + tokwargs(wat='GrExtras Adder', args=[sys.executable, os.path.join(__path__, 'bm_grextras_math.py'), '1e8', 'extras_add'], env=GRAS_ENV), + tokwargs(wat='gr-blocks Adder', args=[sys.executable, os.path.join(__path__, 'bm_grextras_math.py'), '1e8', 'blocks_add'], env=GRAS_ENV), + tokwargs(wat='GrExtras Multiplier', args=[sys.executable, os.path.join(__path__, 'bm_grextras_math.py'), '1e8', 'extras_mult'], env=GRAS_ENV), + tokwargs(wat='gr-blocks Multiplier', args=[sys.executable, os.path.join(__path__, 'bm_grextras_math.py'), '1e8', 'blocks_mult'], env=GRAS_ENV), + ], + to_result = lambda t: 1e8/t +) + +def time_a_single_one(args, env): + t0 = time.time() + p = subprocess.Popen(args=args, env=env) + p.wait() + t1 = time.time() + return t1-t0 + +def do_a_benchmark(bm): + results = list() + for run in bm['tests']: + #print run['env'] + r = time_a_single_one(args=run['args'], env=run['env']) + results.append(bm['to_result'](r)) + print results + +if __name__ == '__main__': + do_a_benchmark(BENCHMARK_MATH_OPS) diff --git a/benchmark/bm_grextras_math.py b/benchmark/bm_grextras_math.py new file mode 100644 index 0000000..e238472 --- /dev/null +++ b/benchmark/bm_grextras_math.py @@ -0,0 +1,29 @@ +import gras +import grextras +import gnuradio +from gnuradio import gr +from gnuradio import blocks as grblocks +import sys + +if __name__ == '__main__': + + num = long(float(sys.argv[1])) + what = sys.argv[2] + + tb = gras.TopBlock() + src0 = gr.null_source(8) + src1 = gr.null_source(8) + sink = gr.null_sink(8) + head = gr.head(8, num) + + if what == 'extras_add': math_op = grextras.Add.fc32_fc32() + if what == 'blocks_add': math_op = grblocks.add_cc() + if what == 'extras_mult': math_op = grextras.Multiply.fc32_fc32() + if what == 'blocks_mult': math_op = grblocks.multiply_cc() + + tb.connect(src0, (math_op, 0)) + tb.connect(src1, (math_op, 1)) + tb.connect(math_op, head, sink) + + tb.run() + tb.wait() |