Handling of Communicator Names
By default, Intel® Trace Collector stores names for well-known communicators in the trace:
COMM_WORLD
,
COMM_SELF_#0
,
COMM_SELF_#1
and so on. When new communicators are created, their names are composed of a prefix, a space and the name of the old communicator. For example, calling
MPI_Comm_dup()
on
MPI_COMM_WORLD
will lead to a communicator called
DUP COMM_WORLD
.
There are the following prefixes for MPI functions:
MPI Function
| Prefix
|
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MPI_Intercomm_merge()
is special because the new communicator is derived from two communicators, not just one as in the other functions. The name of the new inter-communicator will be
MERGE
if the two existing names are different, otherwise it will be just
<old name 1>
/<old name 2>
MERGE
.
<old name>
In addition to these automatically generated names, Intel Trace Collector also intercepts
MPI_Comm_set_name()
and then uses the name provided by the application. Only the last name set with this function is stored in the trace for each communicator. Derived communicators always use the name that is currently set in the old communicator when the new communicator is created.
Intel Trace Collector does not attempt to synchronize the names set for the same communicator in different processes, therefore the application has to set the same name in all processes to ensure that this name is really used by Intel Trace Collector.