Region Control with MPI_Pcontrol

Application Performance Snapshot supports the region control with the MPI_Pcontrol() operation. This allows you to enable and disable statistics collection for specific application regions in the source code. Region control only affects MPI and OpenMP* metrics, while the other ones will still be collected for the entire application.

By default, the statistics collection is enabled for the entire application. To disable the collection starting from a certain point, insert the MPI_Pcontrol(0) call in your code. Similarly, insert the MPI_Pcontrol(1) call to enable collection again. For example:

...
MPI_Pcontrol(0);
MPI_Comm_size (MPI_COMM_WORLD, &size);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Pcontrol(1);
...

MPI_Pcontrol() also allows you to mark specific code regions using unique numbers (5 and higher). Use a MPI_Pcontrol(<region>) call to mark the beginning of the region, and use MPI_Pcontrol(-<region>) to mark the end of the region. You can mark several non-contiguous code sections with the same region number to include them into the same region. MPI_Pcontrol(0) and MPI_Pcontrol(1) disable and enable statistics collection for all regions at once, respectively.

The following example demonstrates how to mark code regions with MPI_Pcontrol():

if (rank == 0) {
    MPI_Pcontrol(5);
    for (i = 1; i < size; i++)
        MPI_Recv (&rank, 1, MPI_INT, i, 1, MPI_COMM_WORLD, &stat);
    MPI_Pcontrol(-5);
}
else {
    MPI_Pcontrol(6);
    MPI_Send (&rank, 1, MPI_INT, 0, 1, MPI_COMM_WORLD);
    MPI_Pcontrol(-6);
}

If an application contains regions, the statistics will be collected for the entire application and for that region specifically. Region statistics data is saved in a separate folder aps_result_<date>_<region>, for example aps_result_20171231_6.

As it was mentioned above, region numbers from 0 to 4 are unavailable (0 and 1 have special meanings; 2, 3 and 4 are ignored), and regular regions start with the number 5. You can change this behavior and also make 1, 2, 3 and 4 regular regions, or make regular regions start with a greater number. To do so, set the MPS_PCONTROL_REGION_BEGIN environment variable to the desired value.

Note

Note

According to the MPI standard, MPI_Pcontrol() can have a variable number of arguments. For Application Performance Snapshot, only the first argument is relevant.

For more complete information about compiler optimizations, see our Optimization Notice.