This paper presents a formal modeling paradigm that is callable from C, the dominant language for embedded systems programming , for message passing APIs that provides reasonable assurance that the model correctly captures intended behavior. The model is a suitable reference solution for the API, and it supports putative what-if queries over API scenarios… (More)
Coordination and synchronization of parallel tasks is a major source of complexity in parallel programming. These constructs take many forms in practice including directed barrier and point-to-point synchronizations, termination detection of child tasks, and mutual exclusion in accesses to shared resources. A read-write lock is a synchronization primitive… (More)
Asynchronous Checkpoint/Restart for the Concurrent Collections Model by Nick Vrvilo It has been claimed that what simplifies parallelism can also simplify resilience. In this thesis we describe an asynchronous checkpoint/restart framework for the Concurrent Collections programming model (CnC)—a dataflow-based programming model— and demonstrate that CnC is… (More)
The Habanero Java Library (HJ-lib) is a Java 8 library implementation of the Habanero Java (HJ) programming model. Calls into this pure Java library provide support for all HJ primitives, including async, finish, and phasers. In previous work, we presented VR, a custom verification run-time designed to be used within Java Pathfinder (JPF) to verify a subset… (More)
I incorporated the modeling of fractures into simulators for fluid flow through porous media, and evaluated the impact of fractures on reservoir productivity. I implemented a discontinuous Galerkin solver as a forward propagation engine for reverse time migration. Large scale simulation studies using BP HPC compute clusters.
Optimized placement of data and computation for locality is critical for improving performance and reducing energy consumption on modern computing systems. However, for most programming models, modifying data and computation placements typically requires rewriting large portions of the application, thereby posing a huge performance portability challenge in… (More)
The Open Community Runtime (OCR) is a new runtime system designed to meet the needs of extreme-scale computing. While there is growing support for the idea that future execution models will be based on dynamic tasks, there is little agreement on what else should be included. OCR minimally adds events for synchronization and relocatable data-blocks for data… (More)
Habanero is a task parallel programming model that provides correctness guarantees to the programmer. Even so, programs may contain data races that lead to non-determinism, which complicates debugging and verification. This paper presents a sound algorithm based on permission regions to prove data race and deadlock freedom in Habanero programs. Permission… (More)