@@ -189,9 +189,8 @@ def get_param_struct_name(func_name):
189
189
struct_name += "params_t"
190
190
return struct_name
191
191
192
- def get_func_list (f ):
192
+ def get_func_list (f , func_list ):
193
193
f .seek (0 )
194
- func_list = []
195
194
for line in f .readlines ():
196
195
if line .find ("ZE_APICALL" ) != - 1 and line .find ("ze_pfn" ) != - 1 :
197
196
items = line .split ("ze_pfn" )
@@ -200,22 +199,6 @@ def get_func_list(f):
200
199
items = items [1 ].split ("Cb_t" )
201
200
assert len (items ) == 2
202
201
func_list .append ("ze" + items [0 ].strip ())
203
- return func_list
204
-
205
- def get_callback_group_map (f ):
206
- group_map = {}
207
-
208
- base_map = get_callback_struct_map (f , "ze_callbacks_t" )
209
- assert len (base_map ) > 0
210
-
211
- for key , value in base_map .items ():
212
- func_map = get_callback_struct_map (f , key )
213
- for fkey , fvalue in func_map .items ():
214
- func_name = get_func_name (fkey )
215
- assert not (func_name in group_map )
216
- group_map [func_name ] = (value , fvalue )
217
-
218
- return group_map
219
202
220
203
def add_param_map (f , func_list , param_map ):
221
204
for func in func_list :
@@ -238,53 +221,24 @@ def get_enum_map(include_path):
238
221
239
222
# Generate Callbacks ##########################################################
240
223
241
- def gen_set_prologues (f , func_list , group_map ):
224
+ def gen_register (f , func_list ):
242
225
for func in func_list :
243
- if not func in group_map :
244
- continue
226
+ reg_fname = "ZeLoader::get().zelTracer" + func [2 :] + "RegisterCallback_"
227
+ f .write (" if (" + reg_fname + " != nullptr) {\n " );
228
+ f .write (" status = " + reg_fname + "(tracer, ZEL_REGISTER_PROLOGUE, " + func + "OnEnter);\n " )
229
+ f .write (" PTI_ASSERT(status == ZE_RESULT_SUCCESS);\n " )
230
+ f .write (" status = " + reg_fname + "(tracer, ZEL_REGISTER_EPILOGUE, " + func + "OnExit);\n " )
231
+ f .write (" PTI_ASSERT(status == ZE_RESULT_SUCCESS);\n " )
232
+ f .write (" }\n " )
245
233
246
- group , callback = group_map [func ]
247
- group_name = group [0 ]
248
- group_cond = group [1 ]
249
- assert not group_cond
250
- callback_name = callback [0 ]
251
- callback_cond = callback [1 ]
252
- if callback_cond :
253
- f .write ("#if " + callback_cond + "\n " )
254
- f .write (" prologue." + group_name + "." + callback_name + " = " + func + "OnEnter;\n " )
255
- f .write (" epilogue." + group_name + "." + callback_name + " = " + func + "OnExit;\n " )
256
- if callback_cond :
257
- f .write ("#endif //" + callback_cond + "\n " )
258
-
259
- def gen_exp_register (f , exp_func_list ):
260
- for func in exp_func_list :
261
- f .write (" status = zelTracer" + func [2 :] + "RegisterCallback(tracer, ZEL_REGISTER_PROLOGUE, " + func + "OnEnter);\n " )
262
- f .write (" PTI_ASSERT(status == ZE_RESULT_SUCCESS);\n " )
263
- f .write (" status = zelTracer" + func [2 :] + "RegisterCallback(tracer, ZEL_REGISTER_EPILOGUE, " + func + "OnExit);\n " )
264
- f .write (" PTI_ASSERT(status == ZE_RESULT_SUCCESS);\n " )
265
-
266
- def gen_api (f , func_list , kfunc_list , group_map , exp_func_list , kexp_func_list ):
234
+ def gen_api (f , func_list , kfunc_list ):
267
235
f .write ("void EnableTracing(zel_tracer_handle_t tracer) {\n " )
268
- f .write (" zet_core_callbacks_t prologue = {};\n " )
269
- f .write (" zet_core_callbacks_t epilogue = {};\n " )
270
- f .write ("\n " )
271
- f .write (" if (options_.api_tracing) {\n " )
272
- gen_set_prologues (f , func_list , group_map )
273
- f .write (" }\n " )
274
- f .write (" else if (options_.kernel_tracing) {\n " )
275
- gen_set_prologues (f , kfunc_list , group_map )
276
- f .write (" }\n " )
277
- f .write ("\n " )
278
236
f .write (" ze_result_t status = ZE_RESULT_SUCCESS;\n " )
279
- f .write (" status = zelTracerSetPrologues(tracer, &prologue);\n " )
280
- f .write (" PTI_ASSERT(status == ZE_RESULT_SUCCESS);\n " )
281
- f .write (" status = zelTracerSetEpilogues(tracer, &epilogue);\n " )
282
- f .write (" PTI_ASSERT(status == ZE_RESULT_SUCCESS);\n " )
283
237
f .write (" if (options_.api_tracing) {\n " )
284
- gen_exp_register (f , exp_func_list )
238
+ gen_register (f , func_list )
285
239
f .write (" }\n " )
286
240
f .write (" else if (options_.kernel_tracing) {\n " )
287
- gen_exp_register (f , kexp_func_list )
241
+ gen_register (f , kfunc_list )
288
242
f .write (" }\n " )
289
243
f .write ("\n " )
290
244
f .write (" status = zelTracerSetEnabled(tracer, true);\n " )
@@ -822,38 +776,8 @@ def gen_exit_callback(f, func, submission_func_list, synchronize_func_list_on_en
822
776
f .write (" start_time_host, end_time_host);\n " )
823
777
f .write (" }\n " )
824
778
825
- def gen_callbacks (f , func_list , command_list_func_list , command_queue_func_list , submission_func_list , synchronize_func_list_on_enter , synchronize_func_list_on_exit , group_map , param_map , enum_map ):
779
+ def gen_callbacks (f , func_list , command_list_func_list , command_queue_func_list , submission_func_list , synchronize_func_list_on_enter , synchronize_func_list_on_exit , param_map , enum_map ):
826
780
for func in func_list :
827
- if not func in group_map :
828
- continue
829
-
830
- assert func in param_map
831
- group , callback = group_map [func ]
832
- callback_name = callback [0 ]
833
- callback_cond = callback [1 ]
834
- if callback_cond :
835
- f .write ("#if " + callback_cond + "\n " )
836
- f .write ("static void " + func + "OnEnter(\n " )
837
- f .write (" " + get_param_struct_name (func ) + "* params,\n " )
838
- f .write (" ze_result_t result,\n " )
839
- f .write (" void* global_user_data,\n " )
840
- f .write (" void** instance_user_data) {\n " )
841
- gen_enter_callback (f , func , command_list_func_list , command_queue_func_list , synchronize_func_list_on_enter , param_map [func ], enum_map )
842
- f .write ("}\n " )
843
- f .write ("\n " )
844
- f .write ("static void " + func + "OnExit(\n " )
845
- f .write (" " + get_param_struct_name (func ) + "* params,\n " )
846
- f .write (" ze_result_t result,\n " )
847
- f .write (" void* global_user_data,\n " )
848
- f .write (" void** instance_user_data) {\n " )
849
- gen_exit_callback (f , func , submission_func_list , synchronize_func_list_on_enter , synchronize_func_list_on_exit , param_map [func ], enum_map )
850
- f .write ("}\n " )
851
- if callback_cond :
852
- f .write ("#endif //" + callback_cond + "\n " )
853
- f .write ("\n " )
854
-
855
- def gen_exp_callbacks (f , exp_func_list , command_list_func_list , command_queue_func_list , submission_func_list , synchronize_func_list_on_enter , synchronize_func_list_on_exit , group_map , param_map , enum_map ):
856
- for func in exp_func_list :
857
781
assert func in param_map
858
782
f .write ("static void " + func + "OnEnter(\n " )
859
783
f .write (" " + get_param_struct_name (func ) + "* params,\n " )
@@ -890,13 +814,21 @@ def main():
890
814
l0_path = sys .argv [2 ]
891
815
l0_file_path = os .path .join (l0_path , "ze_api.h" )
892
816
817
+ func_list = []
818
+ param_map = {}
819
+
893
820
l0_file = open (l0_file_path , "rt" )
894
- func_list = get_func_list (l0_file )
821
+ get_func_list (l0_file , func_list )
822
+ add_param_map (l0_file , func_list , param_map )
895
823
896
824
l0_exp_path = os .path .join (l0_path , "layers" , "zel_tracing_register_cb.h" )
897
825
l0_exp_file = open (l0_exp_path , "rt" )
898
- exp_func_list = get_func_list (l0_exp_file )
899
-
826
+ exp_func_list = []
827
+ get_func_list (l0_exp_file , exp_func_list )
828
+ add_param_map (l0_exp_file , exp_func_list , param_map )
829
+
830
+ func_list += exp_func_list
831
+
900
832
kfunc_list = [
901
833
"zeEventDestroy" ,
902
834
"zeEventHostReset" ,
@@ -934,9 +866,9 @@ def main():
934
866
"zeEventHostSynchronize" ,
935
867
"zeEventQueryStatus" ,
936
868
"zeFenceHostSynchronize" ,
937
- "zeContextDestroy" ]
938
- kexp_func_list = [
869
+ "zeContextDestroy" ,
939
870
"zeCommandListImmediateAppendCommandListsExp" ]
871
+
940
872
command_list_func_list = [
941
873
"zeCommandListAppendEventReset" ,
942
874
"zeCommandListAppendLaunchKernel" ,
@@ -973,17 +905,12 @@ def main():
973
905
"zeFenceHostSynchronize" ,
974
906
"zeCommandQueueSynchronize" ]
975
907
976
- group_map = get_callback_group_map (l0_file )
977
- param_map = {}
978
- add_param_map (l0_file , func_list , param_map )
979
- add_param_map (l0_exp_file , exp_func_list , param_map )
980
908
enum_map = get_enum_map (l0_path )
981
909
982
910
gen_result_converter (dst_file , enum_map )
983
911
gen_structure_type_converter (dst_file , enum_map )
984
- gen_callbacks (dst_file , func_list , command_list_func_list , command_queue_func_list , submission_func_list , synchronize_func_list_on_enter , synchronize_func_list_on_exit , group_map , param_map , enum_map )
985
- gen_exp_callbacks (dst_file , exp_func_list , command_list_func_list , command_queue_func_list , submission_func_list , synchronize_func_list_on_enter , synchronize_func_list_on_exit , group_map , param_map , enum_map )
986
- gen_api (dst_file , func_list , kfunc_list , group_map , exp_func_list , kexp_func_list )
912
+ gen_callbacks (dst_file , func_list , command_list_func_list , command_queue_func_list , submission_func_list , synchronize_func_list_on_enter , synchronize_func_list_on_exit , param_map , enum_map )
913
+ gen_api (dst_file , func_list , kfunc_list )
987
914
988
915
l0_exp_file .close ()
989
916
l0_file .close ()
0 commit comments