N.M. Maclaren wrote:
On May 10 2010, Kawashima wrote:
If we use OpenMP with MPI, we need at least MPI_THREAD_FUNNELED even
if MPI functions are called only outside of omp parallel region,
like below.
#pragma omp parallel for
for (...) {
/* computation */
}
MPI_Allreduce(...);
#pragma omp parallel for
for (...) {
/* computation */
}
I don't think that's correct. That would call MPI_Allreduce once for
each thread, in parallel, on the same process - which wouldn't work.
Just a minor nit: The code above calls MPI_Allreduce outside of
parallel regions rather than specifying that each OMP thread should make
the call in parallel. But, don't let that nit be a distraction from the
rest of the e-mail conversation.