forked from OSchip/llvm-project
				
			Reduce perf impact of redundant ittnotify calls
Improved performance of ittnotify calls by request from ittnotify owner: calls to __itt_string_handle_create made unique (it was called multiple times). Patch by Andrey Churbanov Differential Revision: http://reviews.llvm.org/D21353 llvm-svn: 272945
This commit is contained in:
		
							parent
							
								
									216d0a1674
								
							
						
					
					
						commit
						4ba3b0cda9
					
				| 
						 | 
					@ -32,6 +32,9 @@
 | 
				
			||||||
    __itt_domain* __kmp_itt_imbalance_domains[KMP_MAX_FRAME_DOMAINS];
 | 
					    __itt_domain* __kmp_itt_imbalance_domains[KMP_MAX_FRAME_DOMAINS];
 | 
				
			||||||
    kmp_int32 __kmp_itt_region_team_size[KMP_MAX_FRAME_DOMAINS];
 | 
					    kmp_int32 __kmp_itt_region_team_size[KMP_MAX_FRAME_DOMAINS];
 | 
				
			||||||
    __itt_domain * metadata_domain = NULL;
 | 
					    __itt_domain * metadata_domain = NULL;
 | 
				
			||||||
 | 
					    __itt_string_handle * string_handle_imbl = NULL;
 | 
				
			||||||
 | 
					    __itt_string_handle * string_handle_loop = NULL;
 | 
				
			||||||
 | 
					    __itt_string_handle * string_handle_sngl = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #include "kmp_version.h"
 | 
					    #include "kmp_version.h"
 | 
				
			||||||
    #include "kmp_i18n.h"
 | 
					    #include "kmp_i18n.h"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -264,6 +264,9 @@ __kmp_inline void __kmp_itt_stack_callee_leave(__itt_caller);
 | 
				
			||||||
    extern __itt_domain* __kmp_itt_imbalance_domains[KMP_MAX_FRAME_DOMAINS];
 | 
					    extern __itt_domain* __kmp_itt_imbalance_domains[KMP_MAX_FRAME_DOMAINS];
 | 
				
			||||||
    extern kmp_int32 __kmp_itt_region_team_size[KMP_MAX_FRAME_DOMAINS];
 | 
					    extern kmp_int32 __kmp_itt_region_team_size[KMP_MAX_FRAME_DOMAINS];
 | 
				
			||||||
    extern __itt_domain * metadata_domain;
 | 
					    extern __itt_domain * metadata_domain;
 | 
				
			||||||
 | 
					    extern __itt_string_handle * string_handle_imbl;
 | 
				
			||||||
 | 
					    extern __itt_string_handle * string_handle_loop;
 | 
				
			||||||
 | 
					    extern __itt_string_handle * string_handle_sngl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -315,20 +315,21 @@ __kmp_itt_metadata_imbalance( int gtid, kmp_uint64 begin, kmp_uint64 end, kmp_ui
 | 
				
			||||||
        if( metadata_domain == NULL) {
 | 
					        if( metadata_domain == NULL) {
 | 
				
			||||||
            __itt_suppress_push(__itt_suppress_memory_errors);
 | 
					            __itt_suppress_push(__itt_suppress_memory_errors);
 | 
				
			||||||
            metadata_domain = __itt_domain_create( "OMP Metadata" );
 | 
					            metadata_domain = __itt_domain_create( "OMP Metadata" );
 | 
				
			||||||
 | 
					            string_handle_imbl = __itt_string_handle_create( "omp_metadata_imbalance");
 | 
				
			||||||
 | 
					            string_handle_loop = __itt_string_handle_create( "omp_metadata_loop");
 | 
				
			||||||
 | 
					            string_handle_sngl = __itt_string_handle_create( "omp_metadata_single");
 | 
				
			||||||
            __itt_suppress_pop();
 | 
					            __itt_suppress_pop();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        __kmp_release_bootstrap_lock( & metadata_lock );
 | 
					        __kmp_release_bootstrap_lock( & metadata_lock );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __itt_string_handle * string_handle = __itt_string_handle_create( "omp_metadata_imbalance");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    kmp_uint64 imbalance_data[ 4 ];
 | 
					    kmp_uint64 imbalance_data[ 4 ];
 | 
				
			||||||
    imbalance_data[ 0 ] = begin;
 | 
					    imbalance_data[ 0 ] = begin;
 | 
				
			||||||
    imbalance_data[ 1 ] = end;
 | 
					    imbalance_data[ 1 ] = end;
 | 
				
			||||||
    imbalance_data[ 2 ] = imbalance;
 | 
					    imbalance_data[ 2 ] = imbalance;
 | 
				
			||||||
    imbalance_data[ 3 ] = reduction;
 | 
					    imbalance_data[ 3 ] = reduction;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __itt_metadata_add(metadata_domain, __itt_null, string_handle, __itt_metadata_u64, 4, imbalance_data);
 | 
					    __itt_metadata_add(metadata_domain, __itt_null, string_handle_imbl, __itt_metadata_u64, 4, imbalance_data);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
} // __kmp_itt_metadata_imbalance
 | 
					} // __kmp_itt_metadata_imbalance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -342,13 +343,14 @@ __kmp_itt_metadata_loop( ident_t * loc, kmp_uint64 sched_type, kmp_uint64 iterat
 | 
				
			||||||
        if( metadata_domain == NULL) {
 | 
					        if( metadata_domain == NULL) {
 | 
				
			||||||
            __itt_suppress_push(__itt_suppress_memory_errors);
 | 
					            __itt_suppress_push(__itt_suppress_memory_errors);
 | 
				
			||||||
            metadata_domain = __itt_domain_create( "OMP Metadata" );
 | 
					            metadata_domain = __itt_domain_create( "OMP Metadata" );
 | 
				
			||||||
 | 
					            string_handle_imbl = __itt_string_handle_create( "omp_metadata_imbalance");
 | 
				
			||||||
 | 
					            string_handle_loop = __itt_string_handle_create( "omp_metadata_loop");
 | 
				
			||||||
 | 
					            string_handle_sngl = __itt_string_handle_create( "omp_metadata_single");
 | 
				
			||||||
            __itt_suppress_pop();
 | 
					            __itt_suppress_pop();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        __kmp_release_bootstrap_lock( & metadata_lock );
 | 
					        __kmp_release_bootstrap_lock( & metadata_lock );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __itt_string_handle * string_handle = __itt_string_handle_create( "omp_metadata_loop");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Parse line and column from psource string: ";file;func;line;col;;"
 | 
					    // Parse line and column from psource string: ";file;func;line;col;;"
 | 
				
			||||||
    char * s_line;
 | 
					    char * s_line;
 | 
				
			||||||
    char * s_col;
 | 
					    char * s_col;
 | 
				
			||||||
| 
						 | 
					@ -373,7 +375,7 @@ __kmp_itt_metadata_loop( ident_t * loc, kmp_uint64 sched_type, kmp_uint64 iterat
 | 
				
			||||||
    loop_data[ 3 ] = iterations;
 | 
					    loop_data[ 3 ] = iterations;
 | 
				
			||||||
    loop_data[ 4 ] = chunk;
 | 
					    loop_data[ 4 ] = chunk;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __itt_metadata_add(metadata_domain, __itt_null, string_handle, __itt_metadata_u64, 5, loop_data);
 | 
					    __itt_metadata_add(metadata_domain, __itt_null, string_handle_loop, __itt_metadata_u64, 5, loop_data);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
} // __kmp_itt_metadata_loop
 | 
					} // __kmp_itt_metadata_loop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -387,12 +389,14 @@ __kmp_itt_metadata_single( ident_t * loc ) {
 | 
				
			||||||
        if( metadata_domain == NULL) {
 | 
					        if( metadata_domain == NULL) {
 | 
				
			||||||
            __itt_suppress_push(__itt_suppress_memory_errors);
 | 
					            __itt_suppress_push(__itt_suppress_memory_errors);
 | 
				
			||||||
            metadata_domain = __itt_domain_create( "OMP Metadata" );
 | 
					            metadata_domain = __itt_domain_create( "OMP Metadata" );
 | 
				
			||||||
 | 
					            string_handle_imbl = __itt_string_handle_create( "omp_metadata_imbalance");
 | 
				
			||||||
 | 
					            string_handle_loop = __itt_string_handle_create( "omp_metadata_loop");
 | 
				
			||||||
 | 
					            string_handle_sngl = __itt_string_handle_create( "omp_metadata_single");
 | 
				
			||||||
            __itt_suppress_pop();
 | 
					            __itt_suppress_pop();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        __kmp_release_bootstrap_lock( & metadata_lock );
 | 
					        __kmp_release_bootstrap_lock( & metadata_lock );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __itt_string_handle * string_handle = __itt_string_handle_create( "omp_metadata_single");
 | 
					 | 
				
			||||||
    kmp_str_loc_t str_loc = __kmp_str_loc_init( loc->psource, 1 );
 | 
					    kmp_str_loc_t str_loc = __kmp_str_loc_init( loc->psource, 1 );
 | 
				
			||||||
    kmp_uint64 single_data[ 2 ];
 | 
					    kmp_uint64 single_data[ 2 ];
 | 
				
			||||||
    single_data[ 0 ] = str_loc.line;
 | 
					    single_data[ 0 ] = str_loc.line;
 | 
				
			||||||
| 
						 | 
					@ -400,7 +404,7 @@ __kmp_itt_metadata_single( ident_t * loc ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __kmp_str_loc_free( &str_loc );
 | 
					    __kmp_str_loc_free( &str_loc );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __itt_metadata_add(metadata_domain, __itt_null, string_handle, __itt_metadata_u64, 2, single_data);
 | 
					    __itt_metadata_add(metadata_domain, __itt_null, string_handle_sngl, __itt_metadata_u64, 2, single_data);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
} // __kmp_itt_metadata_single
 | 
					} // __kmp_itt_metadata_single
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue