Multi-threaded mesh generation
Résumé
This paper presents a fine grain parallel version of the 3D Mesh generation procedure using the OpenMP (Open Multi-Processing) API on standard NUMA multicore processors and on the new Intel Knight’s Landing architecture. The most significant piece of algorithm of the meshing procedure is the Delaunay kernel. A set S = { p 1 ,..., p n } of n points is taken as input. S is initially sorted along a space-filling curve so that two points that are close in the insertion order are also close geometrically. A parallel radix sort is implemented on massively multithreaded architectures that allow to sort about half a billion points in about a tenth of a second. The sorted set of point is then divided into M subsets S i , 1 ≤ i ≤ M of equal size n / M . The multithreaded version of the Delaunay kernel inserts M points at a time in the triangulation. OpenMP barriers provide the required synchronization that is needed after each multiple insertion in order to avoid data races. This simple approach exhibits two standard problems of parallel computing : load imbalance and parallel overheads. Those two issues are addressed using a two-level version of the multithreaded Delaunay kernel. Tests show that triangulations of about a billion tetrahedra can be generated on a 32 core machine (Intel Xeon E5-4610 v2 @ 2.30GHz with with 128 GB of memory) in less that 3 minutes of wall clock time, with a speedup of 18 compared to the single- threaded implementation. Then, a parallel point insertion algorithm is presented that allows to generate very large meshes one order of magnitude faster than state-of-the art implementations.
Format | typeAnnex_abstract |
---|
Loading...