@@ -1384,36 +1384,55 @@ def test_event_management(ctx_factory):
13841384 from pyopencl .clrandom import rand as clrand
13851385
13861386 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
13881389
13891390 x .finish ()
13901391
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 ()
14071424
14081425 for _i in range (10 ):
14091426 x .fill (0 )
14101427
1411- assert len (x .events ) == 10
1428+ assert len (x .write_events ) == 10
1429+ assert len (x .read_events ) == 0
14121430
14131431 for _i in range (1000 ):
14141432 x .fill (0 )
14151433
1416- assert len (x .events ) < 100
1434+ assert len (x .write_events ) < 100
1435+ assert len (x .read_events ) == 0
14171436
14181437# }}}
14191438
@@ -1658,7 +1677,7 @@ def test_get_async(ctx_factory):
16581677 assert np .abs (b1 - b ).mean () < 1e-5
16591678
16601679 wait_event = cl .UserEvent (context )
1661- b_gpu .add_event (wait_event )
1680+ b_gpu .add_write_event (wait_event )
16621681 b , evt = b_gpu .get_async () # testing that this doesn't hang
16631682 wait_event .set_status (cl .command_execution_status .COMPLETE )
16641683 evt .wait ()
@@ -2296,6 +2315,8 @@ def alloc2(size):
22962315# }}}
22972316
22982317
2318+ # {{{ test_logical_and_or
2319+
22992320def test_logical_and_or (ctx_factory ):
23002321 # NOTE: Copied over from pycuda/test/test_gpuarray.py
23012322 rng = np .random .default_rng (seed = 0 )
@@ -2349,6 +2370,31 @@ def test_logical_not(ctx_factory):
23492370 cl_array .logical_not ((cl_array .zeros (cq , 10 , np .float64 ) + 1 )).get (),
23502371 np .logical_not (np .ones (10 )))
23512372
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+
23522398
23532399if __name__ == "__main__" :
23542400 if len (sys .argv ) > 1 :
0 commit comments