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

Iulian Grindeanu iulian at mcs.anl.gov
Wed Apr 18 11:24:42 CDT 2012


| 1) While installing moab on SUSE Linux Enterprise Server 10 I've got
| following error:
| SparseTag.cpp(377): error: no default constructor exists for class
| "Internal::hashtable_const_iterator<std::pair<const
| moab::EntityHandle={size_t={unsigned long}}, void *>, false, false>"
| SparseTag::MapType::const_iterator iter;
| ^
| detected during instantiation of "void moab::get_tagged(const
| moab::SparseTag::MapType &, Container &, moab::EntityType, const
| moab::Range *) [with Container=moab::Range]" at line 433
| it was intel compiler 11.1 20101201, i've got same error with g++
| 4.1.0
| the problem seems to come from unordered_map class on this platform
| i've successfully installed moab by removing check for this class
| inside configure script
| probably there should be an option to omit this check or more tests
| for usability of this class inside configure
I will enter a ticket for this | 2) I attach a simple example when moab hangs inside
| exchange_ghost_cells
| attachments are:
| a. an initial mesh nmesh-0.vtk
| b. mesh out.mhdf prepared by mbpart with command ./mbpart -p
| partgeomkway 6 nmesh-0.vtk out.mhdf
| c. simple code bug.cpp that can be compiled by
| mpicxx bug.cpp -lMOAB -lnetcdf
| and run by
| mpiexec -np 6 ./a.out out.mhdf
| it fails to pass exchange_ghost_cells
... result = pcomm.exchange_ghost_cells(3,2,1,0,1); CHKERR("cannot exchange ghost\n"); ... for this one, it seems that you are passing the bridge dimension as "2". If you pass 0 for bridge dimension, it works. I think the problem is that there are no faces created by default (internally). It should work if you generate all the internal faces, then partition the mesh. As a reminder, faces between tets are not generated automatically, to keep the database small. You can request that, with a method like mb->get_adjacencies(Range tets, const int to_dimension /*2 for faces*/, const bool create_if_missing /* true*/, Range & out, const int operation_type /* Interface::UNION*/) ; you may need to pass in all tets, and set "create_if_missing=true" | I'll try to replace code for message passing inside this function
| If I'll have a success I'll share it with you
| | I will look at your code more, but I don't think I can be of much
| | help, sorry about that.
| | Iulian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/moab-dev/attachments/20120418/9318aa7b/attachment.htm>


More information about the moab-dev mailing list