14
14
#include <umf/memory_provider_ops.h>
15
15
#include <umf/providers/provider_level_zero.h>
16
16
17
+ #include "memory_provider_internal.h"
17
18
#include "provider_ctl_stats_type.h"
18
19
#include "provider_level_zero_internal.h"
19
20
#include "utils_load_library.h"
@@ -32,6 +33,7 @@ void fini_ze_global_state(void) {
32
33
33
34
#include "base_alloc_global.h"
34
35
#include "libumf.h"
36
+ #include "provider_level_zero_internal.h"
35
37
#include "utils_assert.h"
36
38
#include "utils_common.h"
37
39
#include "utils_concurrency.h"
@@ -684,26 +686,6 @@ static umf_result_t ze_memory_provider_get_min_page_size(void *provider,
684
686
return UMF_RESULT_SUCCESS ;
685
687
}
686
688
687
- static umf_result_t ze_memory_provider_purge_lazy (void * provider , void * ptr ,
688
- size_t size ) {
689
- (void )provider ;
690
- (void )ptr ;
691
- (void )size ;
692
-
693
- // TODO not supported yet
694
- return UMF_RESULT_ERROR_NOT_SUPPORTED ;
695
- }
696
-
697
- static umf_result_t ze_memory_provider_purge_force (void * provider , void * ptr ,
698
- size_t size ) {
699
- (void )provider ;
700
- (void )ptr ;
701
- (void )size ;
702
-
703
- // TODO not supported yet
704
- return UMF_RESULT_ERROR_NOT_SUPPORTED ;
705
- }
706
-
707
689
static umf_result_t
708
690
ze_memory_provider_get_recommended_page_size (void * provider , size_t size ,
709
691
size_t * pageSize ) {
@@ -725,32 +707,6 @@ static umf_result_t ze_memory_provider_get_name(void *provider,
725
707
return UMF_RESULT_SUCCESS ;
726
708
}
727
709
728
- static umf_result_t ze_memory_provider_allocation_merge (void * hProvider ,
729
- void * lowPtr ,
730
- void * highPtr ,
731
- size_t totalSize ) {
732
- (void )hProvider ;
733
- (void )lowPtr ;
734
- (void )highPtr ;
735
- (void )totalSize ;
736
-
737
- // TODO not supported yet
738
- return UMF_RESULT_ERROR_NOT_SUPPORTED ;
739
- }
740
-
741
- static umf_result_t ze_memory_provider_allocation_split (void * provider ,
742
- void * ptr ,
743
- size_t totalSize ,
744
- size_t firstSize ) {
745
- (void )provider ;
746
- (void )ptr ;
747
- (void )totalSize ;
748
- (void )firstSize ;
749
-
750
- // TODO not supported yet
751
- return UMF_RESULT_ERROR_NOT_SUPPORTED ;
752
- }
753
-
754
710
typedef struct ze_ipc_data_t {
755
711
int pid ;
756
712
ze_ipc_mem_handle_t ze_handle ;
@@ -871,6 +827,65 @@ static umf_result_t ze_ctl(void *hProvider,
871
827
query_type , arg , size , args );
872
828
}
873
829
830
+ static umf_result_t ze_memory_provider_get_allocation_properties (
831
+ void * provider , const void * ptr ,
832
+ umf_memory_property_id_t memory_property_id , void * value ,
833
+ size_t max_property_size ) {
834
+
835
+ // unused
836
+ (void )max_property_size ;
837
+ (void )ptr ;
838
+
839
+ struct ze_memory_provider_t * ze_provider =
840
+ (struct ze_memory_provider_t * )provider ;
841
+
842
+ switch (memory_property_id ) {
843
+ case UMF_MEMORY_PROPERTY_POINTER_TYPE :
844
+ * (umf_usm_memory_type_t * )value =
845
+ ze2umf_memory_type (ze_provider -> memory_type );
846
+ return UMF_RESULT_SUCCESS ;
847
+
848
+ case UMF_MEMORY_PROPERTY_CONTEXT :
849
+ * (ze_context_handle_t * )value = ze_provider -> context ;
850
+ return UMF_RESULT_SUCCESS ;
851
+
852
+ case UMF_MEMORY_PROPERTY_DEVICE :
853
+ * (ze_device_handle_t * )value = ze_provider -> device ;
854
+ return UMF_RESULT_SUCCESS ;
855
+
856
+ default :
857
+ break ;
858
+ }
859
+
860
+ return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
861
+ }
862
+
863
+ static umf_result_t ze_memory_provider_get_allocation_properties_size (
864
+ void * provider , umf_memory_property_id_t memory_property_id , size_t * size ) {
865
+
866
+ // unused
867
+ (void )provider ;
868
+
869
+ switch (memory_property_id ) {
870
+ case UMF_MEMORY_PROPERTY_POINTER_TYPE :
871
+ * size = sizeof (umf_usm_memory_type_t );
872
+ return UMF_RESULT_SUCCESS ;
873
+
874
+ case UMF_MEMORY_PROPERTY_CONTEXT :
875
+ * size = sizeof (ze_context_handle_t );
876
+ return UMF_RESULT_SUCCESS ;
877
+
878
+ case UMF_MEMORY_PROPERTY_DEVICE :
879
+ * size = sizeof (ze_device_handle_t );
880
+ return UMF_RESULT_SUCCESS ;
881
+
882
+ default :
883
+ break ;
884
+ }
885
+
886
+ return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
887
+ }
888
+
874
889
static umf_memory_provider_ops_t UMF_LEVEL_ZERO_MEMORY_PROVIDER_OPS = {
875
890
.version = UMF_PROVIDER_OPS_VERSION_CURRENT ,
876
891
.initialize = ze_memory_provider_initialize ,
@@ -881,16 +896,20 @@ static umf_memory_provider_ops_t UMF_LEVEL_ZERO_MEMORY_PROVIDER_OPS = {
881
896
.get_recommended_page_size = ze_memory_provider_get_recommended_page_size ,
882
897
.get_min_page_size = ze_memory_provider_get_min_page_size ,
883
898
.get_name = ze_memory_provider_get_name ,
884
- .ext_purge_lazy = ze_memory_provider_purge_lazy ,
885
- .ext_purge_force = ze_memory_provider_purge_force ,
886
- .ext_allocation_merge = ze_memory_provider_allocation_merge ,
887
- .ext_allocation_split = ze_memory_provider_allocation_split ,
899
+ .ext_purge_lazy = NULL ,
900
+ .ext_purge_force = NULL ,
901
+ .ext_allocation_merge = NULL ,
902
+ .ext_allocation_split = NULL ,
888
903
.ext_get_ipc_handle_size = ze_memory_provider_get_ipc_handle_size ,
889
904
.ext_get_ipc_handle = ze_memory_provider_get_ipc_handle ,
890
905
.ext_put_ipc_handle = ze_memory_provider_put_ipc_handle ,
891
906
.ext_open_ipc_handle = ze_memory_provider_open_ipc_handle ,
892
907
.ext_close_ipc_handle = ze_memory_provider_close_ipc_handle ,
893
908
.ext_ctl = ze_ctl ,
909
+ .ext_get_allocation_properties =
910
+ ze_memory_provider_get_allocation_properties ,
911
+ .ext_get_allocation_properties_size =
912
+ ze_memory_provider_get_allocation_properties_size ,
894
913
};
895
914
896
915
const umf_memory_provider_ops_t * umfLevelZeroMemoryProviderOps (void ) {
0 commit comments