@@ -1351,36 +1351,55 @@ def test_event_management(ctx_factory):
1351
1351
from pyopencl .clrandom import rand as clrand
1352
1352
1353
1353
x = clrand (queue , (5 , 10 ), dtype = np .float32 )
1354
- assert len (x .events ) == 1 , len (x .events )
1354
+ assert len (x .write_events ) == 1 , x .write_events
1355
+ assert len (x .read_events ) == 0 , x .read_events
1355
1356
1356
1357
x .finish ()
1357
1358
1358
- assert len (x .events ) == 0
1359
-
1360
- y = x + x
1361
- assert len (y .events ) == 1
1362
- y = x * x
1363
- assert len (y .events ) == 1
1364
- y = 2 * x
1365
- assert len (y .events ) == 1
1366
- y = 2 / x
1367
- assert len (y .events ) == 1
1368
- y = x / 2
1369
- assert len (y .events ) == 1
1370
- y = x ** 2
1371
- assert len (y .events ) == 1
1372
- y = 2 ** x
1373
- assert len (y .events ) == 1
1359
+ assert len (x .write_events ) == 0
1360
+ assert len (x .read_events ) == 0
1361
+
1362
+ y = x + x
1363
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1364
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 1
1365
+
1366
+ y = x * x
1367
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1368
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 2
1369
+
1370
+ y = 2 * x
1371
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1372
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 3
1373
+
1374
+ y = 2 / x
1375
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1376
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 4
1377
+
1378
+ y = x / 2
1379
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1380
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 5
1381
+
1382
+ y = x ** 2
1383
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1384
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 6
1385
+
1386
+ y = 2 ** x
1387
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1388
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 7
1389
+
1390
+ x .finish ()
1374
1391
1375
1392
for _i in range (10 ):
1376
1393
x .fill (0 )
1377
1394
1378
- assert len (x .events ) == 10
1395
+ assert len (x .write_events ) == 10
1396
+ assert len (x .read_events ) == 0
1379
1397
1380
1398
for _i in range (1000 ):
1381
1399
x .fill (0 )
1382
1400
1383
- assert len (x .events ) < 100
1401
+ assert len (x .write_events ) < 100
1402
+ assert len (x .read_events ) == 0
1384
1403
1385
1404
# }}}
1386
1405
@@ -1624,7 +1643,7 @@ def test_get_async(ctx_factory):
1624
1643
assert np .abs (b1 - b ).mean () < 1e-5
1625
1644
1626
1645
wait_event = cl .UserEvent (context )
1627
- b_gpu .add_event (wait_event )
1646
+ b_gpu .add_write_event (wait_event )
1628
1647
b , evt = b_gpu .get_async () # testing that this doesn't hang
1629
1648
wait_event .set_status (cl .command_execution_status .COMPLETE )
1630
1649
evt .wait ()
@@ -2262,6 +2281,29 @@ def alloc2(size):
2262
2281
# }}}
2263
2282
2264
2283
2284
+ # {{{ test multiple queues
2285
+
2286
+ def test_multiple_queues (ctx_factory ):
2287
+ ctx = ctx_factory ()
2288
+
2289
+ a = [None ] * 3
2290
+ for i in range (len (a )):
2291
+ queue = cl .CommandQueue (ctx )
2292
+ a [i ] = cl_array .arange (queue , 1000 , dtype = np .float32 )
2293
+
2294
+ b = a [i ] + a [i ]
2295
+ b = a [i ] ** 2
2296
+ b = a [i ] + 4000
2297
+ assert len (b .write_events ) == 1
2298
+ assert len (a [i ].read_events ) == 3
2299
+
2300
+ a [i ] = a [i ].with_queue (None )
2301
+
2302
+ b = a [0 ].with_queue (queue ) + a [1 ].with_queue (queue )
2303
+
2304
+ # }}}
2305
+
2306
+
2265
2307
if __name__ == "__main__" :
2266
2308
if len (sys .argv ) > 1 :
2267
2309
exec (sys .argv [1 ])
0 commit comments