Efficient data race detection for async-finish parallelism

Efficient data race detection for async-finish parallelism
复制标题

针对异步完成并行性的高效数据竞争检测

DOI:
10.1007/s10703-012-0143-7
复制
发表时间:
2010
影响因子:
0.8
通讯作者:
Eran Yahav
Eran Yahav
中科院分区:
计算机科学4区
文献类型:
--
作者:
Raghavan Raman;Jisheng Zhao;Vivek Sarkar;Martin T. Vechev;Eran Yahav

文献摘要

被引文献

相似文献

并行编程的一个主要生产力障碍是数据竞争的存在。数据竞争可能导致各种有害的程序行为,包括违反确定性和内存损坏。然而,当前动态数据竞争检测器的运行时开销对于主流软件开发来说仍然过大(通常会导致10倍或更多的减速)。在本文中,我们提出了一种高效的动态竞争检测算法,它既能处理像X10和哈瓦那Java(HJ)等语言中使用的异步 - 完成任务并行编程模型,也能处理Cilk中使用的派生 - 同步结构。我们已经在一个名为TaskChecker的工具中实现了我们的算法,并在一组12个基准测试上对其进行了评估。为了减少动态分析的开销,我们还在该工具中实现了各种静态优化。我们的实验结果表明,我们的方法在实践中表现良好,在优化的情况下,与串行执行相比,平均减速为3.05倍。
A major productivity hurdle for parallel programming is the presence of data races. Data races can lead to all kinds of harmful program behaviors, including determinism violations and corrupted memory. However, runtime overheads of current dynamic data race detectors are still prohibitively large (often incurring slowdowns of 10× or more) for use in mainstream software development. In this paper, we present an efficient dynamic race detection algorithm that handles both the async-finish task-parallel programming model used in languages such as X10 and Habanero Java (HJ) and the spawn-sync constructs used in Cilk. We have implemented our algorithm in a tool called TaskChecker and evaluated it on a suite of 12 benchmarks. To reduce overhead of the dynamic analysis, we have also implemented various static optimizations in the tool. Our experimental results indicate that our approach performs well in practice, incurring an average slowdown of 3.05× compared to a serial execution in the optimized case.