diff --git a/arraycontext/context.py b/arraycontext/context.py
index 3d2df31fa64451e5afd153d182eb7be6044f88e8..9ffbe2a992ff4abb4d6f95ae142cad73e0d2a5ac 100644
--- a/arraycontext/context.py
+++ b/arraycontext/context.py
@@ -355,6 +355,11 @@ class ArrayContext(ABC):
     def permits_inplace_modification(self):
         pass
 
+    # undocumented for now
+    @abstractproperty
+    def supports_nonscalar_broadcasting(self):
+        pass
+
 # }}}
 
 # vim: foldmethod=marker
diff --git a/arraycontext/impl/pyopencl/__init__.py b/arraycontext/impl/pyopencl/__init__.py
index 98f3ffc8161dfe3eb57369c21e110575a4145e58..cd9c02a2f963583f84930c98e0ada4c688344795 100644
--- a/arraycontext/impl/pyopencl/__init__.py
+++ b/arraycontext/impl/pyopencl/__init__.py
@@ -278,6 +278,10 @@ class PyOpenCLArrayContext(ArrayContext):
     def permits_inplace_modification(self):
         return True
 
+    @property
+    def supports_nonscalar_broadcasting(self):
+        return False
+
 # }}}
 
 # vim: foldmethod=marker
diff --git a/arraycontext/impl/pytato/__init__.py b/arraycontext/impl/pytato/__init__.py
index beaebc4b8592a869643cc83c57e55e75eedba386..0f5ad12f1147ca2cb19a6ee3ce6dafd9fc0e393a 100644
--- a/arraycontext/impl/pytato/__init__.py
+++ b/arraycontext/impl/pytato/__init__.py
@@ -227,3 +227,7 @@ class PytatoPyOpenCLArrayContext(ArrayContext):
     @property
     def permits_inplace_modification(self):
         return False
+
+    @property
+    def supports_nonscalar_broadcasting(self):
+        return True