Using Ontologies and Algebra of Algorithms for Formalized Development of Parallel Programs

2009 ◽  
Vol 93 (1-3) ◽  
pp. 111-125 ◽  
Author(s):  
Anatoliy Doroshenko ◽  
Olena Yatsenko

This chapter considers algebra-dynamic models of parallel programs, which are based on concepts of transition systems theory and algebra of algorithms. The models of sequential and parallel multithreaded programs for multicore processors and program models for graphics processing units are constructed. The authors describe transformations of programs aimed at transition from sequential to parallel versions (parallelization) and improving performance of parallel programs in respect to execution time (optimization). The transformations are based on using rewriting rules technique. The formal model of program auto-tuning as an evolutional extension of transition systems is proposed, and some properties of programs are considered.


2020 ◽  
Vol 4 (POPL) ◽  
pp. 1-32 ◽  
Author(s):  
Sam Westrick ◽  
Rohan Yadav ◽  
Matthew Fluet ◽  
Umut A. Acar
Keyword(s):  

2014 ◽  
Vol 49 (6) ◽  
pp. 15-25 ◽  
Author(s):  
Rishi Surendran ◽  
Raghavan Raman ◽  
Swarat Chaudhuri ◽  
John Mellor-Crummey ◽  
Vivek Sarkar
Keyword(s):  

2021 ◽  
Vol 128 (1) ◽  
pp. 25-39
Author(s):  
Joshua P. Bowman
Keyword(s):  

Author(s):  
S. Blom ◽  
S. Darabi ◽  
M. Huisman ◽  
M. Safari

AbstractA commonly used approach to develop deterministic parallel programs is to augment a sequential program with compiler directives that indicate which program blocks may potentially be executed in parallel. This paper develops a verification technique to reason about such compiler directives, in particular to show that they do not change the behaviour of the program. Moreover, the verification technique is tool-supported and can be combined with proving functional correctness of the program. To develop our verification technique, we propose a simple intermediate representation (syntax and semantics) that captures the main forms of deterministic parallel programs. This language distinguishes three kinds of basic blocks: parallel, vectorised and sequential blocks, which can be composed using three different composition operators: sequential, parallel and fusion composition. We show how a widely used subset of OpenMP can be encoded into this intermediate representation. Our verification technique builds on the notion of iteration contract to specify the behaviour of basic blocks; we show that if iteration contracts are manually specified for single blocks, then that is sufficient to automatically reason about data race freedom of the composed program. Moreover, we also show that it is sufficient to establish functional correctness on a linearised version of the original program to conclude functional correctness of the parallel program. Finally, we exemplify our approach on an example OpenMP program, and we discuss how tool support is provided.


Sign in / Sign up

Export Citation Format

Share Document