3

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

3
  • Are you asking if a process will float between nodes? Commented Dec 30, 2012 at 12:52
  • Yes, I just hope a particular MPI process can stick to one particular node during the entire lifespan of the process, but I am not sure about it. Commented Dec 30, 2012 at 12:55
  • I am not aware of any widely used MPI implementation that is able to migrate live processes across nodes. Process migration goes against MPI-3.0 specification that allows for the creation of subcommunicators that encompass ranks which could attach to a shared memory block (i.e. they run on the same shared-memory system). Commented Dec 30, 2012 at 19:20

1 Answer 1

1

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.

Sign up to request clarification or add additional context in comments.

2 Comments

Many thanks, so I guess MPI works kind like how OS handle threads, it can assign process to any particular nodes at runtime for whatever reason it see fits. But one last thing, I think the minimum computing unit that a MPI process can occupy is a node, which means, there wont be two MPI processes occupy a single phyiscal node (althrough one node may contain many CPUs) at any given time, am I right?
From the first site I link to, I would interpret it that more than one process may be running on a single physical node. All the supercomputers I've worked with have had job submission scripts which take a "processes per node" parameter as input. The alternative would be that there is one process per node, but multiple threads; however, I don't think it works in this latter way.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.