These html pages are based on the PhD thesis "Cluster-Based Parallelization of Simulations on Dynamically Adaptive Grids and Dynamic Resource Management" by Martin Schreiber.
There is also more information and a PDF version available.

7.2 Invasive software architecture

Considering algorithms on a system without cache coherency among the tiles, this requires extensions similar to distributed memory systems, e.g. a message-passing interface (MPI). Parallelizing an application on such distributed-memory systems typically results in an increased complexity.

This complexity is compensated by the development of our algorithms in the X10 language [ESS05]. Additionally, an X10 compiler [BBMZ12] is developed to generate optimized code for the Invasive Chip and the OctoPOS operating system [OSK+11] running on the chip.

A decentralized agent system [KBL+11] then schedules the resources among the executed applications, based on the constraints and possibly other input parameter from hardware monitors.

The X10 language supports a so-called partitioned global address space (PGAS). This improves the usability for accessing arrays which are distributed among several tiles via a virtual continuously stored array structure. This hides the physical placement of the data chunk from the application developer. For our algorithms, we use the distributed arrays from the X10 library.

It is important to mention, that the PGAS features in X10 already compensate the additional burden which is put on the developer due to the distributed-memory system. However, there’s still an increased complexity due to required extensions of algorithms to cope with dynamically changing number of compute resources.

For the programmability of the Invasive Computing paradigms, we contributed a variety of algorithmic patterns to the research groups of Prof. Dr. G. Snelting and Prof. Dr. J. Teich, resulting in the invadeX10 framework. This framework offers basic invasive computing interfaces such as invade, infect and retreat via the invadeX10 [BRS+13]. Furthermore, additional extensions were required to compensate the complexity which is introduced by the Invasive Computing paradigms. Such extensions are e.g. the redistribution of distributed arrays after a change of resources to improve the data locality, infections supporting recursive reduce operations to compute a surplus, etc.