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...

Descripción completa

Detalles Bibliográficos
Publicado en:Communications of the ACM Vol. 53; no. 6; pp. 97 - 106
Autores principales: Burnim, Jacob, Sen, Koushik
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