Programming Languages that support multidimensional arrays normally prescribe as part of the language definition how those arrays are laid out in memory. For example, Fortran uses column-major and C/C++ use row-major. This is great when we write our code in such a way that multidimensional arrays are accessed in the same order that they are stored in memory, and very bad (up to 10 times slower) otherwise. An alternative is to store arrays in a compromise storage layout, typically using a pattern of a space-filling curve.
C# is interesting in this respect, because the language not only has multidimensional arrays, but also allows the way in which such arrays are accessed in memory to be modified by the programmer using indexers.
The aim of this project is to study the performance of scientific applications written in C# when using a variety of space-filling curves as a storage layout pattern for multidimensional arrays.
To do this project, you should not be scared by large, existing pieces of software, and have the ability to get complex pieces of code to work.
Olav Beckmann
Last modified: Wed Oct 5 18:25:33 BST 2005