?
Transformation of Functional Dataflow Parallel Programs into Imperative Programs
The functional dataflow paradigm of parallel programming is focused on the development
of parallel portable programs. The source code of functional dataflow programs is translated into a set of graphs reflecting information and control dependences. The main method of their execution is interpretation, which makes it impossible to perform calculations efficiently on real parallel computing systems and leads to poor performance. In order to run programs directly on existing computing systems, specific optimization and transformation methods that take the features of both the programming language and the system architecture into account are necessary. At present, the von Neumann architecture is the most widespread type. Parallel programming for it is mostly performed using languages that support imperative paradigms and are oriented on the static type system. For different architectures of parallel computing systems, there are various approaches to writing parallel programs. The transformation of functional dataflow parallel programs into imperative programs makes it possible to form a general framework of imperative code fragments that directly represent sequential computations, which can then be adapted to a particular parallel architecture. This article discusses an approach to performing this type of transformation, which consists in extracting fragments of functional dataflow parallel programs as patterns that are subsequently replaced by equivalent imperative language fragments. The proposed transformation methods make it possible to generate source code to which various optimizing transformations, including parallelization with respect to the target architecture, can later be applied.