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.