[MOAB-dev] exchanging sets of entities between processors in parallel

Kirill Terehov kirill.terehov at gmail.com
Fri Apr 13 06:01:31 CDT 2012


Hello,
I'm trying to implement distribution of entities between multiple processors based on parmetis graph partitioning in parallel.
I've used moab #4.5.0 and #4.6.0pre

I've tested different approaches for exchanging entities which are
1. exchange_owned_meshs - hangs in cycle while(incoming2)
2. send_entities / recv_entities - works if # of processors is 2 otherwise hangs
3. pack_buffer / unpack_buffer

3rd one work if i don't set "store_remote_handles" flag, because otherwise it stops on following assertion while unpacking new entities:
Assertion failed: (new_ents[ind] == from_vec[i]), function get_remote_handles, file ParallelComm.cpp, line 1728.

so if i don't use store_remote_handles I obtain final distribution.
it works well if load mesh on one processor and distribute 
it across many processors. 
But if i load already distributed mesh, program fails on resolve_shared_ents with following errors:

Invalid entity handle: Vertex 21
Failed to get pstatus flag.
Couldn't filter on owner.
get_sent_ents failed.
Trouble resolving shared entity remote handles.
cannot resolve ents

Which is strange, because after distribution i set  for all entities of all dimensions zeros for pstatus_tag, zeros for sharedh_tag and -1 for sharedp_tag

Could you help me with that problem?






More information about the moab-dev mailing list