| Literature DB >> 30967042 |
Derek Groen1, Jaroslaw Knap2, Philipp Neumann3, Diana Suleimenova1, Lourens Veen4, Kenneth Leiter2.
Abstract
In the last few decades, multiscale modelling has emerged as one of the dominant modelling paradigms in many areas of science and engineering. Its rise to dominance is primarily driven by advancements in computing power and the need to model systems of increasing complexity. The multiscale modelling paradigm is now accompanied by a vibrant ecosystem of multiscale computing software (MCS) which promises to address many challenges in the development of multiscale applications. In this paper, we define the common steps in the multiscale application development process and investigate to what degree a set of 21 representative MCS tools enhance each development step. We observe several gaps in the features provided by MCS tools, especially for application deployment and the preparation and management of production runs. In addition, we find that many MCS tools are tailored to a particular multiscale computing pattern, even though they are otherwise application agnostic. We conclude that the gaps we identify are characteristic of a field that is still maturing and features that enhance the deployment and production steps of multiscale application development are desirable for the long-term success of MCS in its application fields. This article is part of the theme issue 'Multiscale modelling, simulation and computing: from the desktop to the exascale'.Entities:
Keywords: high-performance computing; multiscale computing; multiscale modelling; multiscale simulation; usability
Year: 2019 PMID: 30967042 PMCID: PMC6388006 DOI: 10.1098/rsta.2018.0147
Source DB: PubMed Journal: Philos Trans A Math Phys Eng Sci ISSN: 1364-503X Impact factor: 4.226
Figure 1.Overview of a typical process for developing multiscale computing applications. (Online version in colour.)
Overview of drawbacks when using generic MCS
| type | description of drawback | example means of mitigation |
|---|---|---|
| adoption overhead | it takes time to understand and set up software which is written by others | good and simple build systems, clear documentation, tutorials |
| application overhead | it takes time to introduce domain- or problem-specific in a generic setting, and to modify generic code to facilitate an unexpected situation | make MCS non-intrusive, limit the range of features provided by the MCS, clear documentation, tutorials |
| search overhead | it can take time to find the right software (or it might not exist at all) | create search directories, pursue good citation practices of directly used and closely related MCS in scientific articles |
| increased support requirements | more support effort is necessary due to a larger community size, leading to less support per user | establish a self-supporting user community |
| lack of control and/or ownership | development is frequently managed by others, reduced academic credit due to not developing own tools, no control over the software installation in the case of software as a service | make code open-source, support branching developments and spin-offs, avoid centralized installations, make a clear case against reinventing the wheel |
Summary of MCS scope and platforms. The scope is given in the second column, supported programming languages in the third column, and supported multiscale computing patterns (Extreme Scaling (ES), Heterogeneous Multiscale Computing (HMC) or Replica Computing (RC)) in the fourth column.
| name | scope | supported languages | supported patterns |
|---|---|---|---|
| ASPA | generic | C++ | HMC |
| Amuse | discipline-specific | Python | ES,HMC,RC |
| Cactus | generic | Custom (language of choice) | HMC |
| CoHMM/D2KAS | generic | C++ | HMC |
| CouPE | generic | C++, FORTRAN, Wrappers for C/C++/Fortran modules exist (explains my answer here) | ES,HMC |
| ELMER | system-specific | C++, FORTRAN, C | ES |
| ENISI MSM | discipline-specific | Java | ES |
| ESMF | discipline-specific | C++, FORTRAN | ES,HMC,RC |
| FLASH | discipline-specific | FORTRAN | ES |
| FabSim | generic | Python | ES,HMC,RC |
| HMS | generic | Python, C++, FORTRAN | RC |
| MOOSE | system-specific | C++ | ES,HMC |
| MPWide | generic | Python, C++, C | ES |
| MUI | generic | C++ | ES |
| MUSCLE2 | generic | Python, C++, Java, FORTRAN, Ruby, C, Matlab | ES |
| MaMiCo | system-specific | C++, command-line (e.g. bash), SCons for compiling | ES,HMC |
| OASIS3-MCT_3.0 | discipline-specific | FORTRAN, C | ES |
| OMFIT | discipline-specific | Python | ES,HMC,RC |
| Parsl | generic | Python | RC |
| Swift | generic | Domain-specific or bespoke language | ES,HMC,RC |
| TabaSCo | discipline-specific | C++, CHARM++ | HMC |
Figure 2.Overview of added value of the software tools. Here, the tools are provided one per row and the number of each relevant development step in each column (respectively (1) Implementation, (2) Instantiation, (3) Deployment, (4) Execution, (5) Optimization and (6) Production). Tools are sorted alphabetically. (Online version in colour.)
Summation of added values from MCS in each development step
| step | no. curate | no. accelerate | no. simplify | no. expand |
|---|---|---|---|---|
| implementation | 10 | 5 | 14 | 12 |
| instantiation | 5 | 2 | 9 | 2 |
| deployment | 2 | 6 | 8 | 1 |
| execution | 4 | 8 | 8 | 2 |
| optimization | 4 | 1 | 6 | 1 |
| production | 2 | 7 | 1 | 2 |
| total | 27 | 29 | 46 | 20 |