2424
2525import numpy as np
2626
27- import pyopencl .array as cl_array
2827import pyopencl .elementwise as elementwise
29- from pyopencl .array import _get_common_dtype
28+ from pyopencl .array import _get_common_dtype , elwise_kernel_runner
3029
3130
3231def _make_unary_array_func (name ):
33- @cl_array . elwise_kernel_runner
32+ @elwise_kernel_runner
3433 def knl_runner (result , arg ):
3534 if arg .dtype .kind == "c" :
3635 from pyopencl .elementwise import complex_dtype_to_name
@@ -43,8 +42,7 @@ def knl_runner(result, arg):
4342
4443 def f (array , queue = None ):
4544 result = array ._new_like_me (queue = queue )
46- event1 = knl_runner (result , array , queue = queue )
47- result .add_event (event1 )
45+ knl_runner (result , array , queue = queue )
4846 return result
4947
5048 return f
@@ -60,13 +58,13 @@ def f(array, queue=None):
6058asinpi = _make_unary_array_func ("asinpi" )
6159
6260
63- @cl_array . elwise_kernel_runner
61+ @elwise_kernel_runner
6462def _atan2 (result , arg1 , arg2 ):
6563 return elementwise .get_float_binary_func_kernel (
6664 result .context , "atan2" , arg1 .dtype , arg2 .dtype , result .dtype )
6765
6866
69- @cl_array . elwise_kernel_runner
67+ @elwise_kernel_runner
7068def _atan2pi (result , arg1 , arg2 ):
7169 return elementwise .get_float_binary_func_kernel (
7270 result .context , "atan2pi" , arg1 .dtype , arg2 .dtype , result .dtype )
@@ -81,7 +79,7 @@ def atan2(y, x, queue=None):
8179 """
8280 queue = queue or y .queue
8381 result = y ._new_like_me (_get_common_dtype (y , x , queue ))
84- result . add_event ( _atan2 (result , y , x , queue = queue ) )
82+ _atan2 (result , y , x , queue = queue )
8583 return result
8684
8785
@@ -95,7 +93,7 @@ def atan2pi(y, x, queue=None):
9593 """
9694 queue = queue or y .queue
9795 result = y ._new_like_me (_get_common_dtype (y , x , queue ))
98- result . add_event ( _atan2pi (result , y , x , queue = queue ) )
96+ _atan2pi (result , y , x , queue = queue )
9997 return result
10098
10199
@@ -122,7 +120,7 @@ def atan2pi(y, x, queue=None):
122120# TODO: fmin
123121
124122
125- @cl_array . elwise_kernel_runner
123+ @elwise_kernel_runner
126124def _fmod (result , arg , mod ):
127125 return elementwise .get_fmod_kernel (result .context , result .dtype ,
128126 arg .dtype , mod .dtype )
@@ -133,13 +131,13 @@ def fmod(arg, mod, queue=None):
133131 for each element in ``arg`` and ``mod``."""
134132 queue = (queue or arg .queue ) or mod .queue
135133 result = arg ._new_like_me (_get_common_dtype (arg , mod , queue ))
136- result . add_event ( _fmod (result , arg , mod , queue = queue ) )
134+ _fmod (result , arg , mod , queue = queue )
137135 return result
138136
139137# TODO: fract
140138
141139
142- @cl_array . elwise_kernel_runner
140+ @elwise_kernel_runner
143141def _frexp (sig , expt , arg ):
144142 return elementwise .get_frexp_kernel (sig .context , sig .dtype ,
145143 expt .dtype , arg .dtype )
@@ -151,9 +149,7 @@ def frexp(arg, queue=None):
151149 """
152150 sig = arg ._new_like_me (queue = queue )
153151 expt = arg ._new_like_me (queue = queue , dtype = np .int32 )
154- event1 = _frexp (sig , expt , arg , queue = queue )
155- sig .add_event (event1 )
156- expt .add_event (event1 )
152+ _frexp (sig , expt , arg , queue = queue , noutputs = 2 )
157153 return sig , expt
158154
159155# TODO: hypot
@@ -162,7 +158,7 @@ def frexp(arg, queue=None):
162158ilogb = _make_unary_array_func ("ilogb" )
163159
164160
165- @cl_array . elwise_kernel_runner
161+ @elwise_kernel_runner
166162def _ldexp (result , sig , exp ):
167163 return elementwise .get_ldexp_kernel (result .context , result .dtype ,
168164 sig .dtype , exp .dtype )
@@ -174,7 +170,7 @@ def ldexp(significand, exponent, queue=None):
174170 ``result = significand * 2**exponent``.
175171 """
176172 result = significand ._new_like_me (queue = queue )
177- result . add_event ( _ldexp (result , significand , exponent ) )
173+ _ldexp (result , significand , exponent )
178174 return result
179175
180176
@@ -192,7 +188,7 @@ def ldexp(significand, exponent, queue=None):
192188# TODO: minmag
193189
194190
195- @cl_array . elwise_kernel_runner
191+ @elwise_kernel_runner
196192def _modf (intpart , fracpart , arg ):
197193 return elementwise .get_modf_kernel (intpart .context , intpart .dtype ,
198194 fracpart .dtype , arg .dtype )
@@ -204,9 +200,7 @@ def modf(arg, queue=None):
204200 """
205201 intpart = arg ._new_like_me (queue = queue )
206202 fracpart = arg ._new_like_me (queue = queue )
207- event1 = _modf (intpart , fracpart , arg , queue = queue )
208- fracpart .add_event (event1 )
209- intpart .add_event (event1 )
203+ _modf (intpart , fracpart , arg , queue = queue , noutputs = 2 )
210204 return fracpart , intpart
211205
212206
@@ -239,19 +233,19 @@ def modf(arg, queue=None):
239233# TODO: table 6.10, integer functions
240234# TODO: table 6.12, clamp et al
241235
242- @cl_array . elwise_kernel_runner
236+ @elwise_kernel_runner
243237def _bessel_jn (result , n , x ):
244238 return elementwise .get_bessel_kernel (result .context , "j" , result .dtype ,
245239 np .dtype (type (n )), x .dtype )
246240
247241
248- @cl_array . elwise_kernel_runner
242+ @elwise_kernel_runner
249243def _bessel_yn (result , n , x ):
250244 return elementwise .get_bessel_kernel (result .context , "y" , result .dtype ,
251245 np .dtype (type (n )), x .dtype )
252246
253247
254- @cl_array . elwise_kernel_runner
248+ @elwise_kernel_runner
255249def _hankel_01 (h0 , h1 , x ):
256250 if h0 .dtype != h1 .dtype :
257251 raise TypeError ("types of h0 and h1 must match" )
@@ -261,20 +255,18 @@ def _hankel_01(h0, h1, x):
261255
262256def bessel_jn (n , x , queue = None ):
263257 result = x ._new_like_me (queue = queue )
264- result . add_event ( _bessel_jn (result , n , x , queue = queue ) )
258+ _bessel_jn (result , n , x , queue = queue )
265259 return result
266260
267261
268262def bessel_yn (n , x , queue = None ):
269263 result = x ._new_like_me (queue = queue )
270- result . add_event ( _bessel_yn (result , n , x , queue = queue ) )
264+ _bessel_yn (result , n , x , queue = queue )
271265 return result
272266
273267
274268def hankel_01 (x , queue = None ):
275269 h0 = x ._new_like_me (queue = queue )
276270 h1 = x ._new_like_me (queue = queue )
277- event1 = _hankel_01 (h0 , h1 , x , queue = queue )
278- h0 .add_event (event1 )
279- h1 .add_event (event1 )
271+ _hankel_01 (h0 , h1 , x , queue = queue , noutputs = 2 )
280272 return h0 , h1
0 commit comments