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(), which will also dump profile information is still available; the older function operates much like _PGOPTI_Prof_Dump_All(), except on Linux when used in connection with shared libraries (.so) and _exit() to terminate a program. When _PGOPTI_Prof_Dump_All() is called before_exit() to terminate the program, the new function insures that a .dyn file is created for all shared libraries needing to create a .dyn file. Use  _PGOPTI_Prof_Dump_All() on Linux to insure portability and correct functionality.

The profile information is generated in a .dyn file (generated in phase 2 of the PGO).

Recommended usage

Insert a single call to this function in the body of the function which 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() function to generate multiple .dyn files (presumably from multiple sets of input data).

Example

! Selectively collect profile information

! for the portion of the application

! involved in processing input data.

input_data = get_input_data()

do while (input_data)

  call _PGOPTI_Prof_Reset()

  call process_data(input_data)

  call _PGOPTI_Prof_Dump_All()

  input_data = get_input_data()

end do

end program

Dumping Profile Data

This discussion provides an example of how to call the CPGO API routines from Fortran.  

As part of the instrumented execution phase of Profile-guided Optimization, the instrumented program writes profile data to the dynamic information file (.dyn file).

The file is written after the instrumented program returns normally from PROGRAM() or calls the standard exit function. Programs that do not terminate normally, can use the _PGOPTI_Prof_Dump_All function. During the instrumentation compilation, using the -prof-gen (Linux*) or /Qprof-gen (Windows*) option, you can add a call to this function to your program using a strategy similar to the one shown below:

Example

interface

  subroutine PGOPTI_Prof_Dump_All()

!DEC$attributes c,alias:'PGOPTI_Prof_Dump_All'::PGOPTI_Prof_Dump_All

  end subroutine

  subroutine PGOPTI_Prof_Reset()

!DEC$attributes c,alias:'PGOPTI_Prof_Reset'::PGOPTI_Prof_Reset

  end subroutine

end interface

call PGOPTI_Prof_Dump_All()

Caution

You must remove the call or comment it out prior to the feedback compilation with -prof-use (Linux) or /Qprof-use (Windows).