forked from OSchip/llvm-project
Fix large overhead with itt notifications on region/barrier name composing
Currently, there is a big overhead in reporting of loop metadata through ittnotify. The pair of functions: __kmp_str_loc_init/__kmp_str_loc_free are replaced with strchr/atoi calls. Thus, a lot of time consuming actions are skipped - many memory allocations/deallocations, heavy string duplication, etc. The loop metadata only needs line and column info from the source string, so no allocations and string splitting actually needed. Patch by Andrey Churbanov Differential Revision: http://reviews.llvm.org/D21309 llvm-svn: 272698
This commit is contained in:
parent
e85ba3f58f
commit
614bb6618e
|
@ -348,17 +348,31 @@ __kmp_itt_metadata_loop( ident_t * loc, kmp_uint64 sched_type, kmp_uint64 iterat
|
|||
}
|
||||
|
||||
__itt_string_handle * string_handle = __itt_string_handle_create( "omp_metadata_loop");
|
||||
kmp_str_loc_t str_loc = __kmp_str_loc_init( loc->psource, 1 );
|
||||
|
||||
// Parse line and column from psource string: ";file;func;line;col;;"
|
||||
char * s_line;
|
||||
char * s_col;
|
||||
KMP_DEBUG_ASSERT(loc->psource);
|
||||
#ifdef __cplusplus
|
||||
s_line = strchr((char*)loc->psource, ';');
|
||||
#else
|
||||
s_line = strchr(loc->psource, ';');
|
||||
#endif
|
||||
KMP_DEBUG_ASSERT(s_line);
|
||||
s_line = strchr(s_line + 1, ';'); // 2-nd semicolon
|
||||
KMP_DEBUG_ASSERT(s_line);
|
||||
s_line = strchr(s_line + 1, ';'); // 3-rd semicolon
|
||||
KMP_DEBUG_ASSERT(s_line);
|
||||
s_col = strchr(s_line + 1, ';'); // 4-th semicolon
|
||||
KMP_DEBUG_ASSERT(s_col);
|
||||
|
||||
kmp_uint64 loop_data[ 5 ];
|
||||
loop_data[ 0 ] = str_loc.line;
|
||||
loop_data[ 1 ] = str_loc.col;
|
||||
loop_data[ 0 ] = atoi(s_line + 1); // read line
|
||||
loop_data[ 1 ] = atoi(s_col + 1); // read column
|
||||
loop_data[ 2 ] = sched_type;
|
||||
loop_data[ 3 ] = iterations;
|
||||
loop_data[ 4 ] = chunk;
|
||||
|
||||
__kmp_str_loc_free( &str_loc );
|
||||
|
||||
__itt_metadata_add(metadata_domain, __itt_null, string_handle, __itt_metadata_u64, 5, loop_data);
|
||||
#endif
|
||||
} // __kmp_itt_metadata_loop
|
||||
|
|
Loading…
Reference in New Issue