So, it finally happened, I have a problem where I would like to have
multiple MPI communicators on the same processor. The problem is similar
to this:
1. Use 10 processors (mpiexec -n 10)
2. Have a global problem to solve on all 10 processors.
3. Have 5 small independent problems that can be solved simultaneously
after the global problem (each one using 2 processors)
4. Repeat 2
I can do this now by splitting my pool of procs into two communicators up
front. But then I only get 5 processors for solving the global problem...
and 1 processor each for each of the small problems. Even worse, while I'm
solving the global problem there are 5 procs just sitting around doing
nothing... and while I'm solving the small problem there are 5 procs doing
nothing. Essentially, I'm wasting half of my proc allotment through the
whole run.
So... I would really like to have multiple communicators on one processor.
I know that there has been some work done in this area in libMesh lately
and I'm wondering about the current state of affairs.
I thought it would be as easy as swapping out libMesh::COMM_WORLD (and
setting libMesh::libMeshPrivateData::_n_processors and _processor_id)...
but there is this Parallel::Communicator CommWorld thing that doesn't use
libMesh::COMM_WORLD that is kind of standing in the way.
I mean, we could go do a huge redesign of libMesh so that every object
takes a COMM in its constructor (or references one from an associated
object like an EquationSystems object or something). But, I think in the
short term, just being able to swap out the COMM would work fine (I can
swap them back and forth before I do anything with each system).
Ideas?
Derek
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel