Work on multiple cores using MPI

I use the real command to send MPI jobs: mpirun -np no.of cpu filename

I understand that the above command allows me to send 4 independent processors that communicate via MPI. However, in our setup, each processor has 4 cores that are not used. I had the following questions:

  • Is it possible to send a task to several cores on the same node or several nodes from the MPI launch command line? If so, how?

  • Do the above requirements require special comments / settings inside the code? I understand, after reading some literature, that the communication time between the kernels may differ from the processors, therefore, some reflection on how the problem is distributed ... but for this problem? What else do you need to evaluate for?

  • Finally, is there a limit on the amount of data transferred? Is there a limit on the amount of data a bus can send and receive? Is there a cache limit?

Thanks!

+4
source share
1 answer

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.

+2
source

All Articles