[MOAB-dev] Question: Exchange part of mesh so that it is available to all processes

Tim Tautges tautges at mcs.anl.gov
Mon Nov 28 10:47:11 CST 2011


That will be pretty inefficient, though, since every processor would have to exchange messages with every other 
processor pairwise.  I think the best way to do this would be to do two allgathers and broadcasts, the first for 
entities and the second for remote handles... those messages will get pretty big, though, esp the remote handle ones.

- tim

On 11/28/2011 09:55 AM, Hong-Jun Kim wrote:
> I think "exchange_owned_meshs" is the right one for you.
>
> You should give a pair of processor and entity information with "exchange_procs" and "exchange_ents" to the function.
> If you want to exchange mesh entities(entity 1~10) from p0 to p1 and mesh entities(5~17) from p2 to p0, you can make the argument list as follows.
>
> p0 : exchange_procs(1), exchange_ents(1~10)
> p2 : exchange_procs(0), exchange_ents(5~17)
>
> To exchange remote handle information, you can turn on "store_remote_handles" option.
> In addition, tag information is automatically exchanged by the function.
>
> Thanks.
>
> -----------------------------
> Hong-Jun Kim
> Post-doc researcher
> MCS, Argonne National Laboratory
> 9700 S. Cass Ave. B240/R2147
> Argonne, IL 60439
> 630-252-4791
> hongjun at mcs.anl.gov
> -----------------------------
>
> ----- Original Message -----
>> From: "Markus Mayr"<markus.mayr at tuwien.ac.at>
>> To: moab-dev at mcs.anl.gov
>> Sent: Monday, November 28, 2011 9:06:17 AM
>> Subject: [MOAB-dev] Question: Exchange part of mesh so that it is available to all processes
>> Dear list,
>>
>> I have got a question regarding a distributed mesh.
>>
>> Although I know this is necessarily inefficient, I would like to make
>> a
>> part of the mesh available to all processes, more precisely the
>> boundary
>> faces and vertices of my volume mesh.
>>
>> I do not know which function I am supposed to use or even if there is
>> a
>> function that does what I want. As far as I can see, send_/recv_
>> functions send a message from one process to another one, so these
>> functions probably do not what I want.
>>
>> broadcast_entities might be the right thing, maybe something like
>> broadcast_entities(mpi_rank, owned_boundary_entities)
>> results in owned_boundary_entities containing *all* boundary entities?
>> But on the other hand, according to the documentation all processes
>> should know about the whole mesh, which is not the case for me. Apart
>> from that I do not know what remote handles are.
>>
>> The other option would be exchange_owned_mesh(s), I think. Is
>> exchange_procs simply a list of all processes involved and
>> exchange_ents
>> a list containing the local part of each process right after calling
>> that function? What about remote handles? Am I supposed to use
>> exchange_owned_mesh or exchange_owned_meshs?
>>
>> In either case: Can I exchange tags using the exchange_tags functions
>> afterwards?
>>
>> Maybe someone can help me?
>>
>> Thanks!
>>
>> Best regards,
>> Markus Mayr
>

-- 
================================================================
"You will keep in perfect peace him whose mind is
   steadfast, because he trusts in you."               Isaiah 26:3

              Tim Tautges            Argonne National Laboratory
          (tautges at mcs.anl.gov)      (telecommuting from UW-Madison)
  phone (gvoice): (608) 354-1459      1500 Engineering Dr.
             fax: (608) 263-4499      Madison, WI 53706



More information about the moab-dev mailing list