Parallel programming is necessary to solve large and computation-intensive problems. Parallelism is also the way an application achieves optimal performance on multi-core processors. However, parallel programming poses more challenges than serial programming. The goal of my research is to investigate a parallel programming model that eases the development of scientific and engineering applications and helps achieve optimal performance.

Tarragon is a parallel library that raises the level of abstraction by providing classes for tasks, inter-task communication, and dependency descriptions. The run-time structure of an application is described by a graph. The graph helps separate performance from correctness and other application-specific concerns. Tarragon encapsulates run-time services which are able to analyze the graph and to discover opportunities for dynamic optimizations, such as overlap of computation with communication. Applications that would benefit from dynamic scheduling, dynamic load balancing, and fine-grain communication are the target of Tarragon.