Intel® C++ Compiler Classic Developer Guide and Reference

ID 767249
Date 12/16/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of 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).

NOTE:

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; }