Developer Guide and Reference

Contents

Dumping Profile Information

The
_PGOPTI_Prof_Dump_All()
function dumps the profile information collected by the instrumented application. The prototype of the function call is listed below.
Syntax
void _PGOPTI_Prof_Dump_All(void);
An older version of this function,
_PGOPTI_Prof_Dump()
, is deprecated and no longer used.
The new function,
_PGOPTI_Prof_Dump_All()
, operates much like the deprecated function, except on Linux* operating systems, when it is used in connection with shared libraries (.so). When
_PGOPTI_Prof_Dump_All()
is called, it insures that a .dyn file is created for all shared libraries needing to create a .dyn file. Use
_PGOPTI_Prof_Dump_All()
on Linux OS to insure portability and correct functionality.
The profile information is generated in a
.dyn
file (generated in phase 2 of PGO).
The environment variables that affect the
_PGOPTI_Prof_Dump_All()
function are
PROF_DIR
, COV_DIR,
PROF_DPI
, and COV_DPI
. Set the
PROF_DIR or
COV_DIR
environment variable to specify the directory to which the .dyn file must be stored. Alternately, you can use the
–[Q]prof_dir
compiler option, when building with
-[Q]prof-gen
, to specify this directory without setting the
PROF_DIR or
COV_DIR
variable. Set the
PROF_DPI
or
COV_DPI
environment variables to specify an alternative .dpi filename. The default filename is
pgopti.dpi.
You can also use the
–prof_dpi
profmerge tool option, when merging the .dyn files, to specify the filename for the summary .dpi file.

Recommended Usage

If your application does not use a standard exit() call, insert a single call to this function in the body of the function that terminates the user application. Normally,
_PGOPTI_Prof_Dump_All()
should be called just once. It is also possible to use this function in conjunction with _PGOPTI_Prof_Reset_All() function to generate multiple .dyn files (presumably from multiple sets of input data).
If the data is not reset between the dumps with a call to the _PGOPTI_Prof_Reset_All() function, the counters will continue accumulating data, resulting in the subsequent .dyn file containing data that was previously dumped.
Example
#include <pgouser.h> void process_data(int foo) {} int get_input_data() { return 1; } int main(void) { // Selectively collect profile information for the portion // of the application involved in processing input data. int input_data = get_input_data(); while (input_data) { _PGOPTI_Prof_Reset All(); process_data(input_data); _PGOPTI_Prof_Dump_All(); input_data = get_input_data(); } return 0; }

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804