Results 1 -
5 of
5
Asserting and checking determinism for multithreaded programs
- In FSE
, 2009
"... The trend towards processors with more and more parallel cores is increasing the need for software that can take advantage of parallelism. The most widespread method for writing parallel software is to use explicit threads. Writing correct multithreaded programs, however, has proven to be quite chal ..."
Abstract
-
Cited by 20 (4 self)
- Add to MetaCart
The trend towards processors with more and more parallel cores is increasing the need for software that can take advantage of parallelism. The most widespread method for writing parallel software is to use explicit threads. Writing correct multithreaded programs, however, has proven to be quite challenging in practice. The key difficulty is non-determinism. The threads of a parallel application may be interleaved non-deterministically during execution. In a buggy program, non-deterministic scheduling will lead to nondeterministic results—some interleavings will produce the correct result while others will not. We propose an assertion framework for specifying that regions of a parallel program behave deterministically despite nondeterministic thread interleaving. Our framework allows programmers to write assertions involving pairs of program states arising from different parallel schedules. We describe an implementation of our deterministic assertions as a library for Java, and evaluate the utility of our specifications on a number of parallel Java benchmarks. We found specifying deterministic behavior to be quite simple using our assertions. Further, in experiments with our assertions, we were able to identify two races as true parallelism errors that lead to incorrect non-deterministic behavior. These races were distinguished from a number of benign races in the benchmarks.
Haskell on a SharedMemory Multiprocessor. Pages 49–61 of
- Proceedings of the ACM SIGPLAN Workshop on
, 2005
"... Categories and Subject Descriptors D.3.2 [Language Classifica-tions]: Applicative (functional) languages General Terms Languages, Performance 1. Introduction For many years the easiest approach to getting software to gofaster has been to sit around and save up for a new machine (and then preferably ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Categories and Subject Descriptors D.3.2 [Language Classifica-tions]: Applicative (functional) languages General Terms Languages, Performance 1. Introduction For many years the easiest approach to getting software to gofaster has been to sit around and save up for a new machine (and then preferably run the old software on it). It is becoming clear,however, that this free lunch is over [22]. Processor manufacturers have stopped struggling to push clock speeds much further, and areturning their attention to parallelism instead. Multi-core processors, with several symmetric processing cores on a single chip, will bethe norm in consumer machines within the next 1-2 years. The software challenge is to take advantage of this extra processingpower through parallelism.
DETERMIN: Inferring Likely Deterministic Specifications of Multithreaded Programs
"... The trend towards multicore processors and graphic processing units is increasing the need for software that can take advantage of parallelism. Writing correct parallel programs using threads, however, has proven to be quite challenging due to nondeterminism. The threads of a parallel application ma ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
The trend towards multicore processors and graphic processing units is increasing the need for software that can take advantage of parallelism. Writing correct parallel programs using threads, however, has proven to be quite challenging due to nondeterminism. The threads of a parallel application may be interleaved nondeterministically during execution, which can lead to nondeterministic results—some interleavings may produce the correct result while others may not. We have previously proposed an assertion framework for specifying that regions of a parallel program behave deterministically despite nondeterministic thread interleaving. The framework allows programmers to write assertions involving pairs of program states arising from different parallel schedules. We propose an algorithm to dynamically infer likely deterministic specifications for parallel programs given a set of inputs and schedules. We have implemented our specification inference algorithm for Java and have applied it to a number of previously examined Java benchmarks. We were able to automatically infer specifications largely equivalent to or stronger than our manual assertions from our previous work. We believe that the inference of deterministic specifications can aid in understanding and documenting the deterministic behavior of parallel programs. Moreover, an unexpected deterministic specification can indicate to a programmer the presence of erroneous or unintended behavior.
High-level Process Control in Eden
- EuroPar 2003 — Intl. Conf. on Parallel and Distributed Computing, volume 2790 of LNCS
, 2003
"... High-level control of parallel process behaviour simplifies the development of parallel software substantially by freeing the programmer from low-level process management and coordination details. The latter are handled by a sophisticated runtime system which controls program execution. In this pape ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
High-level control of parallel process behaviour simplifies the development of parallel software substantially by freeing the programmer from low-level process management and coordination details. The latter are handled by a sophisticated runtime system which controls program execution. In this paper we look behind the scenes and show how the enormous gap between high-level parallel language constructs and their low-level implementation has been bridged in the implementation of the parallel functional language Eden. The main idea has been to specify the process control in a functional language and to restrict the extensions of the low-level runtime system to a few selected primitive operations.

