Functions of the two trace files A and B are mapped onto each other by their fully qualified names. These names contain not only the mere function name, but a hierarchical name constructed by the Intel® Trace Collector with the use of any information about modules, name spaces and classes that are available at trace time.
For example the fully qualified name of MPI_Allreduce is MPI:MPI_Allreduce because the Intel Trace Collector puts all MPI functions into the group MPI. Function groups defined by the user in the Intel Trace Analyzer have no influence on these full function names. The function aggregation shows the fully qualified name of a function in a small tooltip window when the mouse hovers over an entry.
The mapping of function groups is a little more subtle. For function groups that are within the hierarchy of the automatically created function group Major Function Groups in file A it is tried to find a matching group in B with the same name and nesting level in the corresponding hierarchy in B.
It works quite well for automatically generated groups. For example MPI is always mapped to MPI even if the groups differ because the two program runs did use a different subset of MPI calls. The same is true for groups that were created by instrumentation using the API provided by the Intel® Trace Collector.
When you create new function groups either by using the Function Aggregation dialog box or the ubiquitous context menu entries to ungroup existing function groups for one file then there will be created matching groups for the other file. You can find these read only groups under the header Generated Groups in the Function Aggregation dialog box.