Home → News and Events → Events Calendar → Seminar
When: 10:00AM - 11:30AM , March 09, 2018
Speaker: Dr. Tiago Cogumbreiro
Title : Safer Parallel Programming
We live in a world where parallel processors have become the norm. Programs must exploit parallel computing to harness performance benefits from current and future hardware. However, parallel programs suffer from a pernicious class of bugs studied by concurrency theory, where tasks that are running concurrently interfere with each other in unexpected ways.
In this talk, I will present novel techniques that prevent or help debug concurrency errors, with the objective of improving the quality assurance of parallel programming. We will be covering two classes of errors: deadlocks, where tasks are blocked waiting for each other; and data races, where tasks modify the same data while unaware of each other.
An overarching goal of my line of research is to propose a safer parallel programming model, with rigorous semantics and where (concurrency) safety comes first. We will cover three projects to achieve such goal.
First, we will discuss group synchronization, a task coordination pattern with that is the basis for distributed, parallel applications. We propose and formalize a group synchronization API that we proved to be deadlock free, yielding programs that are exempt from synchronization errors by construction.
Second, we introduce a unifying model to detect deadlocks in generalized group synchronization. Our tool supports distributed applications with negligible verification overheads, and includes comprehensive support for Java and X10.
Third, we propose a mathematical argument as to why data races cause deadlocks on awaiting task termination. We use such property to propose a new deadlock-free API for futures, a parallel programming technique with widespread adoption in programming languages.
With hardware becoming more heterogeneous, we can anticipate another wave of disruption on how we write software. In closing, we will discuss how developers require support in porting software to new hardware and how programmers need verification tools that work at scale.