MmgTools / ParMmg

Distributed parallelization of 3D volume mesh adaptation
Other
34 stars 19 forks source link

Slower than mmg ? #115

Closed maximerenault closed 3 months ago

maximerenault commented 3 months ago

I may be using it wrong but when I run ParMmg on my computer with OpenMPI on 2 cores, the software is just 10x slower than Mmg on its own. It is also slower when running it on 1, 8 or 16 cores and generally gets slower as the number of processes increases. I am remeshing a 3 million elements mesh with this command : "mpirun -n 2 parmmg_O3 Mesh.mesh -met Met.sol -hgrad 0"

I must mention that I get this warning at runtime "## Warning: MMG5_scotchCall: fail to determine scotch version. No renumbering." and failed to find a way to treat it.

Algiane commented 3 months ago

Hi,

The main objective or ParMmg is to allow to remesh meshes that are too large to be stored in the memory of a single compute node and it targets large architectures, not personnal computers. Even if we hope to save time when the number of MPI processes is sufficiently large, it is not our first target (and for now we haven't found the time and ressources to work on the software scalability).

It relies on an iterative remeshing-repartitioning algorithm (see https://github.com/MmgTools/ParMmg/wiki/Outline-of-the-algorithm for an overview) that calls Mmg multiple times (a strict minimum of 3 iterations are needed to ensure that the entire mesh as been remeshed but a larger number is often needed) and, comparing to Mmg, it adds an extra layer of data, computations and MPI communications to exchange informations between the partitions and maintain the mesh consistency. In consequence, it is not expected to have better performances than Mmg under ~8 MPI processes.

I attach a curve of the weak scalability of ParMmg for the uniform refinment of a sphere:

To get better performances, you can:

Few remarks: