@@ -107,6 +107,8 @@ typedef struct ze_ops_t {
107107 ze_result_t (* zeContextMakeMemoryResident )(ze_context_handle_t ,
108108 ze_device_handle_t , void * ,
109109 size_t );
110+ ze_result_t (* zeContextEvictMemory )(ze_context_handle_t , ze_device_handle_t ,
111+ void * , size_t );
110112 ze_result_t (* zeDeviceGetProperties )(ze_device_handle_t ,
111113 ze_device_properties_t * );
112114 ze_result_t (* zeMemFreeExt )(ze_context_handle_t ,
@@ -218,6 +220,8 @@ static void init_ze_global_state(void) {
218220 utils_get_symbol_addr (lib_handle , "zeMemCloseIpcHandle" , lib_name );
219221 * (void * * )& g_ze_ops .zeContextMakeMemoryResident = utils_get_symbol_addr (
220222 lib_handle , "zeContextMakeMemoryResident" , lib_name );
223+ * (void * * )& g_ze_ops .zeContextEvictMemory =
224+ utils_get_symbol_addr (lib_handle , "zeContextEvictMemory" , lib_name );
221225 * (void * * )& g_ze_ops .zeDeviceGetProperties =
222226 utils_get_symbol_addr (lib_handle , "zeDeviceGetProperties" , lib_name );
223227 * (void * * )& g_ze_ops .zeMemFreeExt =
@@ -230,7 +234,8 @@ static void init_ze_global_state(void) {
230234 !g_ze_ops .zeMemGetIpcHandle || !g_ze_ops .zeMemOpenIpcHandle ||
231235 !g_ze_ops .zeMemCloseIpcHandle ||
232236 !g_ze_ops .zeContextMakeMemoryResident ||
233- !g_ze_ops .zeDeviceGetProperties || !g_ze_ops .zeMemGetAllocProperties ) {
237+ !g_ze_ops .zeContextEvictMemory || !g_ze_ops .zeDeviceGetProperties ||
238+ !g_ze_ops .zeMemGetAllocProperties ) {
234239 // g_ze_ops.zeMemPutIpcHandle can be NULL because it was introduced
235240 // starting from Level Zero 1.6
236241 LOG_FATAL ("Required Level Zero symbols not found." );
@@ -1012,8 +1017,9 @@ static int ze_memory_provider_resident_device_change_helper(uintptr_t key,
10121017 change_data -> source_memory_provider -> context ,
10131018 change_data -> peer_device , info -> props .base , info -> props .base_size );
10141019 } else {
1015- result = ZE_RESULT_SUCCESS ;
1016- // TODO: currently not implemented call evict here
1020+ result = g_ze_ops .zeContextEvictMemory (
1021+ change_data -> source_memory_provider -> context ,
1022+ change_data -> peer_device , info -> props .base , info -> props .base_size );
10171023 }
10181024
10191025 if (result != ZE_RESULT_SUCCESS ) {
0 commit comments