@@ -34,6 +34,9 @@ from ._backend cimport ( # noqa: E211
3434 DPCTLDevice_GetBackend,
3535 DPCTLDevice_GetDeviceType,
3636 DPCTLDevice_GetDriverVersion,
37+ DPCTLDevice_GetGlobalMemCacheLineSize,
38+ DPCTLDevice_GetGlobalMemCacheSize,
39+ DPCTLDevice_GetGlobalMemCacheType,
3740 DPCTLDevice_GetGlobalMemSize,
3841 DPCTLDevice_GetImage2dMaxHeight,
3942 DPCTLDevice_GetImage2dMaxWidth,
@@ -87,12 +90,13 @@ from ._backend cimport ( # noqa: E211
8790 _aspect_type,
8891 _backend_type,
8992 _device_type,
93+ _global_mem_cache_type,
9094 _partition_affinity_domain_type,
9195)
9296
93- from .enum_types import backend_type, device_type
97+ from .enum_types import backend_type, device_type, global_mem_cache_type
9498
95- from libc.stdint cimport int64_t, uint32_t
99+ from libc.stdint cimport int64_t, uint32_t, uint64_t
96100from libc.stdlib cimport free, malloc
97101
98102from ._sycl_platform cimport SyclPlatform
@@ -1098,6 +1102,52 @@ cdef class SyclDevice(_SyclDevice):
10981102 raise RuntimeError (" Failed to get device timer resolution." )
10991103 return timer_res
11001104
1105+ @property
1106+ def global_mem_cache_type (self ):
1107+ """ Global device cache memory type.
1108+
1109+ Returns:
1110+ global_mem_cache_type: type of cache memory
1111+ Raises:
1112+ A RuntimeError is raised if an unrecognized memory type
1113+ is reported by runtime.
1114+ """
1115+ cdef _global_mem_cache_type gmcTy = (
1116+ DPCTLDevice_GetGlobalMemCacheType(self ._device_ref)
1117+ )
1118+ if gmcTy == _global_mem_cache_type._MEM_CACHE_TYPE_READ_WRITE:
1119+ return global_mem_cache_type.read_write
1120+ elif gmcTy == _global_mem_cache_type._MEM_CACHE_TYPE_READ_ONLY:
1121+ return global_mem_cache_type.read_only
1122+ elif gmcTy == _global_mem_cache_type._MEM_CACHE_TYPE_NONE:
1123+ return global_mem_cache_type.none
1124+ elif gmcTy == _global_mem_cache_type._MEM_CACHE_TYPE_INDETERMINATE:
1125+ raise RuntimeError (" Unrecognized global memory cache type reported" )
1126+
1127+ @property
1128+ def global_mem_cache_size (self ):
1129+ """ Global device memory cache size.
1130+
1131+ Returns:
1132+ int: Cache size in bytes
1133+ """
1134+ cdef uint64_t cache_sz = DPCTLDevice_GetGlobalMemCacheSize(
1135+ self ._device_ref
1136+ )
1137+ return cache_sz
1138+
1139+ @property
1140+ def global_mem_cache_line_size (self ):
1141+ """ Global device memory cache line size.
1142+
1143+ Returns:
1144+ int: Cache size in bytes
1145+ """
1146+ cdef uint64_t cache_line_sz = DPCTLDevice_GetGlobalMemCacheLineSize(
1147+ self ._device_ref
1148+ )
1149+ return cache_line_sz
1150+
11011151 cdef cpp_bool equals(self , SyclDevice other):
11021152 """ Returns ``True`` if the :class:`dpctl.SyclDevice` argument has the
11031153 same _device_ref as this SyclDevice.
0 commit comments