Abstract
and statement of need The ever-increasing demand for resolution and accuracy in mathematical models of physical processes governed by systems of Partial Differential Equations (PDEs) can only be addressed using fully-parallel advanced numerical discretization methods and scalable solution methods, thus able to exploit the vast amount of computational resources in state-of-the-art supercom-puters. To this end, GridapDistributed is a registered Julia (Bezanson et al., 2017) software package which provides fully-parallel distributed memory data structures and associated methods for the Finite Element (FE) numerical solution of PDEs on parallel computers. Thus, it can be run on multi-core CPU desktop computers at small scales, as well as on HPC clusters and supercomputers at medium/large scales. The data structures in GridapDistributed are designed to mirror as far as possible their counterparts in the Gridap (Badia & Verdugo, 2020) Julia software package, while implementing/leveraging most of their abstract interfaces (see Francesc Verdugo & Badia (2022) for a detailed overview of the software design of Gridap). As a result, sequential Julia scripts written in the high-level Application Programming Interface (API) of Gridap can be used verbatim up to minor adjustments in a parallel distributed memory context using GridapDistributed. This equips end-users with a tool for the development of simulation codes able to solve real-world application problems on massively parallel supercomputers while using a highly expressive, compact syntax that resembles mathematical notation. This is indeed one of the main advantages of GridapDistributed and a major design goal that we pursue. In order to scale FE simulations to large core counts, the mesh used to discretize the computational domain on which the PDE is posed must be partitioned (distributed) among the parallel tasks such that each of these only holds a local portion of the global mesh. The same requirement applies to the rest of data structures in the FE simulation pipeline, i.e., FE space, linear system, solvers, data output, etc. The local portion of each task is composed by a set of cells that it owns, i.e., the local cells of the task, and a set of off-processor cells (owned by remote processors) which are in touch with its local cells, i.e., the ghost cells of the task (Badia et al., 2020). This overlapped mesh partition is used by GridapDistributed, among others, to exchange data among nearest neighbors, and to glue together global Degrees of Freedom (DoFs) which are sitting on the interface among subdomains. Following this design principle, GridapDistributed provides scalable parallel data structures and associated methods for simple grid handling (in particular, Cartesian-like meshes of arbitrary-dimensional, topologically n-cube domains), FE spaces setup, and distributed linear system assembly. It is in our future plans to provide highly scalable linear and nonlinear solvers tailored for the FE discretization of PDEs (e.g., linear and nonlinear matrix-free geometric multigrid and domain decomposition preconditioners). In the meantime, however, GridapDistributed can be combined with other Julia packages in order to realize the full potential required in real-world applications. These packages and their relation with GridapDistributed are overviewed in the next section. There are a number of high quality open source parallel finite element packages available in Badia et al. (2022). GridapDistributed: a massively parallel finite element toolbox in Julia. Journal of Open Source Software, 7 (74), 4157. https://doi.org/10.21105/joss.04157.
Cite
CITATION STYLE
Badia, S., Martín, A. F., & Verdugo, F. (2022). GridapDistributed: a massively parallel finite element toolbox in Julia. Journal of Open Source Software, 7(74), 4157. https://doi.org/10.21105/joss.04157
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.