diff --git a/pyopencl/clrandom.py b/pyopencl/clrandom.py index aada2bd850d305735a62b67517cb4418d6fe7687..ea3862bc4d999e593e1dda9ad8d549423ffeb7b2 100644 --- a/pyopencl/clrandom.py +++ b/pyopencl/clrandom.py @@ -114,6 +114,10 @@ class RanluxGenerator: Added default value for `num_work_items`. """ + from warnings import warn + warn("Ranlux random number generation is deprecated and will go away " + "in 2022.", DeprecationWarning, stacklevel=2) + if luxury is None: luxury = 4 @@ -330,10 +334,13 @@ class RanluxGenerator: queue = ary.queue knl, size_multiplier = self.get_gen_kernel(ary.dtype, "uniform") - return knl(queue, + evt = knl(queue, (self.num_work_items,), None, self.state.data, ary.data, ary.size*size_multiplier, - b-a, a) + b-a, a, wait_for=ary.events) + ary.add_event(evt) + self.state.add_event(evt) + return ary def uniform(self, *args, **kwargs): """Make a new empty array, apply :meth:`fill_uniform` to it. @@ -342,9 +349,7 @@ class RanluxGenerator: b = kwargs.pop("b", 1) result = cl_array.empty(*args, **kwargs) - - result.add_event( - self.fill_uniform(result, queue=result.queue, a=a, b=b)) + self.fill_uniform(result, queue=result.queue, a=a, b=b) return result def fill_normal(self, ary, mu=0, sigma=1, queue=None): @@ -360,9 +365,13 @@ class RanluxGenerator: queue = ary.queue knl, size_multiplier = self.get_gen_kernel(ary.dtype, "normal") - return knl(queue, + evt = knl(queue, (self.num_work_items,), self.wg_size, - self.state.data, ary.data, ary.size*size_multiplier, sigma, mu) + self.state.data, ary.data, ary.size*size_multiplier, sigma, mu, + wait_for=ary.events) + ary.add_event(evt) + self.state.add_event(evt) + return evt def normal(self, *args, **kwargs): """Make a new empty array, apply :meth:`fill_normal` to it. @@ -371,9 +380,7 @@ class RanluxGenerator: sigma = kwargs.pop("sigma", 1) result = cl_array.empty(*args, **kwargs) - - result.add_event( - self.fill_normal(result, queue=result.queue, mu=mu, sigma=sigma)) + self.fill_normal(result, queue=result.queue, mu=mu, sigma=sigma) return result @memoize_method @@ -659,6 +666,7 @@ class Random123GeneratorBase: gsize, lsize = splay(queue, ary.size) evt = knl(queue, gsize, lsize, *args) + ary.add_event(evt) self.counter[0] += n * counter_multiplier c1_incr, self.counter[0] = divmod(self.counter[0], self.counter_max) @@ -680,9 +688,7 @@ class Random123GeneratorBase: b = kwargs.pop("b", 1) result = cl_array.empty(*args, **kwargs) - - result.add_event( - self.fill_uniform(result, queue=result.queue, a=a, b=b)) + self.fill_uniform(result, queue=result.queue, a=a, b=b) return result def fill_normal(self, ary, mu=0, sigma=1, queue=None): @@ -699,9 +705,7 @@ class Random123GeneratorBase: sigma = kwargs.pop("sigma", 1) result = cl_array.empty(*args, **kwargs) - - result.add_event( - self.fill_normal(result, queue=result.queue, mu=mu, sigma=sigma)) + self.fill_normal(result, queue=result.queue, mu=mu, sigma=sigma) return result @@ -760,8 +764,7 @@ def rand(queue, shape, dtype, luxury=None, a=0, b=1): from pyopencl.array import Array gen = _get_generator(queue.context) result = Array(queue, shape, dtype) - result.add_event( - gen.fill_uniform(result, a=a, b=b)) + gen.fill_uniform(result, a=a, b=b) return result