@@ -1351,36 +1351,55 @@ def test_event_management(ctx_factory):
13511351 from pyopencl .clrandom import rand as clrand
13521352
13531353 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
13551356
13561357 x .finish ()
13571358
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 ()
13741391
13751392 for _i in range (10 ):
13761393 x .fill (0 )
13771394
1378- assert len (x .events ) == 10
1395+ assert len (x .write_events ) == 10
1396+ assert len (x .read_events ) == 0
13791397
13801398 for _i in range (1000 ):
13811399 x .fill (0 )
13821400
1383- assert len (x .events ) < 100
1401+ assert len (x .write_events ) < 100
1402+ assert len (x .read_events ) == 0
13841403
13851404# }}}
13861405
@@ -1624,7 +1643,7 @@ def test_get_async(ctx_factory):
16241643 assert np .abs (b1 - b ).mean () < 1e-5
16251644
16261645 wait_event = cl .UserEvent (context )
1627- b_gpu .add_event (wait_event )
1646+ b_gpu .add_write_event (wait_event )
16281647 b , evt = b_gpu .get_async () # testing that this doesn't hang
16291648 wait_event .set_status (cl .command_execution_status .COMPLETE )
16301649 evt .wait ()
@@ -2262,6 +2281,29 @@ def alloc2(size):
22622281# }}}
22632282
22642283
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+
22652307if __name__ == "__main__" :
22662308 if len (sys .argv ) > 1 :
22672309 exec (sys .argv [1 ])
0 commit comments