@@ -1384,36 +1384,55 @@ def test_event_management(ctx_factory):
1384
1384
from pyopencl .clrandom import rand as clrand
1385
1385
1386
1386
x = clrand (queue , (5 , 10 ), dtype = np .float32 )
1387
- assert len (x .events ) == 1 , len (x .events )
1387
+ assert len (x .write_events ) == 1 , x .write_events
1388
+ assert len (x .read_events ) == 0 , x .read_events
1388
1389
1389
1390
x .finish ()
1390
1391
1391
- assert len (x .events ) == 0
1392
-
1393
- y = x + x
1394
- assert len (y .events ) == 1
1395
- y = x * x
1396
- assert len (y .events ) == 1
1397
- y = 2 * x
1398
- assert len (y .events ) == 1
1399
- y = 2 / x
1400
- assert len (y .events ) == 1
1401
- y = x / 2
1402
- assert len (y .events ) == 1
1403
- y = x ** 2
1404
- assert len (y .events ) == 1
1405
- y = 2 ** x
1406
- assert len (y .events ) == 1
1392
+ assert len (x .write_events ) == 0
1393
+ assert len (x .read_events ) == 0
1394
+
1395
+ y = x + x
1396
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1397
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 2
1398
+
1399
+ y = x * x
1400
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1401
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 4
1402
+
1403
+ y = 2 * x
1404
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1405
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 5
1406
+
1407
+ y = 2 / x
1408
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1409
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 6
1410
+
1411
+ y = x / 2
1412
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1413
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 7
1414
+
1415
+ y = x ** 2
1416
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1417
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 8
1418
+
1419
+ y = 2 ** x
1420
+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1421
+ assert len (x .write_events ) == 0 and len (x .read_events ) == 9
1422
+
1423
+ x .finish ()
1407
1424
1408
1425
for _i in range (10 ):
1409
1426
x .fill (0 )
1410
1427
1411
- assert len (x .events ) == 10
1428
+ assert len (x .write_events ) == 10
1429
+ assert len (x .read_events ) == 0
1412
1430
1413
1431
for _i in range (1000 ):
1414
1432
x .fill (0 )
1415
1433
1416
- assert len (x .events ) < 100
1434
+ assert len (x .write_events ) < 100
1435
+ assert len (x .read_events ) == 0
1417
1436
1418
1437
# }}}
1419
1438
@@ -1658,7 +1677,7 @@ def test_get_async(ctx_factory):
1658
1677
assert np .abs (b1 - b ).mean () < 1e-5
1659
1678
1660
1679
wait_event = cl .UserEvent (context )
1661
- b_gpu .add_event (wait_event )
1680
+ b_gpu .add_write_event (wait_event )
1662
1681
b , evt = b_gpu .get_async () # testing that this doesn't hang
1663
1682
wait_event .set_status (cl .command_execution_status .COMPLETE )
1664
1683
evt .wait ()
@@ -2296,6 +2315,8 @@ def alloc2(size):
2296
2315
# }}}
2297
2316
2298
2317
2318
+ # {{{ test_logical_and_or
2319
+
2299
2320
def test_logical_and_or (ctx_factory ):
2300
2321
# NOTE: Copied over from pycuda/test/test_gpuarray.py
2301
2322
rng = np .random .default_rng (seed = 0 )
@@ -2349,6 +2370,31 @@ def test_logical_not(ctx_factory):
2349
2370
cl_array .logical_not ((cl_array .zeros (cq , 10 , np .float64 ) + 1 )).get (),
2350
2371
np .logical_not (np .ones (10 )))
2351
2372
2373
+ # }}}
2374
+
2375
+
2376
+ # {{{ test multiple queues
2377
+
2378
+ def test_multiple_queues (ctx_factory ):
2379
+ ctx = ctx_factory ()
2380
+
2381
+ a = [None ] * 3
2382
+ for i in range (len (a )):
2383
+ queue = cl .CommandQueue (ctx )
2384
+ a [i ] = cl_array .arange (queue , 1000 , dtype = np .float32 )
2385
+
2386
+ b = a [i ] + a [i ]
2387
+ b = a [i ] ** 2
2388
+ b = a [i ] + 4000
2389
+ assert len (b .write_events ) == 1
2390
+ assert len (a [i ].read_events ) == 4
2391
+
2392
+ a [i ] = a [i ].with_queue (None )
2393
+
2394
+ b = a [0 ].with_queue (queue ) + a [1 ].with_queue (queue )
2395
+
2396
+ # }}}
2397
+
2352
2398
2353
2399
if __name__ == "__main__" :
2354
2400
if len (sys .argv ) > 1 :
0 commit comments