So, 1 question about the starting processes, and 2 + 3 - these are questions, mainly, performance tuning. Performance tuning may require substantial work on the underlying code, but you will not need to change the line of code to do any of this.
What I understand from your first question is that you want to change the distribution of running MPI processes. The implementation of this is beyond the scope of the standard, since it depends on the OS and platform; therefore, each MPI implementation will have a different way of doing this. Recent versions of OpenMPI and MPICH2 allow you to specify where the processors end, so you can specify two processors on a socket, etc.
You do not need to change the code to work, but there are performance problems depending on the main distributions. Itโs hard to say about it as a whole, because it depends on your communication models, but yes, the โcloserโ to the processors, the faster the communication will be, by and large.
There is no limit to the total amount of data that goes back and forth between MPI tasks, but yes, there are limits on throughput (and there are limits on the message). The size of the cache is what it is.
source share