[MOAB-dev] r4632 - in MOAB/trunk: src/io src/parallel src/parallel/moab test/parallel tools/vtkMOABReader

Rajeev Jain jain at mcs.anl.gov
Thu Mar 24 02:09:17 CDT 2011


Hi Tim,

I'm  unable to get the parallel version of ACIS based MeshKit running, 
there is an error when running CoreGen (HongJun has the same thing, we are 
trying to fix it.
---------------------------------------------------------------------------------------

....MeshKit-acis/rgg> coregen
.....
Internal Error: invalid error code 1dc52e0 (Ring Index out of range) in 
MPIR_Init_thread:394
p0_5954:  p4_error: interrupt SIGSEGV: 11
-----------------------------------------------------------------------------------------

my OCC based MeshKit works and I'll try to see how to parallel mergemesh fits 
into CoreGen.
Is there an example for using ParallelMergeMesh?

Recently, I've found that saving and extrusion are the steps that eat a lot of 
memory and take the most time.
I'm thinking of parallel save and extrusion?

Also, exploring pCAMAL in Cubit 12.2:
"The set parallel meshing works with the export parallel command to 
generate a boundary mesh suitable for sweeping with the pCAMAL   application."
 Rajeev

P.S. Please let me know the correction/additions to the poster.



________________________________
From: "tautges at mcs.anl.gov" <tautges at mcs.anl.gov>
To: moab-dev at mcs.anl.gov
Sent: Wednesday, March 23, 2011 13:58:18
Subject: [MOAB-dev] r4632 - in MOAB/trunk: src/io src/parallel src/parallel/moab 
test/parallel tools/vtkMOABReader

Author: tautges
Date: 2011-03-23 13:58:17 -0500 (Wed, 23 Mar 2011)
New Revision: 4632

Modified:
   MOAB/trunk/src/io/ReadNC.cpp
   MOAB/trunk/src/parallel/ParallelMergeMesh.cpp
   MOAB/trunk/src/parallel/moab/ParallelMergeMesh.hpp
   MOAB/trunk/test/parallel/parmerge.cpp
   MOAB/trunk/tools/vtkMOABReader/vtkMOABReader.cxx
Log:
ParallelMergeMesh: updates from Nathan, now it works.

ReadNC: change method used to partition, so it checks available parameters 
against # procs; 

also partition over I first, then J, then K.

vtkMOABReader: handle tags on vertices differently, as data associated with 
points instead
of with point cells.



Modified: MOAB/trunk/src/io/ReadNC.cpp
===================================================================
--- MOAB/trunk/src/io/ReadNC.cpp    2011-03-22 05:39:07 UTC (rev 4631)
+++ MOAB/trunk/src/io/ReadNC.cpp    2011-03-23 18:58:17 UTC (rev 4632)
@@ -646,25 +646,39 @@
   if (isParallel) {
       // partition *the elements* over the parametric space; 1d partition for 
now, in the k parameter 

       // (or j if there isn't one)
-    if (-1 != klMin) {
-      int dk = (kMax - kMin) / myPcomm->proc_config().proc_size();
-      unsigned int extra = (kMax - kMin) % myPcomm->proc_config().proc_size();
-      klMin = kMin + myPcomm->proc_config().proc_rank()*dk + 
+
+    if (-1 != ilMin && (iMax - iMin) > myPcomm->proc_config().proc_size()) {
+      int di = (iMax - iMin) / myPcomm->proc_config().proc_size();
+      unsigned int extra = (iMax - iMin) % myPcomm->proc_config().proc_size();
+      ilMin = iMin + myPcomm->proc_config().proc_rank()*di + 
           std::min(myPcomm->proc_config().proc_rank(), extra);
-      klMax = klMin + dk + (myPcomm->proc_config().proc_rank() < extra ? 1 : 
0);
+      ilMax = ilMin + di + (myPcomm->proc_config().proc_rank() < extra ? 1 : 
0);

-      ilMin = iMin; ilMax = iMax;
+      klMin = kMin; klMax = kMax;
       jlMin = jMin; jlMax = jMax;
     }
-    else {
+    else if (-1 != jlMin && (jMax - jMin) > myPcomm->proc_config().proc_size()) 
{
       int dj = (jMax - jMin) / myPcomm->proc_config().proc_size();
       unsigned int extra = (jMax - jMin) % myPcomm->proc_config().proc_size();
       jlMin = jMin + myPcomm->proc_config().proc_rank()*dj + 
           std::min(myPcomm->proc_config().proc_rank(), extra);
       jlMax = jlMin + dj + (myPcomm->proc_config().proc_rank() < extra ? 1 : 
0);

+      klMin = kMin; klMax = kMax;
       ilMin = iMin; ilMax = iMax;
     }
+    else if (-1 != klMin && (kMax - kMin) > myPcomm->proc_config().proc_size()) 
{
+      int dk = (kMax - kMin) / myPcomm->proc_config().proc_size();
+      unsigned int extra = (kMax - kMin) % myPcomm->proc_config().proc_size();
+      klMin = kMin + myPcomm->proc_config().proc_rank()*dk + 
+          std::min(myPcomm->proc_config().proc_rank(), extra);
+      klMax = klMin + dk + (myPcomm->proc_config().proc_rank() < extra ? 1 : 
0);
+
+      jlMin = jMin; jlMax = jMax;
+      ilMin = iMin; ilMax = iMax;
+    }
+    else
+      ERRORR(MB_FAILURE, "Couldn't find a suitable partition.");
   }
#endif

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/moab-dev/attachments/20110324/6881fdec/attachment.htm>


More information about the moab-dev mailing list