Parallel Programming Abstractions
Virtual Global Address Space (VGAS)
Modern distributed-memory clusters force programmers to partition their data and move it explicitly, while shared-memory programming stops at the node boundary. VGAS implements one global address space over the whole cluster that behaves like a single large NUMA machine: every node addresses the same data with ordinary pointers, the programmer can still control on which node and NUMA domain each part of the data lives. VGAS places and fetches data in pages with one-sided MPI, without the programmer having to write MPI code.
Data Layout Abstractions+
Data layout has tremendous impact on performance, in particular for high throughput devices. But traditional languages force the programmer to specify the memory layout of multi-valued data containers in a syntax that makes it impossible to change later without modifying all accesses to the data container. Data layout abstractions allow to switch between array of structs and struct of arrays layouts with a single parameter while keeping the traditional syntax.
GPGPU Scientific Computing
Scientific simulations have higher accuracy requirements than multimedia processing applications. With the introduction of optimized floating point processing units in graphics processors and reconfigurable hardware these devices are now also attractive as powerful scientific co-processors.
GPGPU Geometric Refinement
GPUs process data of the same resolution very quickly with massive data parallel execution. But even the massive parallelism cannot compete with adaptive methods when the data size grows cubically under uniform refinement. This project develops parallel refinement strategies with grids and particles that allow to introduce higher resolution in only parts of the computational domain.
