From dba8975e17cc17d0b5d81980139b4ddd4cb2ad56 Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Wed, 19 Oct 2016 20:57:55 +0200 Subject: [PATCH] Implement declaration of temporaries with base_storage --- python/dune/perftool/generation/loopy.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/python/dune/perftool/generation/loopy.py b/python/dune/perftool/generation/loopy.py index 10620a1e..f13f89cd 100644 --- a/python/dune/perftool/generation/loopy.py +++ b/python/dune/perftool/generation/loopy.py @@ -80,6 +80,11 @@ def default_declaration(name, shape=(), shape_impl=()): return '{} {}(0.0);'.format(t, name) +@preamble +def declaration_with_base_storage(name, base_storage): + return 'double* {} = {};'.format(name, base_storage) + + class _TemporaryCounter: counter = 0 @@ -99,6 +104,13 @@ def temporary_variable(name, **kwargs): shape_impl = kwargs.pop('shape_impl', ('arr',) * len(shape)) decl_method = kwargs.pop('decl_method', default_declaration) + + # Check if a specified base_storage has already been initialized + if kwargs.get('base_storage', None): + assert(kwargs['base_storage'] in [tv.name for tv in temporary_variable._memoize_cache.values()]) + assert(decl_method is None) + declaration_with_base_storage(name, kwargs['base_storage']) + if decl_method is not None: decl_method(name, shape, shape_impl) -- GitLab