Software Support For Improving Locality in Advanced Scientific Codes
Publication or External Link
Scientists today rely on powerful computers to perform simulations
critical for research and development. Modern microprocessors
provide high performance by exploiting data locality with
carefully designed multi-level caches. Programs can achieve
good performance only if they possess data locality,
keeping most data in cache and avoiding accesses to memory.
Compiler transformations can improve locality and achieve large performance improvements, particularly for linear algebra codes. However, as scientific computations increase in complexity, they employ advanced features such as 3D arrays, sparse meshes, and pointer-based data structures that make it difficult to utilize caches well.
This proposal aims to develop and evaluate software support for improving locality for advanced scientific applications for both sequential and parallel machines. The basic premise is that both compile-time analyses and sophisticated run-time systems are necessary. Run-time systems are needed because many programs are not analyzable statically. Compiler support is crucial both for inserting interfaces to the run-time system and for directly applying program transformations where possible. Cooperation between the compiler and run-time will be critical for advanced scientific codes. (Also cross-referenced as UMIACS-TR-2000-56)