@@ -64,6 +64,39 @@ def __copy__(self):
6464 return res
6565
6666
67+ class _NoOpOrderManager :
68+ """Dummy order manager used when queue is in-order."""
69+
70+ def __init__ (self , q : SyclQueue ):
71+ self ._queue = q
72+
73+ def add_event_pair (self , _host_task_ev , _comp_ev ):
74+ pass
75+
76+ @property
77+ def num_host_task_events (self ):
78+ return 0
79+
80+ @property
81+ def num_submitted_events (self ):
82+ return 0
83+
84+ @property
85+ def host_task_events (self ):
86+ return []
87+
88+ @property
89+ def submitted_events (self ):
90+ return []
91+
92+ def wait (self ):
93+ # to imitate SequentialOrderManager, wait on the in-order queue
94+ self ._queue .wait ()
95+
96+ def __copy__ (self ):
97+ return _NoOpOrderManager (self ._queue )
98+
99+
67100class SyclQueueToOrderManagerMap :
68101 """Utility class used to ensure sequential ordering of offloaded tasks
69102 when passed to order manager."""
@@ -76,6 +109,10 @@ def __init__(self):
76109
77110 def __getitem__ (self , q : SyclQueue ) -> _SequentialOrderManager :
78111 """Get order manager for given SyclQueue"""
112+ if q .is_in_order :
113+ # we don't need to cache the NoOpOrderManager since it's stateless
114+ return _NoOpOrderManager (q )
115+
79116 _local = self ._map .get ()
80117 if not isinstance (q , SyclQueue ):
81118 raise TypeError (f"Expected `dpctl.SyclQueue`, got { type (q )} " )
0 commit comments