
Control flow graphs optimization in intermediate representations of the functional dataflow parallel programming language
Author(s) -
В. С. Васильев,
Alexander I. Legalov
Publication year - 2020
Publication title -
naučnyj vestnik novosibirskogo gosudarstvennogo tehničeskogo universiteta
Language(s) - English
Resource type - Journals
eISSN - 2658-3275
pISSN - 1814-1196
DOI - 10.17212/1814-1196-2020-4-37-46
Subject(s) - dataflow , computer science , control flow analysis , control flow , dataflow architecture , software portability , programming language , declarative programming , functional programming , programming paradigm , graph , data flow diagram , data flow analysis , graph rewriting , theoretical computer science , parallel computing , functional reactive programming , parallel programming model , control flow graph , inductive programming , procedural programming , database
Functional dataflow programming languages are intended for the development of architecture-independent parallel programs and support the control of computations based on data availability. Due to the fact that at present parallel computing systems are very widespread, and their programming in imperative languages is associated with portability problems, the development of architecturally independent parallel programming tools is an urgent task. When such a program is translated, intermediate representations are formed as the information graph and the corresponding control graph. During program execution, data readiness signals are transmitted along the arcs of the control graph. An explicit selection of the control graph allows us not only to change the computational control strategies and ensure the adaptation of the program to the architecture features, but also to apply specific methods for optimizing control dependencies. The paper proposes transformation methods that provide optimization of the control graph. When generating a control graph from an informational one, redundant arcs are introduced into it, the removal of which does not affect the result of the program, but leads to its more efficient execution. It is shown that in dataflow programs, in addition to control dependencies inherent in other programming languages, additional ones associated with the implementation features of deferred or conditional computations described by delayed lists arise. A formal description of redundant dependencies of various types is given, as well as an effective algorithm for their identification. The developed approach can be applied to such dataflow programming languages as PIFAGOR and Smile.