From db1a7d55f72b9d96dc2264e1d2659efaa55d231b Mon Sep 17 00:00:00 2001 From: Alexandru Fikl <alexfikl@gmail.com> Date: Wed, 21 Jul 2021 13:47:11 -0500 Subject: [PATCH] add any and all to PyOpenCLArrayContext --- arraycontext/impl/pyopencl/fake_numpy.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/arraycontext/impl/pyopencl/fake_numpy.py b/arraycontext/impl/pyopencl/fake_numpy.py index 01f80f3..01054ba 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 + # }}} -- GitLab