skip to main content
OSTI.GOV title logo U.S. Department of Energy
Office of Scientific and Technical Information

Title: Formal Specification of the OpenMP Memory Model

Abstract

OpenMP [2] is an important API for shared memory programming, combining shared memory's potential for performance with a simple programming interface. Unfortunately, OpenMP lacks a critical tool for demonstrating whether programs are correct: a formal memory model. Instead, the current official definition of the OpenMP memory model (the OpenMP 2.5 specification [2]) is in terms of informal prose. As a result, it is impossible to verify OpenMP applications formally since the prose does not provide a formal consistency model that precisely describes how reads and writes on different threads interact. We expand on our previous work that focused on the formal verification of OpenMP programs through a formal memory model [?]. As in that work, our formalization, which is derived from the existing prose model [2], provides a two-step process to verify whether an observed OpenMP execution is conformant. This paper extends the model to cover the entire specification. In addition to this formalization, our contributions include a discussion of ambiguities in the current prose-based memory model description. Although our formal model may not capture the current informal memory model perfectly, in part due to these ambiguities, our model reflects our understanding of the informal model's intent. We conclude withmore » several examples that may indicate areas of the OpenMP memory model that need further refinement, however it is specified. Our goal is to motivate the OpenMP community to adopt those refinements eventually, ideally through a formal model, in later OpenMP specifications.« less

Authors:
;
Publication Date:
Research Org.:
Lawrence Livermore National Lab. (LLNL), Livermore, CA (United States)
Sponsoring Org.:
USDOE
OSTI Identifier:
936974
Report Number(s):
UCRL-JRNL-226950
Journal ID: ISSN 0885-7458; IJPPE5; TRN: US200821%%174
DOE Contract Number:  
W-7405-ENG-48
Resource Type:
Journal Article
Journal Name:
International Journal of Parallel Programming
Additional Journal Information:
Journal Volume: 35; Journal Issue: 4; Journal ID: ISSN 0885-7458
Country of Publication:
United States
Language:
English
Subject:
99 GENERAL AND MISCELLANEOUS; PERFORMANCE; PROGRAMMING; SPECIFICATIONS; VERIFICATION

Citation Formats

Bronevetsky, G, and de Supinski, B. Formal Specification of the OpenMP Memory Model. United States: N. p., 2006. Web.
Bronevetsky, G, & de Supinski, B. Formal Specification of the OpenMP Memory Model. United States.
Bronevetsky, G, and de Supinski, B. 2006. "Formal Specification of the OpenMP Memory Model". United States. https://www.osti.gov/servlets/purl/936974.
@article{osti_936974,
title = {Formal Specification of the OpenMP Memory Model},
author = {Bronevetsky, G and de Supinski, B},
abstractNote = {OpenMP [2] is an important API for shared memory programming, combining shared memory's potential for performance with a simple programming interface. Unfortunately, OpenMP lacks a critical tool for demonstrating whether programs are correct: a formal memory model. Instead, the current official definition of the OpenMP memory model (the OpenMP 2.5 specification [2]) is in terms of informal prose. As a result, it is impossible to verify OpenMP applications formally since the prose does not provide a formal consistency model that precisely describes how reads and writes on different threads interact. We expand on our previous work that focused on the formal verification of OpenMP programs through a formal memory model [?]. As in that work, our formalization, which is derived from the existing prose model [2], provides a two-step process to verify whether an observed OpenMP execution is conformant. This paper extends the model to cover the entire specification. In addition to this formalization, our contributions include a discussion of ambiguities in the current prose-based memory model description. Although our formal model may not capture the current informal memory model perfectly, in part due to these ambiguities, our model reflects our understanding of the informal model's intent. We conclude with several examples that may indicate areas of the OpenMP memory model that need further refinement, however it is specified. Our goal is to motivate the OpenMP community to adopt those refinements eventually, ideally through a formal model, in later OpenMP specifications.},
doi = {},
url = {https://www.osti.gov/biblio/936974}, journal = {International Journal of Parallel Programming},
issn = {0885-7458},
number = 4,
volume = 35,
place = {United States},
year = {Tue Dec 19 00:00:00 EST 2006},
month = {Tue Dec 19 00:00:00 EST 2006}
}