From 5446ee58dbeac89da30cf490ee6ca9907df7321e Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Mon, 22 Jul 2024 17:05:12 -0500 Subject: [PATCH 1/2] Restore loop inference fallback --- arraycontext/impl/pyopencl/__init__.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/arraycontext/impl/pyopencl/__init__.py b/arraycontext/impl/pyopencl/__init__.py index e2deea52..350f14ac 100644 --- a/arraycontext/impl/pyopencl/__init__.py +++ b/arraycontext/impl/pyopencl/__init__.py @@ -325,9 +325,31 @@ def transform_loopy_program(self, t_unit): all_inames = default_entrypoint.all_inames() + # FIXME: This could be much smarter. inner_iname = None - if "i0" in all_inames: + from meshmode.transform_metadata import FirstAxisIsElementsTag + + if (len(default_entrypoint.instructions) == 1 + and isinstance(default_entrypoint.instructions[0], lp.Assignment) + and any(isinstance(tag, FirstAxisIsElementsTag) + # FIXME: Firedrake branch lacks kernel tags + for tag in getattr(default_entrypoint, "tags", ()))): + stmt, = default_entrypoint.instructions + + out_inames = [v.name for v in stmt.assignee.index_tuple] + assert out_inames + outer_iname = out_inames[0] + if len(out_inames) >= 2: + inner_iname = out_inames[1] + + elif "iel" in all_inames: + outer_iname = "iel" + + if "idof" in all_inames: + inner_iname = "idof" + + elif "i0" in all_inames: outer_iname = "i0" if "i1" in all_inames: From 0e4f4a288b134adfe3e37dd1b29c41a7998507d0 Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Mon, 22 Jul 2024 17:20:29 -0500 Subject: [PATCH 2/2] meshmode as dependency --- README.rst | 2 +- requirements.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index a704c122..46afa2ba 100644 --- a/README.rst +++ b/README.rst @@ -24,7 +24,7 @@ implementations for: - Profiling ``arraycontext`` started life as an array abstraction for use with the -`meshmode `__ unstrucuted discretization +`meshmode `__ unstructured discretization package. Distributed under the MIT license. diff --git a/requirements.txt b/requirements.txt index a4cb4025..f5d46d74 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,5 @@ git+https://github.com/inducer/islpy.git#egg=islpy git+https://github.com/inducer/loopy.git#egg=loopy git+https://github.com/inducer/pytato.git#egg=pytato + +git+https://github.com/inducer/meshmode.git#egg=meshmode