@@ -1373,36 +1373,55 @@ def test_event_management(ctx_factory):
13731373 from pyopencl .clrandom import rand as clrand
13741374
13751375 x = clrand (queue , (5 , 10 ), dtype = np .float32 )
1376- assert len (x .events ) == 1 , len (x .events )
1376+ assert len (x .write_events ) == 1 , x .write_events
1377+ assert len (x .read_events ) == 0 , x .read_events
13771378
13781379 x .finish ()
13791380
1380- assert len (x .events ) == 0
1381-
1382- y = x + x
1383- assert len (y .events ) == 1
1384- y = x * x
1385- assert len (y .events ) == 1
1386- y = 2 * x
1387- assert len (y .events ) == 1
1388- y = 2 / x
1389- assert len (y .events ) == 1
1390- y = x / 2
1391- assert len (y .events ) == 1
1392- y = x ** 2
1393- assert len (y .events ) == 1
1394- y = 2 ** x
1395- assert len (y .events ) == 1
1381+ assert len (x .write_events ) == 0
1382+ assert len (x .read_events ) == 0
1383+
1384+ y = x + x
1385+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1386+ assert len (x .write_events ) == 0 and len (x .read_events ) == 2
1387+
1388+ y = x * x
1389+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1390+ assert len (x .write_events ) == 0 and len (x .read_events ) == 4
1391+
1392+ y = 2 * x
1393+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1394+ assert len (x .write_events ) == 0 and len (x .read_events ) == 5
1395+
1396+ y = 2 / x
1397+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1398+ assert len (x .write_events ) == 0 and len (x .read_events ) == 6
1399+
1400+ y = x / 2
1401+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1402+ assert len (x .write_events ) == 0 and len (x .read_events ) == 7
1403+
1404+ y = x ** 2
1405+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1406+ assert len (x .write_events ) == 0 and len (x .read_events ) == 8
1407+
1408+ y = 2 ** x
1409+ assert len (y .write_events ) == 1 and len (y .read_events ) == 0
1410+ assert len (x .write_events ) == 0 and len (x .read_events ) == 9
1411+
1412+ x .finish ()
13961413
13971414 for _i in range (10 ):
13981415 x .fill (0 )
13991416
1400- assert len (x .events ) == 10
1417+ assert len (x .write_events ) == 10
1418+ assert len (x .read_events ) == 0
14011419
14021420 for _i in range (1000 ):
14031421 x .fill (0 )
14041422
1405- assert len (x .events ) < 100
1423+ assert len (x .write_events ) < 100
1424+ assert len (x .read_events ) == 0
14061425
14071426# }}}
14081427
@@ -1648,7 +1667,7 @@ def test_get_async(ctx_factory):
16481667 assert np .abs (b1 - b ).mean () < 1e-5
16491668
16501669 wait_event = cl .UserEvent (context )
1651- b_gpu .add_event (wait_event )
1670+ b_gpu .add_write_event (wait_event )
16521671 b , evt = b_gpu .get_async () # testing that this doesn't hang
16531672 wait_event .set_status (cl .command_execution_status .COMPLETE )
16541673 evt .wait ()
@@ -2286,6 +2305,8 @@ def alloc2(size):
22862305# }}}
22872306
22882307
2308+ # {{{ test_logical_and_or
2309+
22892310def test_logical_and_or (ctx_factory ):
22902311 # NOTE: Copied over from pycuda/test/test_gpuarray.py
22912312 rng = np .random .default_rng (seed = 0 )
@@ -2339,6 +2360,31 @@ def test_logical_not(ctx_factory):
23392360 cl_array .logical_not (cl_array .zeros (cq , 10 , np .float64 ) + 1 ).get (),
23402361 np .logical_not (np .ones (10 )))
23412362
2363+ # }}}
2364+
2365+
2366+ # {{{ test multiple queues
2367+
2368+ def test_multiple_queues (ctx_factory ):
2369+ ctx = ctx_factory ()
2370+
2371+ a = [None ] * 3
2372+ for i in range (len (a )):
2373+ queue = cl .CommandQueue (ctx )
2374+ a [i ] = cl_array .arange (queue , 1000 , dtype = np .float32 )
2375+
2376+ b = a [i ] + a [i ]
2377+ b = a [i ] ** 2
2378+ b = a [i ] + 4000
2379+ assert len (b .write_events ) == 1
2380+ assert len (a [i ].read_events ) == 4
2381+
2382+ a [i ] = a [i ].with_queue (None )
2383+
2384+ b = a [0 ].with_queue (queue ) + a [1 ].with_queue (queue )
2385+
2386+ # }}}
2387+
23422388
23432389# {{{ test XDG_CACHE_HOME handling
23442390
0 commit comments