This proposal forms part of a programme of research at Imperial College aimed at developing tools and techniques which will reduce the complexity of scientific software by using re-usable high-level components. The proposal focuses specifically on the important issue of cross-component optimisation at run-time, when the component connectivity and program input are known. The proposal builds on previous work by an outstanding research student, Olav Beckmann, who is the named RA. The project will expand this work significantly in several directions that will increase the range and power of existing optimisations.
The main idea is to extract dependence metadata from each component which can later be used to determine the optimisation opportunities that can be applied when components are composed together. This will include a dependence summary for each component which describes its internal iteration space and the memory locations used in each iteration, and a TaskGraph data structure which is a large-grain inter-component dataflow graph. This metadata can be used to find fusion opportunities across component boundaries; a dependence calculus will then be used to determine the dependence summary of the new fused component. A number of new issues will be addressed, including mixing data- and task-parallelism, the effect of heterogeneous resources on optimisation algorithms, irregular data structures such as an unstructured mesh, and handling out-or-order arrival of data from a network or distributed storage system. We plan to evaluate our work using three case studies (an oceanic plankton ecology model, a structured adaptive-mesh Poisson solver, and a DNS fluid dynamic application).