From 8daca712f78ff525ef4673363617d82bf9a56f0a Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Tue, 21 Feb 2023 04:37:06 -0600 Subject: [PATCH 1/3] get_device_cached_queue now supports filter selector strings ``` In [1]: import dpctl In [2]: import dpctl._sycl_queue_manager as qm In [3]: qm.__pyx_capi__ Out[3]: {'get_current_queue': , 'get_current_device_type': , 'get_current_backend': , 'get_device_cached_queue': } In [4]: qm.get_device_cached_queue("cpu") Out[4]: In [5]: qm.get_device_cached_queue("gpu") Out[5]: ``` --- dpctl/_sycl_queue_manager.pyx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dpctl/_sycl_queue_manager.pyx b/dpctl/_sycl_queue_manager.pyx index 9f92f52092..68dd0202a9 100644 --- a/dpctl/_sycl_queue_manager.pyx +++ b/dpctl/_sycl_queue_manager.pyx @@ -310,6 +310,9 @@ cdef class _DeviceDefaultQueueCache: elif isinstance(key, SyclDevice): q = SyclQueue(key) ctx_dev = q.sycl_context, key + elif isinstance(key, str): + q = SyclQueue(key) + ctx_dev = q.sycl_context, q.sycl_device else: raise TypeError if ctx_dev in self.__device_queue_map__: From 8f223d0424e3b2c2c27d7d1ecea3c09726a22900 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Tue, 21 Feb 2023 04:37:36 -0600 Subject: [PATCH 2/3] Exercise get_device_cached_queue with filter selector string --- dpctl/tests/test_sycl_queue_manager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dpctl/tests/test_sycl_queue_manager.py b/dpctl/tests/test_sycl_queue_manager.py index d694650b43..a0ea691b7b 100644 --- a/dpctl/tests/test_sycl_queue_manager.py +++ b/dpctl/tests/test_sycl_queue_manager.py @@ -245,3 +245,5 @@ def test__DeviceDefaultQueueCache(): assert not changed assert q1 == q2 + q3 = get_device_cached_queue(d.filter_string) + assert q3 == q1 From 432972207aca395d90790563a7d8c431ad3fed20 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Tue, 21 Feb 2023 15:14:37 -0600 Subject: [PATCH 3/3] Complied with black formatting --- dpctl/_sycl_queue_manager.pyx | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/dpctl/_sycl_queue_manager.pyx b/dpctl/_sycl_queue_manager.pyx index 68dd0202a9..15df68e034 100644 --- a/dpctl/_sycl_queue_manager.pyx +++ b/dpctl/_sycl_queue_manager.pyx @@ -303,8 +303,14 @@ cdef class _DeviceDefaultQueueCache: self.__device_queue_map__ = dict() def get_or_create(self, key): - """Return instance of SyclQueue and indicator if cache has been modified""" - if isinstance(key, tuple) and len(key) == 2 and isinstance(key[0], SyclContext) and isinstance(key[1], SyclDevice): + """Return instance of SyclQueue and indicator if cache + has been modified""" + if ( + isinstance(key, tuple) + and len(key) == 2 + and isinstance(key[0], SyclContext) + and isinstance(key[1], SyclDevice) + ): ctx_dev = key q = None elif isinstance(key, SyclDevice): @@ -325,12 +331,16 @@ cdef class _DeviceDefaultQueueCache: self.__device_queue_map__.update(dev_queue_map) def __copy__(self): - cdef _DeviceDefaultQueueCache _copy = _DeviceDefaultQueueCache.__new__(_DeviceDefaultQueueCache) + cdef _DeviceDefaultQueueCache _copy = _DeviceDefaultQueueCache.__new__( + _DeviceDefaultQueueCache) _copy._update_map(self.__device_queue_map__) return _copy -_global_device_queue_cache = ContextVar('global_device_queue_cache', default=_DeviceDefaultQueueCache()) +_global_device_queue_cache = ContextVar( + 'global_device_queue_cache', + default=_DeviceDefaultQueueCache() +) cpdef object get_device_cached_queue(object key):