On Linux, the profile sample were separated by the "Task path" and "module path". If there are multiple copy of same task running, samples are aggregated into one file.
On Windows, all samples are separated by pid. CodeAnalyst can separete samples based on the PID.
Ouch. I'm using Linux. So as far as I can tell, on Linux my only option is to manually duplicate the executable file to have distinct names, and statically link as much as possible. This seems to work but is very clunky, especially when I'm running MPI programs with at least 16 processes.
Thanks for the response.