Title: Data Race Analysis and Its Applications
Date: Tuesday, Nov 12, 2024
Time: 12:00 pm - 2:00 pm ET
Location: KACB 2100
Zoom: https://gatech.zoom.us/j/3738795207?pwd=eTZudHoyQy9sak1SK2srQlVIdkZsZz09
Feiyang Jin
Ph.D. Student
School of Computer Science
Georgia Institute of Technology
Committee:
Dr. Vivek Sarkar (Advisor) – School of Computer Science, Georgia Institute of Technology
Dr. Alessandro Orso – School of Computer Science, Georgia Institute of Technology
Dr. Qirun Zhang – School of Computer Science, Georgia Institute of Technology
Dr. Richard Vuduc – School of Computational Science and Engineering, Georgia Institute of Technology
Dr. Milind Chabbi – Uber Technologies.
Abstract:
A data race is a troublesome bug frequently found in parallel programs. It occurs when
two or more accesses to the same memory location happen concurrently, and at least one
of them is a write. Data races are particularly notorious because programs with data races
could lead to non-deterministic behaviors, where the program may or may not return the
same result during different executions, even with identical inputs. It is difficult for programmers
to identify data races given the non-determinism. As a result, even experienced developers
often struggle to understand, locate, and fix data races without the aid of specialized tools.
To assist programmers in writing correct parallel programs without data races, this
proposal outlines techniques for programmers to analyze and repair data races. First,
we study the fundamentals of task-parallel programs and prove that data-race freedom leads
to determinism for certain task-parallel programs. Our theoretical result would greatly help
programmers become confident in the correctness of their programs.
Second, we design a new dynamic race detection algorithm for task-parallel programs with promises.
A promise is a construct that can be used to support arbitrary point-to-point synchronization. The
implementation of the race detection, together with several optimizations we introduced, has
a comparable slowdown to previous race detectors that do not support promises.
Third, we built a tool that visualizes data races found in task-parallel programs. The visualizer consists
of a graph builder and a visualization interface. We conducted a performance evaluation
and an efficacy research survey to demonstrate the usefulness of our tool.
Finally, we design and implement a closed-loop application to repair data races with the help of
large language model. The application uses previous fixed data races as few-shot examples
and asks ChatGPT to remove data races found in a program. The proposed solution by ChatGPT is
checked again to ensure correctness before a new commit is created to notify programmers.