From 3df0533e94f12f8e932f2ab976a8a4890798b046 Mon Sep 17 00:00:00 2001
From: Kaushik Kulkarni <15399010+kaushikcfd@users.noreply.github.com>
Date: Tue, 10 Aug 2021 20:03:59 -0500
Subject: [PATCH] [PytatoPyOpenCLArrayContext] Do not evaluate array
 expressions for 0-sized arrays (#69)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* do not evaluate array expressions for 0-sized arrays

* Use empty for empty arrays

Co-authored-by: Andreas Klöckner <inform@tiker.net>
---
 arraycontext/impl/pytato/__init__.py | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/arraycontext/impl/pytato/__init__.py b/arraycontext/impl/pytato/__init__.py
index dfcdc23..b4ac63e 100644
--- a/arraycontext/impl/pytato/__init__.py
+++ b/arraycontext/impl/pytato/__init__.py
@@ -123,6 +123,16 @@ class PytatoPyOpenCLArrayContext(ArrayContext):
             raise TypeError("PytatoPyOpenCLArrayContext.freeze invoked with "
                             f"non-pytato array of type '{type(array)}'")
 
+        # {{{ early exit for 0-sized arrays
+
+        if array.size == 0:
+            return cla.empty(self.queue.context,
+                             shape=array.shape,
+                             dtype=array.dtype,
+                             allocator=self.allocator)
+
+        # }}}
+
         from arraycontext.impl.pytato.utils import _normalize_pt_expr
         normalized_expr, bound_arguments = _normalize_pt_expr(array)
 
-- 
GitLab