diff --git a/arraycontext/impl/pyopencl/fake_numpy.py b/arraycontext/impl/pyopencl/fake_numpy.py index 01f80f3a105ca729ae65fe2bd3f1d749199fb173..01054bac6b90d2960f3ddc6ee25cd13fc1d91d4d 100644 --- a/arraycontext/impl/pyopencl/fake_numpy.py +++ b/arraycontext/impl/pyopencl/fake_numpy.py @@ -186,6 +186,28 @@ class PyOpenCLFakeNumpyNamespace(BaseFakeNumpyNamespace): result = result.get()[()] return result + def any(self, a): + queue = self._array_context.queue + result = rec_map_reduce_array_container( + partial(reduce, partial(cl_array.maximum, queue=queue)), + lambda subary: subary.any(queue=queue), + a) + + if not self._array_context._force_device_scalars: + result = result.get()[()] + return result + + def all(self, a): + queue = self._array_context.queue + result = rec_map_reduce_array_container( + partial(reduce, partial(cl_array.minimum, queue=queue)), + lambda subary: subary.all(queue=queue), + a) + + if not self._array_context._force_device_scalars: + result = result.get()[()] + return result + # }}}