Chang-Seo Park

dblp:73/1044 · DBLP profile ↗
← Back
8ranked-venue papers
5as first author
0since 2021 · last 2013
—ORCID · none

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

Systems, architecture and hardware · 4 · 4 first-authorSoftware engineering, systems software and programming languages · 4 · 1 first-authorTheory of computation · 1

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
7 papers
Concurrent programming · 66% Program analysis · 28% Software testing · 5%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Parallel and multicore computing · 100%

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

TopicWeightPapersLastEvidence papers
Concurrent programming
concurrency bugs
0.452012
Concurrent breakpoints · PPoPP 2012
A randomized dynamic program analysis technique for detecting real deadlocks · PLDI 2009
Effective static deadlock detection · ICSE 2009
Program analysis
dynamic analysis
0.442013
Scalable data race detection for partitioned global address space programs · PPoPP 2013
Efficient data race detection for distributed memory parallel programs · SC 2011
A randomized dynamic program analysis technique for detecting real deadlocks · PLDI 2009
Concurrent programming › concurrency bug detection
data race detection
0.322013
Scalable data race detection for partitioned global address space programs · PPoPP 2013
Efficient data race detection for distributed memory parallel programs · SC 2011
Concurrent programming
deadlock detection
0.222009
A randomized dynamic program analysis technique for detecting real deadlocks · PLDI 2009
Effective static deadlock detection · ICSE 2009
Parallel and multicore computing › parallel programming models › distributed memory programming models
partitioned global address space
0.212013
Scalable data race detection for partitioned global address space programs · PPoPP 2013
Concurrent programming › concurrency bugs
concurrency bug reproduction
0.112012
Concurrent breakpoints · PPoPP 2012
Software testing
concurrency testing
0.112009
CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs · CAV 2009
Concurrent programming › deadlock detection
dynamic deadlock detection
0.112009
A randomized dynamic program analysis technique for detecting real deadlocks · PLDI 2009
Program analysis
static analysis
0.112009
Effective static deadlock detection · ICSE 2009
Concurrent programming › concurrency bug detection
atomicity violation detection
0.112008
Randomized active atomicity violation detection in concurrent programs · SIGSOFT FSE 2008
Parallel and multicore computing › parallel computing › parallel programming languages
unified parallel c
0.012011
Efficient data race detection for distributed memory parallel programs · SC 2011
Program analysis › concurrent program analysis
static analysis of concurrent programs
0.012009
Effective static deadlock detection · ICSE 2009

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

dynamic analysis · 0.3hierarchical function and instruction level sampling · 0.3aliasing and locality exploitation · 0.3thread schedule control · 0.2programmatic breakpoints · 0.1concurrent breakpoints · 0.1static analysis · 0.1random thread scheduling · 0.1control-dependence graph · 0.1active testing · 0.1
YearPublicationVenuePosition
2013 Scaling data race detection for partitioned global address space programs
abstract
Contemporary and future programming languages for HPC promote hybrid parallelism and shared memory abstractions using a global address space. In this programming style, data races occur easily and are notoriously hard to find. Existing state-of-the-art data race detectors exhibit 10X-100X performance degradation and do not handle hybrid parallelism. In this paper we present the first complete implementation of data race detection at scale for UPC programs. Our implementation tracks local and global memory references in the program and it uses two techniques to reduce the overhead: 1) hierarchical function and instruction level sampling; and 2) exploiting the runtime persistence of aliasing and locality specific to Partitioned Global Address Space applications. The results indicate that both techniques are required in practice: well optimized instruction sampling introduces overheads as high as 6500% (65X slowdown), while each technique in separation is able to reduce it only to 1000% (10X slowdown). When applying the optimizations in conjunction our tool finds all previously known data races in our benchmark programs with at most 50% overhead when running on 2048 cores. Furthermore, while previous results illustrate the benefits of function level sampling, our experiences show that this technique does not work for scientific programs: instruction sampling or a hybrid approach is required.
Chang-Seo Park, Koushik Sen, Costin Iancu
ICS1
2013 Scalable data race detection for partitioned global address space programs
abstract
Contemporary and future programming languages for HPC promote hybrid parallelism and shared memory abstractions using a global address space. In this programming style, data races occur easily and are notoriously hard to find. Previous work on data race detection for shared memory programs reports 10X-100X slowdowns for non-scientific programs. Previous work on distributed memory programs instruments only communication operations. In this paper we present the first complete implementation of data race detection at scale for UPC programs. Our implementation tracks local and global memory references in the program and it uses two techniques to reduce the overhead: 1) hierarchical function and instruction level sampling; and 2) exploiting the runtime persistence of aliasing and locality specific to Partitioned Global Address Space applications. The results indicate that both techniques are required in practice: well optimized instruction sampling introduces overheads as high as 6500% (65X slowdown), while each technique in separation is able to reduce it to 1000% (10X slowdown). When applying the optimizations in conjunction our tool finds all previously known data races in our benchmark programs with at most 50% overhead. Furthermore, while previous results illustrate the benefits of function level sampling, our experiences show that this technique does not work for scientific programs: instruction sampling or a hybrid approach is required.
Chang-Seo Park, Koushik Sen, Costin Iancu
PPoPP1
2012 Concurrent breakpoints
abstract
In program debugging, reproducibility of bugs is a key requirement. Unfortunately, bugs in concurrent programs are notoriously difficult to reproduce because bugs due to concurrency happen under very specific thread schedules and the likelihood of taking such corner-case schedules during regular testing is very low. We propose concurrent breakpoints, a light-weight and programmatic way to make a concurrency bug reproducible. We describe a mechanism that helps to hit a concurrent breakpoint in a concurrent execution with high probability. We have implemented concurrent breakpoints as a light-weight library for Java and C/C++ programs. We have used the implementation to deterministically reproduce several known non-deterministic bugs in real-world concurrent Java and C/C++ programs with almost 100% probability.
Chang-Seo Park, Koushik Sen
PPoPP1
2011 Efficient data race detection for distributed memory parallel programs
abstract
In this paper we present a precise data race detection technique for distributed memory parallel programs. Our technique, which we call Active Testing, builds on our previous work on race detection for shared memory Java and C programs and it handles programs written using shared memory approaches as well as bulk communication. Active testing works in two phases: in the first phase, it performs an imprecise dynamic analysis of an execution of the program and finds potential data races that could happen if the program is executed with a different thread schedule. In the second phase, active testing re-executes the program by actively controlling the thread schedule so that the data races reported in the first phase can be confirmed. A key highlight of our technique is that it can scalably handle distributed programs with bulk communication and single- and splitphase barriers. Another key feature of our technique is that it is precise---a data race confirmed by active testing is an actual data race present in the program; however, being a testing approach, our technique can miss actual data races. We implement the framework for the UPC programming language and demonstrate scalability up to a thousand cores for programs with both fine-grained and bulk (MPI style) communication. The tool confirms previously known bugs and uncovers several unknown ones. Our extensions capture constructs proposed in several modern programming languages for High Performance Computing, most notably non-blocking barriers and collectives.
Chang-Seo Park, Koushik Sen, Paul Hargrove, Costin Iancu
SC1
2009 CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs
Pallavi Joshi, Mayur Naik, Chang-Seo Park, Koushik Sen
CAV3
2009 Effective static deadlock detection
abstract
We present an effective static deadlock detection algorithm for Java. Our algorithm uses a novel combination of static analyses each of which approximates a different necessary condition for a deadlock. We have implemented the algorithm and report upon our experience applying it to a suite of multi-threaded Java programs. While neither sound nor complete, our approach is effective in practice, finding all known deadlocks as well as discovering previously unknown ones in our benchmarks with few false alarms.
Mayur Naik, Chang-Seo Park, Koushik Sen, David Gay
ICSE2
2009 A randomized dynamic program analysis technique for detecting real deadlocks
abstract
We present a novel dynamic analysis technique that finds real deadlocks in multi-threaded programs. Our technique runs in two stages. In the first stage, we use an imprecise dynamic analysis technique to find potential deadlocks in a multi-threaded program by observing an execution of the program. In the second stage, we control a random thread scheduler to create the potential deadlocks with high probability. Unlike other dynamic analysis techniques, our approach has the advantage that it does not give any false warnings. We have implemented the technique in a prototype tool for Java, and have experimented on a number of large multi-threaded Java programs. We report a number of previously known and unknown real deadlocks that were found in these benchmarks.
Pallavi Joshi, Chang-Seo Park, Koushik Sen, Mayur Naik
PLDI2
2008 Randomized active atomicity violation detection in concurrent programs
abstract
Atomicity is an important specification that enables programmers to understand atomic blocks of code in a multi-threaded program as if they are sequential. This significantly simplifies the programmer's job to reason about correctness. Several modern multithreaded programming languages provide no built-in support to ensure atomicity; instead they rely on the fact that programmers would use locks properly in order to guarantee that atomic code blocks are indeed atomic. However, improper use of locks can sometimes fail to ensure atomicity. Therefore, we need tools that can check atomicity properties of lock-based code automatically.
Chang-Seo Park, Koushik Sen
SIGSOFT FSE1