Skip to content
Snippets Groups Projects
Commit 3c090707 authored by René Heß's avatar René Heß
Browse files

Merge branch 'feature/kernel-query-language' into 'master'

Use kernel query language to specify dependencies on writes!

This fixes #52

See merge request !67
parents d36d10f8 bd92f755
No related branches found
No related tags found
No related merge requests found
diff --git a/loopy/kernel/creation.py b/loopy/kernel/creation.py
index d9cd76c..a95cc1e 100644
--- a/loopy/kernel/creation.py
+++ b/loopy/kernel/creation.py
@@ -1518,7 +1518,7 @@ def apply_single_writer_depencency_heuristic(kernel, warn_if_used=True):
"temporary variable '%s' is read, but never written."
% var)
- if len(var_writers) == 1:
+ if len(var_writers) >= 1:
auto_deps.update(
var_writers
- set([insn.id]))
...@@ -21,6 +21,8 @@ from ufl.algorithms import MultiFunction ...@@ -21,6 +21,8 @@ from ufl.algorithms import MultiFunction
from pymbolic.primitives import Variable from pymbolic.primitives import Variable
from pymbolic.primitives import Expression as PymbolicExpression from pymbolic.primitives import Expression as PymbolicExpression
from loopy.match import Writes
import numpy as np import numpy as np
...@@ -205,6 +207,7 @@ def apply_in_cell_transformation(name, local, restriction): ...@@ -205,6 +207,7 @@ def apply_in_cell_transformation(name, local, restriction):
), ),
assignees=frozenset({name}), assignees=frozenset({name}),
read_variables=frozenset({get_pymbolic_basename(local)}), read_variables=frozenset({get_pymbolic_basename(local)}),
depends_on=frozenset({Writes(get_pymbolic_basename(local))}),
) )
...@@ -240,6 +243,7 @@ def evaluate_unit_outer_normal(name): ...@@ -240,6 +243,7 @@ def evaluate_unit_outer_normal(name):
return quadrature_preamble("{} = {}.unitOuterNormal({});".format(name, ig, qp), return quadrature_preamble("{} = {}.unitOuterNormal({});".format(name, ig, qp),
assignees=frozenset({name}), assignees=frozenset({name}),
read_variables=frozenset({get_pymbolic_basename(qp)}), read_variables=frozenset({get_pymbolic_basename(qp)}),
depends_on=frozenset({Writes(get_pymbolic_basename(qp))}),
) )
...@@ -318,6 +322,7 @@ def define_jacobian_inverse_transposed(name, restriction): ...@@ -318,6 +322,7 @@ def define_jacobian_inverse_transposed(name, restriction):
), ),
assignees=frozenset({name}), assignees=frozenset({name}),
read_variables=frozenset({get_pymbolic_basename(pos)}), read_variables=frozenset({get_pymbolic_basename(pos)}),
depends_on=frozenset({Writes(get_pymbolic_basename(pos))}),
) )
...@@ -353,6 +358,7 @@ def define_jacobian_determinant(name): ...@@ -353,6 +358,7 @@ def define_jacobian_determinant(name):
return quadrature_preamble(code, return quadrature_preamble(code,
assignees=frozenset({name}), assignees=frozenset({name}),
read_variables=frozenset({get_pymbolic_basename(pos)}), read_variables=frozenset({get_pymbolic_basename(pos)}),
depends_on=frozenset({Writes(get_pymbolic_basename(pos))}),
) )
......
...@@ -24,6 +24,8 @@ from dune.perftool.pdelab.localoperator import (class_type_from_cache, ...@@ -24,6 +24,8 @@ from dune.perftool.pdelab.localoperator import (class_type_from_cache,
localoperator_basename, localoperator_basename,
) )
from loopy.match import Writes
@class_basename(classtag="parameterclass") @class_basename(classtag="parameterclass")
def parameterclass_basename(formdata, data): def parameterclass_basename(formdata, data):
...@@ -177,6 +179,7 @@ def evaluate_cell_parameter_function(name, restriction): ...@@ -177,6 +179,7 @@ def evaluate_cell_parameter_function(name, restriction):
), ),
assignees=frozenset({name}), assignees=frozenset({name}),
read_variables=frozenset({get_pymbolic_basename(pos)}), read_variables=frozenset({get_pymbolic_basename(pos)}),
depends_on=frozenset({Writes(get_pymbolic_basename(pos))}),
) )
...@@ -197,6 +200,7 @@ def evaluate_intersection_parameter_function(name): ...@@ -197,6 +200,7 @@ def evaluate_intersection_parameter_function(name):
), ),
assignees=frozenset({name}), assignees=frozenset({name}),
read_variables=frozenset({get_pymbolic_basename(pos)}), read_variables=frozenset({get_pymbolic_basename(pos)}),
depends_on=frozenset({Writes(get_pymbolic_basename(pos))}),
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment