Rishi Surendran

dblp:82/7750 · DBLP profile ↗
← Back
7ranked-venue papers
5as first author
0since 2021 · last 2017
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 5 · 4 first-authorSystems, architecture and hardware · 2 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Concurrent programming · 73% Compilers and program optimization · 13% Software testing · 10%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Parallel and multicore computing · 100%

Topics — the 9 heaviest of 10, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming
concurrency bugs
0.312017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Concurrent programming › concurrency bugs
data races
0.312017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Concurrent programming › concurrency bugs
data race freedom
0.312017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Concurrent programming › concurrency correctness
deadlock freedom
0.312017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Concurrent programming › parallel programming models
futures
0.312017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017
Compilers and program optimization
parallelization
0.212016
Automatic parallelization of pure method calls via conditional future synthesis · OOPSLA 2016
Parallel and multicore computing › parallel programming models
automatic parallelization
0.212016
Automatic parallelization of pure method calls via conditional future synthesis · OOPSLA 2016
Parallel and multicore computing
parallel programming models
0.212014
Test-driven repair of data races in structured parallel programs · PLDI 2014
Program verification › proof assistants
coq
0.112017
Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers · Proc. ACM Program. Lang. 2017

Methods — techniques the papers use, named apart from their topics

threshold expression synthesis · 0.5profile-guided analysis · 0.5synchronization insertion · 0.4structured parallel programming · 0.4formal proof · 0.3cycle detection · 0.3coq · 0.3
YearPublicationVenuePosition
2017 Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangers
abstract
Futures are an elegant approach to expressing parallelism in functional programs. However, combining futures with imperative programming (as in C++ or in Java) can lead to pernicious bugs in the form of data races and deadlocks, as a consequence of uncontrolled data flow through mutable shared memory. In this paper we introduce the Known Joins (KJ) property for parallel programs with futures, and relate it to the Deadlock Freedom (DF) and the Data-Race Freedom (DRF) properties. Our paper offers two key theoretical results: 1) DRF implies KJ, and 2) KJ implies DF. These results show that data-race freedom is sufficient to guarantee deadlock freedom in programs with futures that only manipulate unsynchronized shared variables. To the best of our knowledge, these are the first theoretical results to establish sufficient conditions for deadlock freedom in imperative parallel programs with futures, and to characterize the subset of data races that can trigger deadlocks (those that violate the KJ property). From result 2), we developed a tool that avoids deadlocks in linear time and space when KJ holds, i.e., when there are no data races among references to futures. When KJ fails, the tool reports the data race and optionally falls back to a standard deadlock avoidance algorithm by cycle detection. Our tool verified a dataset of ∼2,300 student’s homework solutions and found one deadlocked program. The performance results obtained from our tool are very encouraging: a maximum slowdown of 1.06× on a 16-core machine, always outperforming deadlock avoidance via cycle-detection. Proofs of the two main results were formalized using the Coq proof assistant.
Tiago Cogumbreiro, Rishi Surendran, Francisco Martins, Vivek Sarkar, Vasco Thudichum Vasconcelos, Max Grossman
Proc. ACM Program. Lang.2
2016 Automatic parallelization of pure method calls via conditional future synthesis
abstract
We introduce a novel approach for using futures to automatically parallelize the execution of pure method calls. Our approach is built on three new techniques to address the challenge of automatic parallelization via future synthesis: candidate future synthesis, parallelism benefit analysis, and threshold expression synthesis. During candidate future synthesis, our system annotates pure method calls as async expressions and synthesizes a parallel program with future objects and their type declarations. Next, the system performs a parallel benefit analysis to determine which async expressions may need to be executed sequentially due to overhead reasons, based on execution profile information collected from multiple test inputs. Finally, threshold expression synthesis uses the output from parallelism benefit analysis to synthesize predicate expressions that can be used to determine at runtime if a specific pure method call should be executed sequentially or in parallel.
Rishi Surendran, Vivek Sarkar
OOPSLA1
2016 Dynamic Determinacy Race Detection for Task Parallelism with Futures
Rishi Surendran, Vivek Sarkar
RV1
2016 Brief Announcement: Dynamic Determinacy Race Detection for Task Parallelism with Futures
abstract
Existing dynamic determinacy race detectors for task-parallel programs are limited to programs with strict computation graphs, where a task can only wait for its descendant tasks to complete. In this paper, we present the first known determinacy race detector for non-strict computation graphs with futures. The space and time complexity of our algorithm are similar to those of the classical SP-bags algorithm, when using only structured parallel constructs such as spawn-sync and async-finish. In the presence of point-to-point synchronization using futures, the complexity of the algorithm increases by a factor determined by the number of future operations, which includes future task creation and future get operations. The experimental results show that the slowdown factor observed for our algorithm relative to the sequential version is in the range of 1.00x to 9.92x, which is very much in line with slowdowns experienced for fully strict computation graphs.
Rishi Surendran, Vivek Sarkar
SPAA1
2014 Inter-iteration Scalar Replacement Using Array SSA Form
Rishi Surendran, Rajkishore Barik, Jisheng Zhao, Vivek Sarkar
CC1
2014 Test-driven repair of data races in structured parallel programs
abstract
A common workflow for developing parallel software is as follows: 1) start with a sequential program, 2) identify subcomputations that should be converted to parallel tasks, 3) insert synchronization to achieve the same semantics as the sequential program, and repeat steps 2) and 3) as needed to improve performance. Though this is not the only approach to developing parallel software, it is sufficiently common to warrant special attention as parallel programming becomes ubiquitous. This paper focuses on automating step 3), which is usually the hardest step for developers who lack expertise in parallel programming.
Rishi Surendran, Raghavan Raman, Swarat Chaudhuri, John M. Mellor-Crummey, Vivek Sarkar
PLDI1
2009 Region Based Structure Layout Optimization by Selective Data Copying
abstract
As the gap between processor and memory continues to grow, memory performance becomes a key performance bottleneck for many applications. Compilers therefore increasingly seek to modify an applicationpsilas data layout to improve cache locality and cache reuse. Whole program structure layout [WPSL] transformations can significantly increase the spatial locality of data and reduce the runtime of programs that use link-based data structures, by increasing the cache line utilization. However, in production compilers WPSL transformations do not realize the entire performance potential possible due to a number of factors. Structure layout decisions made on the basis of whole program aggregated affinity/hotness of structure fields, can be sub optimal for local code regions. WPSL is also restricted in applicability in production compilers for type unsafe languages like C/C++ due to the extensive legality checks and field sensitive pointer analysis required over the entire application. In order to overcome the issues associated with WPSL, we propose region based structure layout (RBSL) optimization framework, using selective data copying. We describe our RBSL framework, implemented in the production compiler for C/C++ on HP-UX IA-64. We show that acting in complement to the existing and mature WPSL transformation framework in our compiler, RBSL improves application performance in pointer intensive SPEC benchmarks ranging from 3% to 28% over WPSL.
Sandya Mannarswamy, R. Govindarajan, Rishi Surendran
PACT3