2222THE SOFTWARE.
2323"""
2424
25- import pyopencl .array as cl_array
2625import pyopencl .elementwise as elementwise
27- from pyopencl .array import _get_common_dtype
26+ from pyopencl .array import elwise_kernel_runner , _get_common_dtype
2827import numpy as np
2928
3029
3130def _make_unary_array_func (name ):
32- @cl_array . elwise_kernel_runner
31+ @elwise_kernel_runner
3332 def knl_runner (result , arg ):
3433 if arg .dtype .kind == "c" :
3534 from pyopencl .elementwise import complex_dtype_to_name
@@ -42,8 +41,7 @@ def knl_runner(result, arg):
4241
4342 def f (array , queue = None ):
4443 result = array ._new_like_me (queue = queue )
45- event1 = knl_runner (result , array , queue = queue )
46- result .add_event (event1 )
44+ knl_runner (result , array , queue = queue )
4745 return result
4846
4947 return f
@@ -59,13 +57,13 @@ def f(array, queue=None):
5957asinpi = _make_unary_array_func ("asinpi" )
6058
6159
62- @cl_array . elwise_kernel_runner
60+ @elwise_kernel_runner
6361def _atan2 (result , arg1 , arg2 ):
6462 return elementwise .get_float_binary_func_kernel (
6563 result .context , "atan2" , arg1 .dtype , arg2 .dtype , result .dtype )
6664
6765
68- @cl_array . elwise_kernel_runner
66+ @elwise_kernel_runner
6967def _atan2pi (result , arg1 , arg2 ):
7068 return elementwise .get_float_binary_func_kernel (
7169 result .context , "atan2pi" , arg1 .dtype , arg2 .dtype , result .dtype )
@@ -80,7 +78,7 @@ def atan2(y, x, queue=None):
8078 """
8179 queue = queue or y .queue
8280 result = y ._new_like_me (_get_common_dtype (y , x , queue ))
83- result . add_event ( _atan2 (result , y , x , queue = queue ) )
81+ _atan2 (result , y , x , queue = queue )
8482 return result
8583
8684
@@ -94,7 +92,7 @@ def atan2pi(y, x, queue=None):
9492 """
9593 queue = queue or y .queue
9694 result = y ._new_like_me (_get_common_dtype (y , x , queue ))
97- result . add_event ( _atan2pi (result , y , x , queue = queue ) )
95+ _atan2pi (result , y , x , queue = queue )
9896 return result
9997
10098
@@ -121,7 +119,7 @@ def atan2pi(y, x, queue=None):
121119# TODO: fmin
122120
123121
124- @cl_array . elwise_kernel_runner
122+ @elwise_kernel_runner
125123def _fmod (result , arg , mod ):
126124 return elementwise .get_fmod_kernel (result .context , result .dtype ,
127125 arg .dtype , mod .dtype )
@@ -132,13 +130,13 @@ def fmod(arg, mod, queue=None):
132130 for each element in `arg` and `mod`."""
133131 queue = (queue or arg .queue ) or mod .queue
134132 result = arg ._new_like_me (_get_common_dtype (arg , mod , queue ))
135- result . add_event ( _fmod (result , arg , mod , queue = queue ) )
133+ _fmod (result , arg , mod , queue = queue )
136134 return result
137135
138136# TODO: fract
139137
140138
141- @cl_array . elwise_kernel_runner
139+ @elwise_kernel_runner
142140def _frexp (sig , expt , arg ):
143141 return elementwise .get_frexp_kernel (sig .context , sig .dtype ,
144142 expt .dtype , arg .dtype )
@@ -150,9 +148,7 @@ def frexp(arg, queue=None):
150148 """
151149 sig = arg ._new_like_me (queue = queue )
152150 expt = arg ._new_like_me (queue = queue , dtype = np .int32 )
153- event1 = _frexp (sig , expt , arg , queue = queue )
154- sig .add_event (event1 )
155- expt .add_event (event1 )
151+ _frexp (sig , expt , arg , queue = queue , noutputs = 2 )
156152 return sig , expt
157153
158154# TODO: hypot
@@ -161,7 +157,7 @@ def frexp(arg, queue=None):
161157ilogb = _make_unary_array_func ("ilogb" )
162158
163159
164- @cl_array . elwise_kernel_runner
160+ @elwise_kernel_runner
165161def _ldexp (result , sig , exp ):
166162 return elementwise .get_ldexp_kernel (result .context , result .dtype ,
167163 sig .dtype , exp .dtype )
@@ -173,7 +169,7 @@ def ldexp(significand, exponent, queue=None):
173169 `result = significand * 2**exponent`.
174170 """
175171 result = significand ._new_like_me (queue = queue )
176- result . add_event ( _ldexp (result , significand , exponent ) )
172+ _ldexp (result , significand , exponent )
177173 return result
178174
179175
@@ -191,7 +187,7 @@ def ldexp(significand, exponent, queue=None):
191187# TODO: minmag
192188
193189
194- @cl_array . elwise_kernel_runner
190+ @elwise_kernel_runner
195191def _modf (intpart , fracpart , arg ):
196192 return elementwise .get_modf_kernel (intpart .context , intpart .dtype ,
197193 fracpart .dtype , arg .dtype )
@@ -203,9 +199,7 @@ def modf(arg, queue=None):
203199 """
204200 intpart = arg ._new_like_me (queue = queue )
205201 fracpart = arg ._new_like_me (queue = queue )
206- event1 = _modf (intpart , fracpart , arg , queue = queue )
207- fracpart .add_event (event1 )
208- intpart .add_event (event1 )
202+ _modf (intpart , fracpart , arg , queue = queue , noutputs = 2 )
209203 return fracpart , intpart
210204
211205
@@ -238,19 +232,19 @@ def modf(arg, queue=None):
238232# TODO: table 6.10, integer functions
239233# TODO: table 6.12, clamp et al
240234
241- @cl_array . elwise_kernel_runner
235+ @elwise_kernel_runner
242236def _bessel_jn (result , n , x ):
243237 return elementwise .get_bessel_kernel (result .context , "j" , result .dtype ,
244238 np .dtype (type (n )), x .dtype )
245239
246240
247- @cl_array . elwise_kernel_runner
241+ @elwise_kernel_runner
248242def _bessel_yn (result , n , x ):
249243 return elementwise .get_bessel_kernel (result .context , "y" , result .dtype ,
250244 np .dtype (type (n )), x .dtype )
251245
252246
253- @cl_array . elwise_kernel_runner
247+ @elwise_kernel_runner
254248def _hankel_01 (h0 , h1 , x ):
255249 if h0 .dtype != h1 .dtype :
256250 raise TypeError ("types of h0 and h1 must match" )
@@ -260,20 +254,18 @@ def _hankel_01(h0, h1, x):
260254
261255def bessel_jn (n , x , queue = None ):
262256 result = x ._new_like_me (queue = queue )
263- result . add_event ( _bessel_jn (result , n , x , queue = queue ) )
257+ _bessel_jn (result , n , x , queue = queue )
264258 return result
265259
266260
267261def bessel_yn (n , x , queue = None ):
268262 result = x ._new_like_me (queue = queue )
269- result . add_event ( _bessel_yn (result , n , x , queue = queue ) )
263+ _bessel_yn (result , n , x , queue = queue )
270264 return result
271265
272266
273267def hankel_01 (x , queue = None ):
274268 h0 = x ._new_like_me (queue = queue )
275269 h1 = x ._new_like_me (queue = queue )
276- event1 = _hankel_01 (h0 , h1 , x , queue = queue )
277- h0 .add_event (event1 )
278- h1 .add_event (event1 )
270+ _hankel_01 (h0 , h1 , x , queue = queue , noutputs = 2 )
279271 return h0 , h1
0 commit comments