Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2254064.2254071acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Deterministic parallelism via liquid effects

Published: 11 June 2012 Publication History

Abstract

Shared memory multithreading is a popular approach to parallel programming, but also fiendishly hard to get right. We present Liquid Effects, a type-and-effect system based on refinement types which allows for fine-grained, low-level, shared memory multi-threading while statically guaranteeing that a program is deterministic. Liquid Effects records the effect of an expression as a for- mula in first-order logic, making our type-and-effect system highly expressive. Further, effects like Read and Write are recorded in Liquid Effects as ordinary uninterpreted predicates, leaving the effect system open to extension by the user. By building our system as an extension to an existing dependent refinement type system, our system gains precise value- and branch-sensitive reasoning about effects. Finally, our system exploits the Liquid Types refinement type inference technique to automatically infer refinement types and effects. We have implemented our type-and-effect checking techniques in CSOLVE, a refinement type inference system for C programs. We demonstrate how CSOLVE uses Liquid Effects to prove the determinism of a variety of benchmarks.

References

[1]
Nvidia cuda programming guide.
[2]
S. V. Adve, S. Heumann, R. Komuravelli, J. Overbey, P. Simmons, H. Sung, and M. Vakilian. A type and effect system for deterministic parallel java. In OOPSLA, 2009.
[3]
F. Aleen and N. Clark. Commutativity analysis for software parallelization: letting program transformations see the big picture. In ASPLOS, 2009.
[4]
Z. R. Anderson, D. Gay, R. Ennals, and E. A. Brewer. Sharc: checking data sharing strategies for multithreaded c. In PLDI, 2008.
[5]
A. Aviram, S.-C. Weng, S. Hu, and B. Ford. Efficient system-enforced deterministic parallelism. In OSDI, 2010.
[6]
C. Boyapati, R. Lee, and M. C. Rinard. Ownership types for safe programming: preventing data races and deadlocks. In OOPSLA, pages 211--230, 2002.
[7]
M. Chakravarty, G. Keller, R. Lechtchinsky, and W. Pfannenstiel. Nepal: Nested data parallelism in haskell. In Euro-Par, 2001.
[8]
D. G. Clarke and S. Drossopoulou. Ownership, encapsulation and the disjointness of type and effect. In OOPSLA, 2002.
[9]
D. G. Clarke, J. Noble, and J. M. Potter. Simple ownership types for object containment. In ECOOP, 2001.
[10]
R. DeLine and M. Fädrich. Enforcing high-level protocols in low-level software. In PLDI, 2001.
[11]
C. Flanagan and S. N. Freund. Type-based race detection for java. In PLDI, pages 219--232, 2000.
[12]
C. Flanagan and S. Qadeer. A type and effect system for atomicity. In PLDI, 2003.
[13]
J. Foster, T. Terauchi, and A. Aiken. Flow-sensitive type qualifiers. In PLDI, 2002.
[14]
B. Jacobs, F. Piessens, J. Smans, K. R. M. Leino, and W. Schulte. A programming model for concurrent object-oriented programs. TOPLAS, 2008.
[15]
T. Jim, J. G. Morrisett, D. Grossman, M. W. Hicks, J. Cheney, and Y. Wang. Cyclone: A safe dialect of c. In USENIX, 2002.
[16]
M. Kawaguchi, P. Rondon, A. Bakst, and R. Jhala. Liquid effects: Technical report. http://goto.ucsd.edu/ rjhala/liquid.
[17]
S. K. Lahiri and S. Qadeer. Back to the future: revisiting precise program verification using smt solvers. In POPL, 2008.
[18]
S. K. Lahiri, S. Qadeer, and D. Walker. Linear maps. In PLPV, 2011.
[19]
C. Lattner and V. S. Adve. Automatic pool allocation: improving performance by controlling data structure layout in the heap. In PLDI, pages 129--142, 2005.
[20]
K. R. M. Leino, A. Poetzsch-Heffter, and Y. Zhou. Using data groups to specify and check side effects, 2002.
[21]
D. Marino and T. D. Millstein. A generic type-and-effect system. In A. Kennedy and A. Ahmed, editors, TLDI, pages 39--50. ACM, 2009.
[22]
J.-P. Martin, M. Hicks, M. Costa, P. Akritidis, and M. Castro. Dynamically checking ownership policies in concurrent c/c programs. In POPL, pages 457--470, 2010.
[23]
C. C. Minh, J. Chung, C. Kozyrakis, and K. Olukotun. Stamp: Stanford transactional applications for multi-processing. In IISWC, pages 35--46, 2008.
[24]
P. Pratikakis, J. S. Foster, and M. W. Hicks. Locksmith: context-sensitive correlation analysis for race detection. In PLDI, 2006.
[25]
M. Raza, C. Calcagno, and P. Gardner. Automatic parallelization with separation logic. In ESOP, pages 348--362, 2009.
[26]
J. C. Reynolds. Separation logic: A logic for shared mutable data structures. In LICS, pages 55--74, 2002.
[27]
M. C. Rinard and P. C. Diniz. Commutativity analysis: A new analysis technique for parallelizing compilers. TOPLAS, 19(6), 1997.
[28]
P. Rondon, M. Kawaguchi, and R. Jhala. Low-level liquid types. In POPL, pages 131--144, 2010.
[29]
M. Smith. Towards an effects system for ownership domains. In In ECOOP Workshop - FTfJP 2005, 2005.
[30]
T. Terauchi and A. Aiken. A capability calculus for concurrency and determinism. TOPLAS, 30, 2008.
[31]
M. Tofte and J.-P. Talpin. A theory of stack allocation in polymorphically typed languages, 1993.
[32]
M. T. Vechev, E. Yahav, R. Raman, and V. Sarkar. Automatic verification of determinism for structured parallel programs. In SAS, pages 455--471, 2010.
[33]
J. Voung, R. Chugh, R. Jhala, and S. Lerner. Dataflow analysis for concurrent programs using data race detection. In PLDI, 2008.
[34]
D. Walker and J. Morrisett. Alias types for recursive data structures. pages 177--206. 2000.
[35]
E. Yahav and M. Sagiv. Verifying safety properties of concurrent heap-manipulating programs. TOPLAS, 32(5), 2010.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '12: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2012
572 pages
ISBN:9781450312059
DOI:10.1145/2254064
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 47, Issue 6
    PLDI '12
    June 2012
    534 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2345156
    Issue’s Table of Contents
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: 11 June 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. c
  2. dependent types
  3. determinism
  4. liquid types
  5. safe parallel programming
  6. type inference

Qualifiers

  • Research-article

Conference

PLDI '12
Sponsor:

Acceptance Rates

PLDI '12 Paper Acceptance Rate 48 of 255 submissions, 19%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)10
  • Downloads (Last 6 weeks)0
Reflects downloads up to 15 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2023)Flux: Liquid Types for RustProceedings of the ACM on Programming Languages10.1145/35912837:PLDI(1533-1557)Online publication date: 6-Jun-2023
  • (2021)Polymorphic Iterable Sequential Effect SystemsACM Transactions on Programming Languages and Systems10.1145/345027243:1(1-79)Online publication date: 17-Apr-2021
  • (2019)Region and effect inference for safe parallelismAutomated Software Engineering10.1007/s10515-019-00257-326:2(463-509)Online publication date: 1-Jun-2019
  • (2018)GrammarViz 3.0ACM Transactions on Knowledge Discovery from Data10.1145/305112612:1(1-28)Online publication date: 13-Feb-2018
  • (2018)Interactive Discovery of Coordinated Relationship Chains with Maximum Entropy ModelsACM Transactions on Knowledge Discovery from Data10.1145/304701712:1(1-34)Online publication date: 31-Jan-2018
  • (2017)Verifying Invariants of Lock-Free Data Structures with Rely-Guarantee and Refinement TypesACM Transactions on Programming Languages and Systems10.1145/306485039:3(1-54)Online publication date: 10-May-2017
  • (2016)Rehearsal: a configuration verification tool for puppetACM SIGPLAN Notices10.1145/2980983.290808351:6(416-430)Online publication date: 2-Jun-2016
  • (2016)Rehearsal: a configuration verification tool for puppetProceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/2908080.2908083(416-430)Online publication date: 2-Jun-2016
  • (2015)Region and effect inference for safe parallelismProceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE.2015.59(512-523)Online publication date: 9-Nov-2015
  • (2015)PabbleService Oriented Computing and Applications10.1007/s11761-014-0172-89:3-4(269-284)Online publication date: 1-Sep-2015
  • 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

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media