Automatic Compiler-Based Data Structure Generation

by   K. F. D. Rietveld, et al.

Optimizing compilers are mainly equipped to optimize control flow. The optimization of data structures is left to the programmer and it is the programmer's responsibility to design the data structures to suit the target hardware. Very specific data structures are required to exploit certain hardware features, such as cache line size, address alignment, vector width, and memory hierarchy specifics. Because optimizing compilers do not target data structures, these features are explicitly encoded in program specifications. This leads to convoluted programs that obscure the essence of the computation from the compiler, in turn causing compiler analysis techniques to break down and hampering compiler optimizations from being applied. To solve this problem, we propose to move towards the specification of programs without explicitly specifying the data structure. The compiler will automatically generate actual data structures and executable code starting from this specification. In this paper, we introduce a compiler-based framework to support this automatic generation of data structures, allowing the compiler to go beyond the optimization of solely control flow and also target the way data is organized and accessed. As a case study of the effectiveness of this framework, we present a detailed description and experimental results of the application of the proposed techniques to automatically generate data structures for sparse matrix computations. We show that this way sparse data structures can be generated that were up till now only specified by hand and that automatically instantiated routines and corresponding data structures can be found that outperform implementations of three existing sparse algebra libraries.


page 34

page 35

page 36


Every Data Structure Deserves Lock-Free Memory Reclamation

Memory-management support for lock-free data structures is well known to...

ViPIOS - VIenna Parallel Input Output System: Language, Compiler and Advanced Data Structure Support for Parallel I/O Operations

For an increasing number of data intensive scientific applications, para...

Pointer-Chase Prefetcher for Linked Data Structures

Caches only exploit spatial and temporal locality in a set of address re...

Compiling Database Application Programs

There is a trend towards increased specialization of data management sof...

ECP SOLLVE: Validation and Verification Testsuite Status Update and Compiler Insight for OpenMP

The OpenMP language continues to evolve with every new specification rel...

Compiling Recurrences over Dense and Sparse Arrays

Recurrence equations lie at the heart of many computational paradigms in...

Control Flow Duplication for Columnar Arrays in a Dynamic Compiler

Columnar databases are an established way to speed up online analytical ...

Please sign up or login with your details

Forgot password? Click here to reset