Please choose your delivery country and your customer group
In order to mitigate the impact of the constantly widening gap between processor speed and main memory performance on the runtimes of application codes, today's computer architectures commonly employ hierarchical memory designs. Efficient program execution can only be expected if the underlying hierarchical memory architecture is respected. This is particularly true for numerically intensive codes. The tuning of the utilization of the memory hierarchy covers a wide spectrum of techniques ranging from hardware-based technologies to compiler-based code transformations. The latter may treat increased computational work for reduced memory costs, for example, and are a long way from being introduced automatically by a compiler. In general, achieving both high runtime efficiency and code portability represents a software engineering challenge that must be faced whenever designing numerical libraries. In this thesis, we will present approaches towards the optimization of the data locality of implementations of grid-based numerical algorithms. In particular, we will concentrate on multigrid methods based on structured meshes as well as cellular automata in both 2D and 3D. As a representative example of cellular automata, we will consider the lattice Boltzmann method for simulating fluid flow problems. Furthermore, we will discuss a novel approach towards inherently cache-aware multigrid methods.