Last active
January 29, 2016 12:06
-
-
Save wence-/a594eef1df5301764d0e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/firedrake/fc/driver.py b/firedrake/fc/driver.py | |
| index 1fb0e92..93da812 100644 | |
| --- a/firedrake/fc/driver.py | |
| +++ b/firedrake/fc/driver.py | |
| @@ -2,6 +2,7 @@ from __future__ import absolute_import | |
| import numpy | |
| import time | |
| +import collections | |
| from ufl.algorithms import compute_form_data | |
| @@ -83,7 +84,7 @@ def compile_integral(integral, fd, prefix): | |
| decl = coffee.Decl("const int *restrict *restrict", coffee.Symbol("cell_orientations")) | |
| arglist.insert(2, decl) | |
| - index_extents = {} | |
| + index_extents = collections.OrderedDict() | |
| for e in simplified: | |
| index_extents.update(ein.collect_index_extents(e)) | |
| index_ordering = apply_prefix_ordering(index_extents.keys(), | |
| diff --git a/firedrake/fc/einstein.py b/firedrake/fc/einstein.py | |
| index 2eb824d..2af258c 100644 | |
| --- a/firedrake/fc/einstein.py | |
| +++ b/firedrake/fc/einstein.py | |
| @@ -514,7 +514,7 @@ def inline_indices(expression): | |
| def collect_index_extents(expression): | |
| - result = {} | |
| + result = collections.OrderedDict() | |
| for node in traversal([expression]): | |
| if isinstance(node, Indexed): | |
| diff --git a/firedrake/fc/scheduling.py b/firedrake/fc/scheduling.py | |
| index 3cccbc5..db97627 100644 | |
| --- a/firedrake/fc/scheduling.py | |
| +++ b/firedrake/fc/scheduling.py | |
| @@ -8,10 +8,20 @@ from firedrake.fc import einstein as ein, impero as imp | |
| from firedrake.fc.node import traversal | |
| +class OrderedDefaultDict(collections.OrderedDict): | |
| + def __init__(self, factory, *args, **kwargs): | |
| + self.factory = factory | |
| + super(OrderedDefaultDict, self).__init__(*args, **kwargs) | |
| + | |
| + def __missing__(self, key): | |
| + val = self[key] = self.factory() | |
| + return val | |
| + | |
| + | |
| class Queue(object): | |
| def __init__(self, reference_count, get_indices): | |
| self.waiting = reference_count.copy() | |
| - self.queue = collections.defaultdict(list) | |
| + self.queue = OrderedDefaultDict(list) | |
| self.get_indices = get_indices | |
| def reference(self, o): |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment