Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1345206.1345212acmconferencesArticle/Chapter ViewAbstractPublication PagesppoppConference Proceedingsconference-collections
research-article

Quasi-static scheduling for safe futures

Published: 20 February 2008 Publication History

Abstract

Migrating sequential programs to effectively utilize next generation multicore architectures is a key challenge facing application developers and implementors. Languages like Java that support complex control- and dataflow abstractions confound classical automatic parallelization techniques. On the other hand, introducing multithreading and concurrency control explicitly into programs can impose a high conceptual burden on the programmer, and may entail a significant rewrite of the original program.
In this paper, we consider a new technique to address this issue. Our approach makes use of futures, a simple annotation that introduces asynchronous concurrency into Java programs, but provides no concurrency control. To ensure concurrent execution does not yield behavior inconsistent with sequential execution (i.e., execution yielded by erasing all futures), we present a new interprocedural summary-based dataflow analysis. The analysis inserts lightweight barriers that block and resume threads executing futures if a dependency violation may ensue. There are no constraints on how threads execute other than those imposed by these barriers.
Our experimental results indicate futures can be leveraged to transparently ensure safety and profitably exploit parallelism; in contrast to earlier efforts, our technique is completely portable, and requires no modifications to the underlying JVM.

References

[1]
Multitreemap. http://sourceforge.net/projects/multitreemap/.
[2]
David F. Bacon, Susan L. Graham, and Oliver J. Sharp. Compiler transformations for high-performance computing. ACM Computing Surveys, 26(4):345--420, 1994.
[3]
S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanoviç, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA, pages 169--190, 2006.
[4]
Robert D. Blumofe, Christopher F. Joerg, Bradley C. Kuszmaul, Charles E. Leiserson, Keith H. Randall, and Yuli Zhou. Cilk: an efficient multithreaded runtime system. Journal of Parallel Distributed Computing, 37(1):55--69, 1996.
[5]
John Boyland. Checking interference with fractional permissions. In SAS, pages 55--72, 2003.
[6]
Michael J. Carey, David J. DeWitt, and Jeffrey F. Naughton. The OO7 benchmark. In SIGMOD, pages 12--21, 1993.
[7]
J. Choi, M. Gupta, M. Serrano, V. C. Sreedhar, and S. Midkiff. Escape analysis for Java. In OOPSLA, pages 1--19, 1999.
[8]
Chen Ding, Xipeng Shen, Kirk Kelsey, Chris Tice, Ruke Huang, and Chengliang Zhang. Software behavior oriented parallelization. In PLDI, pages 223--234, 2007.
[9]
Cormac Flanagan and Matthias Felleisen. The semantics of future and its use in program optimizations. In POPL.
[10]
Mary W. Hall, Brian R. Murphy, Saman P. Amarasinghe, Shih-Wei Liao, and Monica S. Lam. Interprocedural analysis for parallelization. In LCPC, pages 61--80, 1995.
[11]
R. Halstead. Multilisp: A Language for Concurrent Symbolic Computation. ACM Trans. Program. Lang. Syst., 7(4):501--538, 1985.
[12]
Tim Harris and Keir Fraser. Language Support for Lightweight Transactions. In OOPSLA, pages 388--402, 2003.
[13]
Tim Harris and Satnam Singh. Feedback Directed Implicit Parallelism. In IFCP, pages 251--264, 2007.
[14]
Maurice Herlihy, Victor Luchangco, Mark Moir, and William N. Scherer, III. Software Transactional Memory for Dynamic-Sized Data Structures. In PODC, pages 92--101, 2003.
[15]
Maurice Herlihy and J. Eliot B. Moss. Transactional memory: architectural support for lock-free data structures. In ISCA, pages 289--300, 1993.
[16]
Troy A. Johnson, Rudolf Eigenmann, and T. N. Vijaykumar. Min-cut program decomposition for thread-level speculation. In PLDI, pages 59--70, 2004.
[17]
R. Kelsey, W. Clinger, and J. Rees. Revised 5 report on the algorithmic language scheme. Higher-Order and Symbolic Computation, 11(3):7--105, 1998.
[18]
David Kranz, Robert H. Halstead, Jr., and Eric Mohr. Mul-T: A High-Performance Parallel Lisp. In PLDI, pages 81--90, 1989.
[19]
Milind Kulkarni, Keshav Pingali, Bruce Walter, Ganesh Ramanarayanan, Kavita Bala, and L. Paul Chew. Optimistic parallelism requires abstractions. In PLDI, pages 211--222, 2007.
[20]
O. Lhotak. Spark: A flexible points-to analysis framework for java. Master?s thesis, McGill University, 2002.
[21]
Wei Liu, James Tuck, Luis Ceze, Wonsun Ahn, Karin Strauss, Jose Renau, and Josep Torrellas. Posh: a tls compiler that exploits program structure. In PPOPP, pages 158--167, 2006.
[22]
B. McCloskey, F. Zhou, D. Gay, and E. Brewer. Autolocker: Synchronization Inference for Atomic Sections. In POPL, pages 346--358, 2006.
[23]
Rick Mohr, David Kranz, and Robert Halstead. Lazy task creation: A technique for increasing the granularity of parallel programs. In LFP, pages 185--197, 1990.
[24]
Martin C. Rinard and Pedro C. Diniz. Commutativity analysis: A technique for automatically parallelizing pointer-based computations. In IPPS, pages 14--22, 1996.
[25]
Martin C. Rinard, Daniel J. Scales, and Monica S. Lam. Jade: A High-Level, Machine-Independent Language for Parallel Programming. IEEE Computer, 26(6):28--38, 1993.
[26]
R. Rugina and M. C. Rinard. Pointer analysis for structured parallel programs. ACM Trans. Program. Lang. Syst., 25(1):70--116, 2003.
[27]
L. A. Smith, J. M. Bull, and J. Obdrzalek. A parallel java grande benchmark suite. In ACM Supercomputing, page 8, 2001.
[28]
J. Greggory Steffan, Christopher B. Colohan, Antonia Zhai, and Todd C. Mowry. A scalable approach to thread-level speculation. In ISCA, pages 1--12, 2000.
[29]
C. von Praun, L. Ceze, and C. Cascaval. Implicit parallelism with ordered transactions. In PPOPP, pages 79--89, 2007.
[30]
Adam Welc, Suresh Jagannathan, and Antony Hosking. Safe futures for java. In OOPSLA, pages 439--453, 2005.
[31]
L. Rauchwerger Y. Zhan and J. Torrellas. Hardware for speculative run-time parallelization in distributed shared-memory multiprocessors. In HPCA, pages 162--173, 1998.\endthebibliography

Cited By

View all
  • (2022)Static prediction of parallel computation graphsProceedings of the ACM on Programming Languages10.1145/34987086:POPL(1-31)Online publication date: 12-Jan-2022
  • (2019)Transitive joinsProceedings of the 24th Symposium on Principles and Practice of Parallel Programming10.1145/3293883.3295724(378-390)Online publication date: 16-Feb-2019
  • (2018)Dynamic Deadlock Verification for General Barrier SynchronisationACM Transactions on Programming Languages and Systems10.1145/322906041:1(1-38)Online publication date: 11-Dec-2018
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PPoPP '08: Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming
February 2008
308 pages
ISBN:9781595937957
DOI:10.1145/1345206
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 20 February 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. concurrency control
  2. future
  3. static program analysis

Qualifiers

  • Research-article

Conference

PPoPP08
Sponsor:

Acceptance Rates

Overall Acceptance Rate 230 of 1,014 submissions, 23%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)1
Reflects downloads up to 20 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2022)Static prediction of parallel computation graphsProceedings of the ACM on Programming Languages10.1145/34987086:POPL(1-31)Online publication date: 12-Jan-2022
  • (2019)Transitive joinsProceedings of the 24th Symposium on Principles and Practice of Parallel Programming10.1145/3293883.3295724(378-390)Online publication date: 16-Feb-2019
  • (2018)Dynamic Deadlock Verification for General Barrier SynchronisationACM Transactions on Programming Languages and Systems10.1145/322906041:1(1-38)Online publication date: 11-Dec-2018
  • (2017)Deadlock avoidance in parallel programs with futures: why parallel tasks should not wait for strangersProceedings of the ACM on Programming Languages10.1145/31433591:OOPSLA(1-26)Online publication date: 12-Oct-2017
  • (2016)Automatic parallelization of pure method calls via conditional future synthesisACM SIGPLAN Notices10.1145/3022671.298403551:10(20-38)Online publication date: 19-Oct-2016
  • (2016)Automatic parallelization of pure method calls via conditional future synthesisProceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications10.1145/2983990.2984035(20-38)Online publication date: 19-Oct-2016
  • (2016)Verifying Custom Synchronization Constructs Using Higher-Order Separation LogicACM Transactions on Programming Languages and Systems10.1145/281863838:2(1-72)Online publication date: 4-Jan-2016
  • (2014)Combining Shared State with Speculative Parallelism in a Functional LanguageProceedings of the 26nd 2014 International Symposium on Implementation and Application of Functional Languages10.1145/2746325.2746328(1-10)Online publication date: 1-Oct-2014
  • (2013)Proof-Directed Parallelization Synthesis by Separation LogicACM Transactions on Programming Languages and Systems10.1145/2491522.249152535:2(1-60)Online publication date: 1-Jul-2013
  • (2013)Automatic Synthesis of Deterministic ConcurrencyStatic Analysis10.1007/978-3-642-38856-9_16(283-303)Online publication date: 2013
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media