Fix HSA intercept
Move the HSA intercept to the OnLoad function, so that it is available
as soon as the ROCR is loaded.
Layer the HSA API wrappers on top of the basic HSA activity intercept.
Change-Id: Ie636d59755543cda181e76ec29f0b55081136b63
[ROCm/roctracer commit: e282a82e29]
This commit is contained in:
committed by
Laurent Morichetti
parent
0c3a97a5db
commit
09472d6563
@@ -29,10 +29,10 @@ H_OUT='hsa_prof_str.h'
|
||||
CPP_OUT='hsa_prof_str.inline.h'
|
||||
API_TABLES_H = 'hsa_api_trace.h'
|
||||
API_HEADERS_H = (
|
||||
('CoreApiTable', 'hsa.h'),
|
||||
('AmdExtTable', 'hsa_ext_amd.h'),
|
||||
('ImageExtTable', 'hsa_ext_image.h'),
|
||||
('AmdExtTable', API_TABLES_H),
|
||||
('CoreApi', 'hsa.h'),
|
||||
('AmdExt', 'hsa_ext_amd.h'),
|
||||
('ImageExt', 'hsa_ext_image.h'),
|
||||
('AmdExt', API_TABLES_H),
|
||||
)
|
||||
|
||||
LICENSE = \
|
||||
@@ -106,7 +106,7 @@ class API_TableParser:
|
||||
|
||||
self.inp = open(header, 'r')
|
||||
|
||||
self.beg_pattern = re.compile('^\s*struct\s+' + name + '\s*{\s*$')
|
||||
self.beg_pattern = re.compile('^\s*struct\s+' + name + 'Table\s*{\s*$')
|
||||
self.end_pattern = re.compile('^\s*};\s*$')
|
||||
self.array = []
|
||||
self.parse()
|
||||
@@ -330,9 +330,9 @@ class API_DescrParser:
|
||||
self.cpp_content += 'namespace roctracer {\n'
|
||||
self.cpp_content += 'namespace hsa_support {\n\n'
|
||||
|
||||
self.cpp_content += 'static CoreApiTable CoreApiTable_saved;\n'
|
||||
self.cpp_content += 'static AmdExtTable AmdExtTable_saved;\n'
|
||||
self.cpp_content += 'static ImageExtTable ImageExtTable_saved;\n\n'
|
||||
self.cpp_content += 'static CoreApiTable CoreApi_saved_before_cb;\n'
|
||||
self.cpp_content += 'static AmdExtTable AmdExt_saved_before_cb;\n'
|
||||
self.cpp_content += 'static ImageExtTable ImageExt_saved_before_cb;\n\n'
|
||||
|
||||
self.cpp_content += 'std::atomic<uint64_t> hsa_counter_{1};\n'
|
||||
self.cpp_content += 'static thread_local uint64_t hsa_correlation_id_tls = 0;\n'
|
||||
@@ -428,7 +428,7 @@ class API_DescrParser:
|
||||
content += ' if (api_callback_fun) api_callback_fun(ACTIVITY_DOMAIN_HSA_API, ' + call_id + ', &api_data, api_callback_arg);\n'
|
||||
if ret_type != 'void':
|
||||
content += ' ' + ret_type + ' ret ='
|
||||
content += ' ' + name + '_saved.' + call + '_fn(' + ', '.join(struct['alst']) + ');\n'
|
||||
content += ' ' + name + '_saved_before_cb.' + call + '_fn(' + ', '.join(struct['alst']) + ');\n'
|
||||
if ret_type != 'void':
|
||||
content += ' api_data.' + ret_type + '_retval = ret;\n'
|
||||
content += ' api_data.phase = 1;\n'
|
||||
@@ -444,8 +444,8 @@ class API_DescrParser:
|
||||
if n > 0 and call == '-':
|
||||
content += '};\n'
|
||||
if n == 0 or (call == '-' and name != '-'):
|
||||
content += 'static void intercept_' + name + '(' + name + '* table) {\n'
|
||||
content += ' ' + name + '_saved = *table;\n'
|
||||
content += 'static void Install' + name + 'Wrappers(' + name + 'Table* table) {\n'
|
||||
content += ' ' + name + '_saved_before_cb = *table;\n'
|
||||
if call != '-':
|
||||
if call != 'hsa_shut_down':
|
||||
content += ' table->' + call + '_fn = ' + call + '_callback;\n'
|
||||
|
||||
Reference in New Issue
Block a user