# Ljungberg 2007 March 28

### From NA-Wiki

**Speaker:** Malin Ljungberg, Uppsala University

**Title:** Design of High Performance Computing Software for Genericity and Variability

**When:** The NA seminar meets om Wed March 28 at 15:15 in D4523

**Abstract**

Computer simulations have emerged as a cost efficient complement to laboratory experiments, as computers have become increasingly powerful. The aim of the present work is to explore the ideas of some state of the art software development practices, and ways in which these can be useful for developing high performance research codes. The introduction of these practices, and the modular designs that they give rise to, raises issues regarding a potential conflict between runtime efficiency on one hand and develoment efficiency on the other. Flexible software modules, based on mathematical abstractions, will provide support for convenient implementation and modification of numerical operators. Questions still remain about whether such modules will provide the efficiency which is required for high performance applications.

To answer these questions, we have performed investigations within two different problem domains. The first domain consisted of modular frameworks for the numerical solution of Partial Differential Equations. Such frameworks proved a suitable setting, since several of my research questions revolved around the issue of modularity.

The second problem domain was that of symmetry exploiting algorithms. These algorithms are based on group theory, and make ample use of mathematical abstractions from that field. The domain of symmetry exploiting algorithms gave us opportunities to investigate difficulties in combining modularity based on high level abstractions with low level optimizations using data layout and parallelization.

In conclusion, our investigation of software development practices for the area of high performance computing has proved very fruitful indeed. We find that none of the concerns that were raised should lead us to refrain from the use of the practices that we have considered. On the contrary, in the two case studies presented here, these practices lead to designs that perform well in terms of usability as well as runtime efficiency.