Abstract

Functional dataflow programming languages are designed to create parallel portable programs. The source code of such programs is translated into a set of graphs that reflect information and control dependencies. The main way of their execution is interpretation, which does not allow to perform calculations efficiently on real parallel computing systems and leads to poor performance. To run programs directly on existing computing systems, you need to use specific optimization and transformation methods that take into account the features of both the programming language and the architecture of the system. Currently, the most common is the Von Neumann architecture, however, parallel programming for it in most cases is carried out using imperative languages with a static type system. For different architectures of parallel computing systems, there are various approaches to writing parallel programs. The transformation of dataflow parallel programs into imperative programs allows to form a framework of imperative code fragments that directly display sequential calculations. In the future, this framework can be adapted to a specific parallel architecture. The paper considers an approach to performing this type of transformation, which consists in allocating fragments of dataflow parallel programs as templates, which are subsequently replaced by equivalent fragments of imperative languages. The proposed transformation methods allow generating program code, to which various optimizing transformations can be applied in the future, including parallelization taking into account the target architecture.

Highlights

  • Functional data ow programming languages are designed to create parallel portable programs. e source code of such programs is translated into a set of graphs that re ect information and control dependencies. e main way of their execution is interpretation, which does not allow to perform calculations e ciently on real parallel computing systems and leads to poor performance

  • To run programs directly on existing computing systems, you need to use speci c optimization and transformation methods that take into account the features of both the programming language and the architecture of the system

  • The most common is the Von Neumann architecture, parallel programming for it in most cases is carried out using imperative languages with a static type system

Read more

Summary

Александр Иванович Легалов

Постоянное совершенствование и изменение архитектур параллельных вычислительных систем (ПВС) ведет к тому, что ранее написанные параллельные программы приходится перерабатывать, зачастую достаточно сильно, для адаптации к новым условиям эксплуатации. Можно выделить ряд таких подходов, ориентированных на исходное создание программ для абстрактных параллельных вычислителей и последующую трансформацию в реальные архитектуры. Концепция ресурсно-независимого параллельного программирования реализована в языке COLAMO, ориентированного на разработку систем на кристалле [2, 3]. В языке функционально-потокового параллельного программирования Пифагор реализована концепция единственного использования вычислительных ресурсов, что позволяет формировать параллельные программы, ориентированные на архитектурную независимость. Трансформация функционально-потоковых параллельных (ФПП) программ в языки со статической типизацией затруднена из-за того, что в языке Пифагор используется динамическая типизация данных. Можно также отметить императивные языки, в которых реализована динамическая типизация данных, например, Python. Поэтому трансформация функционально-потоковых параллельных программ в императивные может представлять интерес и для таких языков

The System for Transforming the Code of Dataflow Programs into Imperative
Фрагмент кода на Пифагор
Тип данных узла
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