mpirun -np N, what if N is larger than my core number?

9,640
  1. 9 will run simultaneously.
  2. There is no confusion for the remaining 1 process; mpirun schedules in round-robin order by default, so the 1st core/node will be assigned that process.
  3. You can certainly increase np beyond the number of available physical cores/nodes. The tradeoff is that the overhead increases with a larger number of processes than cores/nodes. If your code is not tightly CPU-bound (e.g. requires significant IO wait time), you should do this. Ultimately, you don't know if it will be faster until you try.
  4. MPI does the initial scheduling, but for more than one process per node, or just in general (since there are a number of other processes running in the background too), the Linux kernel scheduler takes over.

See this man page for much more information.

Share:
9,640
Daniel
Author by

Daniel

Updated on September 18, 2022

Comments

  • Daniel
    Daniel over 1 year

    Say I have a 4-core workstation, what would linux (Ubuntu) do if I execute

    mpirun -np 9 XXX

    Q1. Will 9 run immediately together, or they will run 4 after 4?

    Q2. I suppose that using 9 is not good, because the remainder 1, it will make the computer confused, (I don't know is it going to be confused at all, or the "head" of the computer will decide which core among the 4 cores will be used?) Or it will be randomly picked. Who decide which one core to call?

    Q3. If I feel my cpu is not bad and my ram is okay and large enough, and my case is not very big. Is it a good idea in order to fully use my cpu and ram, that I do mpirun -np 8 XXX, or even mpirun -np 12 XXX.

    Q4. Who decides all of these effciency optimization, Ubuntu, or linux, or motherboard or cpu?

    Your enlightenment would be really appreciated.

  • Daniel
    Daniel almost 12 years
    Can I just openmp -np 8 XXX, or tbb -np 8 XXX? Or do I need to modify the code itself? How to decide using 8 or 12. Thanks!