On 21 October 2013 15:19, Andreas Schäfer <gent...@gmx.de> wrote:

> Hi,
>
> the solution depends on the details of your code. Will all clients
> send their progress updates simultaneously? Are you planning for few
> or many nodes?
>
> For few nodes and non-simultaneous updates you could loop on the root
> while receiving from MPI_ANY. Clients could send out their updates via
> MPI_Isend().
>
> If you're expecting many nodes, this 1-n schema will eventually
> overwhelm the root node. In that case MPI_Gather() or MPI_Reduce()
> will perform better. But those require all nodes to participate.
>
> Things get complicated if you want non-simultaneous updates from many
> nodes...
>
> HTH
> -Andreas


Thanks, currently I run a prototype with 32 mpi processes or so. But I
would deploy to a larger set later.

===> root process code:
I) mpi thread
1. list all n-tuples
2. split list equally for 32 processes
3. scatter
4. loop to evaluate locally f for my section of space
5. reduce

II) UI thread

===> compute mpi process node
3. scatter list of ntuples
4. loop to evaluate locally f for my section of space
5. reduce


The loops 4 are not naturally in sync.
Would you suggest to modify the loop to do a MPI_ISend after x iterations
(for the clients) and MPI_IRecv on the root?

Thanks MM

Reply via email to