On Wed, 23 Jan 2019, Xiang LI wrote:
> Currently I am using libMesh to solve problems with large parallel computers. > I met some > problems with the load-balance of unstructured mesh. I was wondering that if > you have any > suggestions for it. > > I am solving a fluid system in a cube. The mesh I use is unstructured, in > which the element > size decays exponentially as it approaches to the boundary of the cube. I > generate the mesh > by directly modifying mesh_generation.C, giving the coordinates of the dofs > directly in the > code. The code works well and I can get correct results. > > In order to solve it in parallel, I use --enable-parmesh in the configuration > of libMesh and > use asm preconditioners with PETSc GMRES solver. The problem is that the > degrees of > freedom seem not to be distributed "evenly" over each processor. For > example, in a test > problem, I tried to solve with 960 processors. In this case, some processors > are given > about 10,000 dofs, while some other processors are given about 20,000 dofs. > > In this case, seems that the load-balance is not correctly done for the > unstructered mesh. > I was wondering that if libMesh can handle it, and how to modify the code to > make my code > well-balanced in parallel? I'm afraid that the default load balancing works well on elements but uses a simplistic rule on nodes, which (except for unlikely cases such as very high order elements, or physics whose assembly time well outweighs solve time) typically leaves too many DoFs on lower numbered ranks. There are currently three alternatives, accessible with command line options --load-balanced-nodes-linear --load-balanced-nodes-bfs or --load_balanced_nodes_petscpartitioner, that you might experiment with. --- Roy _______________________________________________ Libmesh-users mailing list Libmesh-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-users