Abstract

Fork/Join is a simple but effective technique for exploiting the parallelism. When developing a parallel program using Fork/Join, one of the main things is how a large task is decomposed into subtasks whose results can be combined as a final result. In this paper we show how to develop Fork/Join parallel programs through refinement and decomposition. We take Fork/Join style task decomposition as a refinement which we call Fork/Join refinement. Proof obligations of refinement can ensure the correctness of decomposition. For practical application, we provide a refinement pattern for the Fork/Join refinement and extend an atomicity decomposition diagram to illustrate it. Our approach provides a good framework for modeling Fork/Join parallel programs and showing proof obligations of correctness for such programs. We illustrate the approach by applying it on a small case.

Highlights

  • Event-B[1,2] is a formal modelling method that uses abstraction and refinement and falls into the general topic of AI [3-7]

  • In order to verify the correctness of refinement in EventB, the proof obligations are given to the Rodin Platform carrying out automatic or interactive proofs

  • When developing a parallel program using Fork/Join, one of the main things to consider is how a large task is decomposed into subtasks whose results can be combined as a final result

Read more

Summary

Introduction

Event-B[1,2] is a formal modelling method that uses abstraction and refinement and falls into the general topic of AI [3-7]. When developing a parallel program using Fork/Join, one of the main things to consider is how a large task is decomposed into subtasks whose results can be combined as a final result. In this paper we focus on developing Fork/Join parallel programs through refinement and decomposition. The pattern starts with a high abstract model containing a single event as a specification of task. The model is refined into forks events solving the subtasks and a join event combining the results of subtasks. In order to facilitate practical use of the refinement pattern, we extend atomicity decomposition diagram[10,11] to illustrate it. Our atomicity decomposition diagram illustrates the refinement relationship between the abstract event and Fork/Join refinement events and the synchronization pattern between forks events and join event explicitly.

Event-B
Problem description and initial model
Fork/Join refinement
Model decomposition and further refinement
Related Work and Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call