Just learn to program on a supercomputer consists of ~100 nodes, each node consists of 4 Xeon CPUs and 64GB ram.
What I want to do is assigning jobs to each node and then creating local multi-threading programs on each node, what I want to know is,by default, when MPI create a group of processes, is there a 1-1 mapping between each task process and one particular local node or not?(in my case, it is a node consist of 4 Xeon CPUs with totally 24 cores and 64GB ram).
MPI will run M processes on N nodes where M may be less than, equal to, or greater than N.
This site describes the setup.
I can't find a direct answer to your question, but there are a number of sites on the internet discussing process migration
and checkpointing
. But the general theme of these sites seems to be that this is still very much a work in progress. As such, I wouldn't expect that this would be happening automagically in your MPI implementation.
This site discusses the MPI_GET_PROCESSOR_NAME
command, which can be used in process migration, but states that "nothing in MPI requires or defines process migration; this definition of MPI_GET_PROCESSOR_NAME simply allows such an implementation". With this command, you can at least check if your code is being actively migrated.