Return to search

Design and optimisation of scientific programs in a categorical language

This thesis presents an investigation into the use of advanced computer languages for scientific computing, an examination of performance issues that arise from using such languages for such a task, and a step towards achieving portable performance from compilers by attacking these problems in a way that compensates for the complexity of and differences between modem computer architectures. The language employed is Aldor, a functional language from computer algebra, and the scientific computing area is a subset of the family of iterative linear equation solvers applied to sparse systems. The linear equation solvers that are considered have much common structure, and this is factored out and represented explicitly in the language as a framework, by means of categories and domains The flexibility introduced by decomposing the algorithms and the objects they act on into separate modules has a strong performance impact due to its negative effect on temporal locality. This necessitates breaking the barriers between modules to perform cross component optimisation In this instance the task reduces to one of collective loop fusion and array contraction Traditional approaches to this problem rely on static heuristics and simplified machine models that do not deal well with the complex trade-offs involved in targeting modem computer architectures. To rectify this we develop a technique called iterative collective loop fusion that empirically evaluates different candidate transformations in order to select the best available. We apply our technique to programs derived from the iterative solver framework to demonstrate its effectiveness, and compare it against other techniques for collective loop fusion from the literature, and more traditional approaches such as using Fortran, C and/or high-performance library routines. The use of a high level categorical language such as Aldor brings important benefits in terms of elegance of expression, comprehensibility, and code reuse. Iterative collective loop fusion outperforms the other collective loop fusion techniques. Applying it to the iterative solver framework gives programs with performance that is comparable with the traditional approaches.

Identiferoai:union.ndltd.org:bl.uk/oai:ethos.bl.uk:641099
Date January 2005
CreatorsAshby, Thomas James
PublisherUniversity of Edinburgh
Source SetsEthos UK
Detected LanguageEnglish
TypeElectronic Thesis or Dissertation
Sourcehttp://hdl.handle.net/1842/11553

Page generated in 0.002 seconds