Asserting and Checking Determinism for Multithreaded Programs.
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...
| Publicado en: | Communications of the ACM Vol. 53; no. 6; pp. 97 - 106 |
|---|---|
| Autores principales: | , |
| Formato: | Artículo |
| Publicado: |
Association for Computing Machinery
Jun2010
|
| Materias: | |
| Acceso en línea: | Ver este registro en EBSCOhost |
| fields | @attributes: recordID: 1 pdfLink: plink: https://search.ebscohost.com/login.aspx?direct=true&db=hlh&AN=51189670&site=ehost-live header: @attributes: shortDbName: hlh uiTerm: 51189670 longDbName: Humanities International Complete uiTag: AN controlInfo: bkinfo: jinfo: jid: 00010782 ACM jtl: Communications of the ACM issn: 00010782 maglogo: N pubinfo: dt: Jun2010 vid: 53 iid: 6 pid: 68 pub: Association for Computing Machinery artinfo: ui: 51189670 10.1145/1743546.1743572 ppf: 97 ppct: 9 formats: tig: atl: Asserting and Checking Determinism for Multithreaded Programs. aug: au: Burnim, Jacob Sen, Koushik affil: EECS Department, UC Berkeley, CA. su: Parallel programs (Computer programs) Simultaneous multithreading processors Parallel processing Debugging Computer software testing Java programming language sug: subj: Parallel programs (Computer programs) Simultaneous multithreading processors Parallel processing Debugging Computer software testing Java programming language ab: 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, nondeterministic scheduling can lead to nondeterministic results—where some interleavings produce the correct result while others do 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 nondeterministic behavior. These races were distinguished from a number of benign races in the benchmarks. pubtype: Periodical doctype: Article src: R language: English refInfo: copyright: @attributes: flag: Y dt: @attributes: year: 2010 holdings: @attributes: islocal: N |
|---|