OpenMP or MPI or OpenMPI for a distributed memory cluster?

I want to parallelize C serial code in a 100 node distributed memory cluster. The cluster consists of 25 blades with 4 cores each for infinity. Before I just used PBS to distribute several serial runs of the program between different nodes. Now I wonder:

  • What is the best alternative in this case to OpenMP or MPI or OpenMPI (at the moment I do not want to try a mixed approach when I start to learn)?
  • Where can I find examples / tutorials?
  • For simple sequential code with a main loop, can OpenMP / MPI / OpemMPI always work better than a sequencing approach like PBS?
+4
source share
2 answers

Distributed memory is an exception to OpenMP that is designed for shared memory computing. MPI is the standard, and OpenMPI is the implementation of this standard (there are others, such as MPICH or LAM-MPI). So

  • MPI, and OpenMPI is a respectable implementation. However, I find it rather unusual to find clusters like yours without installing MPI, so installing the MPI you already have might be a better option. You should talk with system managers about this. And you should not try to install OpenMPI in the cluster without knowing what you are doing.

  • All over the place. Here you can start a good place .

  • PBS is a job scheduling system. In a cluster like yours, you usually have both MPI installation and job scheduler installation, if not PBS, then most likely the Grid Engine.

As you have already discovered, you can use PBS (or the Grid Engine) to send multiple consecutive jobs to the cluster. You can also use it to send one parallel job to the cluster for execution on any number of processors you are asking for. However, your question increases the likelihood that your problem is confused by the parallel and that MPI may be redundant for you. Google around for italics before you commit to parallelizing your program - unless you want it to be a simple pleasure that will undoubtedly have a result.

+13
source

OpenMP is for computers with shared memory, I believe that you cannot use it in distributed memory. So you have to use MPI.

Good MPI tutorial: https://computing.llnl.gov/tutorials/mpi/

+2
source

Source: https://habr.com/ru/post/1332204/


All Articles