skip to main content
research-article

OoOJava: software out-of-order execution

Published:12 February 2011Publication History
Skip Abstract Section

Abstract

Developing parallel software using current tools can be challenging. Even experts find it difficult to reason about the use of locks and often accidentally introduce race conditions and deadlocks into parallel software. OoOJava is a compiler-assisted approach that leverages developer annotations along with static analysis to provide an easy-to-use deterministic parallel programming model. OoOJava extends Java with a task annotation that instructs the compiler to consider a code block for out-of-order execution. OoOJava executes tasks as soon as their data dependences are resolved and guarantees that the execution of an annotated program preserves the exact semantics of the original sequential program. We have implemented OoOJava and achieved an average speedup of 16.6x on our ten benchmarks.

References

  1. M. D. Allen, S. Sridharan et al. Serialization sets: A dynamic dependence-based parallel execution model. In PPoPP, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. P. Bellens, J. Perez et al. CellSs: a programming model for the Cell BE architecture. SC, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. E. D. Berger, T. Yang et al. Grace: Safe multithreaded programming for C/C++. In OOPSLA, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. R. L. Bocchino, Jr., V. S. Adve et al. A type and effect system for deterministic parallel Java. In OOPSLA, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. Borkar. Thousand core chips: A technology perspective. In DAC, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. B. Cahoon and K. S. McKinley. Data flow analysis for software prefetching linked data structures in Java. In PACT, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. C. Cao Minh, J. Chung et al. STAMP: Stanford transactional applications for multi-processing. In IISWC, 2008.Google ScholarGoogle Scholar
  8. J.-D. Choi, M. Burke et al. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In POPL, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. L. Dagum and R. Menon. OpenMP: An industry-standard API for shared-memory programming. IEEE Comput. Sci. Eng., 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. K. Dai. Code parallelization for the LGDG large-grain dataflow computation. In CONPAR 90 - VAPP IV, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. J. S. Danaher, I.-T. A. Lee et al. The JCilk language for multithreaded computing. In SCOOL, 2005.Google ScholarGoogle Scholar
  12. A. Deutsch. Interprocedural may-alias analysis for pointers: Beyond k-limiting. In PLDI, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. C. Ding, X. Shen et al. Software behavior oriented parallelization. In PLDI, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Y. Etsion, F. Cabarcas et al. Task superscalar: An out-of-order task pipeline. In MICRO, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. C. Huang and L. V. Kale. Charisma: Orchestrating migratable parallel objects. In HPDC, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. Huang, A. Raman et al. Decoupled software pipelining creates parallelization opportunities. In CGO, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. J. C. Jenista, Y. Eom et al. Disjoint reachability analysis. Tech. Rep. UCI-ISR-10--4, University of California, Irvine, 2010.Google ScholarGoogle Scholar
  18. J. C. Jenista, Y. Eom et al. OoOJava: An out-of-order approach to parallel programming. In HotPar, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. P. Jouvelout and D. Gifford. The FX-87 interpreter. In ICCL, 1988.Google ScholarGoogle ScholarCross RefCross Ref
  20. H.-W. Loidl, F. Rubio et al. Comparing parallel functional languages: Programming and performance. HOSC, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. M. Olszewski, J. Ansel et al. Kendo: Efficient deterministic multithreading in software. In ASPLOS, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. K. H. Randall. Cilk: Efficient Multithreaded Computing. Massachusetts Institute of Technology, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. L. Rauchwerger, N. M. Amato et al. Run-time methods for parallelizing partially parallel loops. In ICS, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. M. C. Rinard, D. J. Scales et al. Jade: A high-level, machineindependent language for parallel programming. Computer, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. Sagiv, T. Reps et al. Parametric shape analysis via 3-valued logic. TOPLAS, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. J. H. Saltz and R. Mirchandaney. Run-time parallelization and scheduling of loops. TC, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. L. A. Smith, J. M. Bull et al. A parallel Java Grande benchmark suite. In SC, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. J. Subhlok and B. Yang. A new model for integrated nested task and data parallel programming. In PPoPP, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. R. M. Tomasulo. An efficient algorithm for exploiting multiple arithmetic units. IBM J. of Res. Dev., 1967. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. S. K. Venkata, I. Ahn et al. SD-VBS: The San Diego Vision Benchmark Suite. In IISWC, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. C. von Praun, L. Ceze et al. Implicit parallelism with ordered transactions. In PPoPP, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. A. Welc, S. Jagannathan et al. Safe futures for Java. In OOPSLA, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. J. Zhou and B. Demsky. Bamboo: A data-centric, object-oriented approach to multi-core software. In PLDI, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. OoOJava: software out-of-order execution

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 46, Issue 8
        PPoPP '11
        August 2011
        300 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2038037
        Issue’s Table of Contents
        • cover image ACM Conferences
          PPoPP '11: Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
          February 2011
          326 pages
          ISBN:9781450301190
          DOI:10.1145/1941553
          • General Chair:
          • Calin Cascaval,
          • Program Chair:
          • Pen-Chung Yew

        Copyright © 2011 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 12 February 2011

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!