diff --git a/python/dune/perftool/compile.py b/python/dune/perftool/compile.py index b033ea3efca29472167a61acdaef8754239abdfc..1cfc540a42e72ae64b1d47178c1e8cc34bc28d66 100644 --- a/python/dune/perftool/compile.py +++ b/python/dune/perftool/compile.py @@ -5,6 +5,14 @@ Should also contain the entrypoint methods. """ from __future__ import absolute_import + +# Configure loggers +import logging.config +from os import path +log_file_path = path.join(path.dirname(path.abspath(__file__)), 'logging.conf') +logging.config.fileConfig(log_file_path) + + import loopy from ufl.algorithms import compute_form_data, read_ufl_file diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index 215fe5cb2e159a106e8a1c81f90a5068cee1af19..ae938f900f070abde562e6453211baa45bd76fb6 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -1,6 +1,8 @@ from __future__ import absolute_import from os.path import splitext +import logging + from dune.perftool.options import get_option from dune.perftool.generation import (backend, base_class, @@ -411,15 +413,20 @@ def visit_integrals(integrals): def generate_kernel(integrals): + logger = logging.getLogger(__name__) + # Visit all integrals once to collect information (dry-run)! + logger.debug('generate_kernel: visit_integrals (dry run)') with global_context(dry_run=True): visit_integrals(integrals) # Now perform some checks on what should be done from dune.perftool.sumfact.vectorization import decide_vectorization_strategy + logger.debug('generate_kernel: decide_vectorization_strategy') decide_vectorization_strategy() # Delete the cache contents and do the real thing! + logger.debug('generate_kernel: visit_integrals (no dry run)') from dune.perftool.generation import delete_cache_items delete_cache_items("kernel_default") visit_integrals(integrals) @@ -645,6 +652,8 @@ def cgen_class_from_cache(tag, members=[]): def generate_localoperator_kernels(formdata, data): + logger = logging.getLogger(__name__) + # Extract the relevant attributes of the form data form = formdata.preprocessed_form @@ -688,9 +697,11 @@ def generate_localoperator_kernels(formdata, data): # Have a data structure collect the generated kernels operator_kernels = {} + logger.info("generate_localoperator_kernels: create residual methods") with global_context(form_type='residual'): # Generate the necessary residual methods for measure in set(i.integral_type() for i in form.integrals()): + logger.info("generate_localoperator_kernels: measure {}".format(measure)) with global_context(integral_type=measure): enum_pattern() pattern_baseclass() @@ -743,6 +754,7 @@ def generate_localoperator_kernels(formdata, data): operator_kernels[(measure, 'residual')] = kernel + logger.info("generate_localoperator_kernels: create jacobian methods") # Generate the necessary jacobian methods if not get_option("numerical_jacobian"): from ufl import derivative