Alden King


Under advisor Scott Baden.

The Saaz library, like many array libraries, suffers from the problem of supporting abstractions in tight loop nests. These abstractions can introduce small amounts of overhead. Taken as a whole, however, in loops which execute thousands or millions of times, even function calls can be expensive. Tettnanger is a compiler which utilizes domain-specific knowledge of the semantics of the Saaz library to optimize its operations. The most rewarding optimizations are those which inline through function pointers. More minor optimizations primarily focus on eliminating other library overheads such as caching variables on the stack, and inlining function calls.

I made a poster for the Jacobs school research expo which describes how some of these less sophisticated optimizations perform.

The latest results regarding an automatic translator (compiler) have been submitted to PLDI 2012.


Under advisor Scott Baden.
Collaborating with Eric Arobone and Sutanu Sarkar.

The Saaz project aims to create a database for scientists. The past few decades have seen lots of growth in relational databases, but this has had little impact on the scientific community. We went to bring the benefits of databases to scientific researchers whose simulations and datasets do not fit will into the relational model.

We are designing Saaz as a computational database to combine spacial data retrieval with powerful computational facilities tailored to dynamic representations of irregular time-dependent structures. The Saaz database moves computation-intensive workloads to a higher level, while still preserving flexibility. To efficiently facilitate these numerical algorithms within the database, we move away from the relational model to support an imperative style of query that conserves spacial locality. This allows scientists to focus not on their data structures, organization, or persistence, but instead on their models and computations.

The scope of Saaz was originally the entire database, but the name now applies specifically to the query engine. Tettnanger plays the roll of the query optimizer.

One of the nice features of Saaz is the ability to predicate execution of a query. This helps scientists isolate the effects of certain regions of interest.

A small section of delta at a single timestep. The separate vortical structures are colored differently. Using predication we can restrict queries to execute inside or outside of these structures.

Saaz has support for both dynamic (online) evaluation, and offline evaluation. While Saaz does not support MPI internally, it can be used easily within an MPI process. Saaz can be linked in to an existing simulator, or started as an external process which then gets attached to a running simulator. Threading for on-node parllelism is supported via pthreads, although Tettnanger uses OpenMP as well.

Saaz is a C++ class library with three primary objects:

  1. Points
  2. Domains
  3. Arrays
Points are integer tuples representing an element of Zn. Domains are a cross product of two points, representing a rectilinear subspace of Zn. Domains form the index set of Arrays, which are maps from the points in a domain to values. Fortran bindings are provided to save and load Saaz formatted data files.

I made a poster for the Jacobs school research expo.

I have published a paper at eScience [pdf].
The slides are here [pdf].

These projects are executed as a member of the Computational Fluid Dynamics group here at UCSD.