Why does non-parallel mode still needs MPI?

Hi!

My question is, if we are using PyFR with multiple processes, or in parallel execution, it is apparent that we needs MPI and launch with “mpirun …”.

But even the default launching as a single process, using the pyfr run ... directly, will launch MPI as well, even if there is only one rank.

So, why is that? And does this has any relation to OpenMP’s threads or CUDA or somethings else?

Thanks for your explanation :slight_smile:

Zhen Zhang

Hi Zhen,

My question is, if we are using PyFR with multiple processes, or
in parallel execution, it is apparent that we needs MPI and launch
with "mpirun ....".

But even the default launching as a single process, using the `pyfr
run ...` directly, will launch MPI as well, even if there is only
one rank.

So, why is that? And does this has any relation to OpenMP's threads
or CUDA or somethings else?

PyFR is an MPI and so always calls MPI_Init irrespective of how it is
launched; indeed, often PyFR has no idea how it was launched. It is
this call that brings in the MPI library.

A future version of PyFR may have the capability to run on a single
node without MPI/mpi4py being available.

It has no relation to OpenMP or CUDA.

Regards, Freddie.