I disagree with this subdivision of MPI implementations,
as well as MPI applications.
Rolf, what are the implications on an MPI implementation that make the
following cases different?
2. MPI implementations that allow that the application uses threads,
but it expects that MPI calls are issued always from the main;
3. MPI implementations that allow that the application uses threads,
but it expects that MPI calls are never called in a way that they
run in parallel;
I think, in both cases MPI calls are called sequentially. The fact that
the calls are made from different threads (3) rather than from one
thread (2) does not effect neither MPI implementations nor applications.
Again, what's the difference between the cases (a), (b), and (c) below?
a. the application says that it will use only the main thread;
b. the application says that MPI calls are done always from
the main thread;
c. the application says that MPI calls are done never in parallel;
d. the application says that it wants to issue MPI calls from all
threads in parallel
Who cares which particular thread called an MPI call if all MPI calls
are done sequentially?
In my opinion, there are only two choices:
thread-safe MPI implemetation (MPI_MLTIPLE_THREADS) and
non-thread-safe MPI implementaiton (MPI_THREADS_NOT_SUPPORTED)
because if one uses MPI calls only in one thread, or if MPI calls occure
in different threads but sequentially can be handled without problems by
a non-thread-safe MPI implementation.
Please, correct me if I am wrong.
Thanks, Boris Protopopov.