Driven by the ‘side-effect’ environment of sequential von Neumann computing, Input/Output operations have evolved as state operations on shared files. In parallel programs, if multiple instances of an I/O-performing process execute concurrently, either the user or the system must synchronize any accesses to shared files. Data-flow principles of execution provide an elegant way to ensure at runtime that instructions can be executed asynchronously in a parallel environment. However, while the conventional von Neumann model of interpretation inherited a rigid ordering of instructions, it is the very asynchronous character of the data-flow model of execution which introduces conflicts when ‘state’ tasks (such as I/O operations) must share common data objects. The scheme presented in this paper, Logical Serialization with Distributed File Pointers (LS-DFP), introduces the two basic I/O operations read and write into the dynamic data-flow graph. However, sequencing I/O operations on the same file based on the availability of data as in ‘conventional’ data-flow is not possible because the name of the file becomes available simultaneously to all operations at program initiation. To impose an order, we sequentialize, (logically serialize-LS), the operations according to their lexicographical ordering. Furthermore, several optimizations are introduced that allow the distributed execution of these I/O operations with the use of Distributed File Pointers (DFP). Thus, the LS-DFP scheme can utilize the full level of parallelism of the dynamic data-flow principles of execution.
Read full abstract