Search code examples
c++cluster-computingmpihpc

MPI and cluster


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).


Solution

  • 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.