Nicolas Valle
Nicolas Valle is an Assistant Professor at the Mechanical Engineering faculty of Delft University of Technology. His research interest are on the development of gas-evolving electrodes, with particular emphasis on the bubble detachment dynamics in water electrolysis systems. His approach is essentially computational, and heavily relies on Direct Numerical Simulations for unveiling the complex mechanisms arising from the interaction of mass, momentum, energy and charge transfer in flowing electrochemical systems. His most recent areas of activity are on the design of structure-preserving numerical methods for multiphase flows and the development of High Performance Computing numerical codes for scientific computing.
Session
The portability of High Performance Computing (HPC) codes can be a daunting task due to their complexity and the widespread propagation of low-level, architecture--dependent, memory access operations in the code. As a result, portability implies most of the times a massive rewriting of near entire codes, which is highly unsustainable. The root of the localized memory access is that algorithms are traditionally developed and implemented from a local, certainly intuitive, perspective (e.g.: nodes, element, stencil), which conversely requires a local memory access.
In the context of continuum mechanics (e.g.: fluid and solid mechanics, heat and mass transfer, plasma physics, etc), I propose to remove such a bottleneck by adopting whole algebraic approach, as was already proposed by the BLAS standard more than 40 years ago. Since the formulation of the governing equations is widely regarded in terms of vector calculus (which is the de facto lingua franca of all these problems), it is entirely possible to formulate the discrete governing equation in terms of discrete vector calculus. Actually, there is no fundamental reason to develop codes for continuum physics from a local perspective. Discrete vector calculus operators (e.g.: div, grad, curl, etc) are then represented by matrices. The operations reduce to basic matrix--vector and vector--vector products. This algebraic framework does not only present a fantastic opportunity for encapsulation of the memory access operations, but it also provides a much more sustainable structure by being based in a much smaller set of computational kernels.
While the adoption of an algebraic formulation is nothing new, I propose to extend it to the design and implementation of the computational aspects of HPC libraries. By sticking to rigorous mathematical definitions, we leverage object--oriented programming to define the mathematical objects that will replace common computational objects that are usually implemented ad hoc, most of the times with a particular application in mind (e.g.: mesh, halo, communicators, etc).
The paradoxal example is the concept of "mesh": while common in most continuum mechanics software, there is no strict mathematical definition of what a mesh is, leading to a myriad of different implementations which makes it virtually impossible to reuse among different codes. I propose to replace by a manifold object, which is otherwise well defined in mathematical terms. I will show how the manifold concept does naturally accommodate an interface to store data in a visualization software or topological concepts related to the partition of domain in a parallel environment.
In this talk, I will present a tentative mathematical structure to accommodate common computational concepts found in continuum mechanics applications, and discuss the possibility and interest of turning it into a standard.