You are here: Overview > Key Concepts > End-point Communications
End-point Communications
PALM is based on the "end point" communication scheme. To keep the components wholly independent one from another, the production or the reception of the exchanged data (arrays of any kind) has at the beginning no connection with the notion of communication. The effective communications between the different components are described when the application is set together within the graphic interface. To obtain more flexibility and in order to be able to control the exchanges between the components which are not to be executed necessarily at the same time, data production is never blocking; if the component in need of data is not ready to get them, data are bufferised before being received. Moreover PALM grants the management of parallel communications: the arrays to be exchanged, if they are decomposed over different processors, don’t need to be grouped before being sent. The description of the parallel distribution is all what the unit's implementor has to provide. This allows to parallelise just the critical parts of an application without producing an impact on the rest of it.
The principle of the "end point" communications is simple: when a code produce a data potentially interesting for other components, it informs the coupler with an appeal to a PALM_Put primitive. In a similar way, a calculation code needing data tells the coupler, with a PALM_Get primitive, that it is waiting for some information. It’s only later, when the application is going to be created, that the "Put" and the "Get" are connected to define the effective communications between the components. This scheme allows a total independence between the calculations codes, so it authorises the replacement of a unit by another one without interfering with the rest the application.
Thanks to PALM, the instrumentation of the source code is restricted to the calls to a few primitives only when needed. In this way it is very little intrusive. Various compiled languages (C, C++, Fortran) are supported. For time dependent or iterative processes, the coupler can manage many different temporal instances of the exchanged data. For instance, through this mechanism, the coupler can manage the temporal interpolation of the fields, during the exchange.
So the communication scheme of the coupler PALM is at once flexible, modular and effective.
Back to top