Методы задания управления в технологии фрагментированного программирования
Authors: Арыков С.Б. 
Published: October 2024

Технология фрагментированного программирования ориентирована на разработку параллельных программ, решающих задачи численного моделирования. Конечная программа в этой технологии собирается из отдельных фрагментов вычислений, каждый из которых независимая единица программы, содержащая входные/выходные переменные (фрагменты данных) и код их обработки (фрагмент кода). Для реализации этой технологии на вычислителях с общей памятью была разработана система параллельного программирования Аспект. Она включает в себя декларативный язык описания структуры фрагментированной программы (язык Аспект), транслятор с языка Аспект в С, а также исполнительную подсистему. В статье представлены методы задания управления порядком исполнения фрагментов вычислений, разработанные и реализованные в системе программирования Аспект. Все они основаны на использовании строгого частичного порядка на множестве фрагментов вычислений. Описаны различные типы управления: простое (между отдельными фрагментами), массовое (между множествами фрагментов), сложное (на основе логических операций может задаваться как между отдельными фрагментами, так и между множествами фрагментов). Рассмотрены синтаксис и семантика основных конструкций языка Аспект, введенных для поддержки предложенных методов задания управления. Приведен пример решения задачи численного моделирования задачи об LUразложении матрицы на основе которого продемонстрировано, как с помощью рассматриваемых методов задания управления можно представить численный алгоритм с высокой степенью непроцедурности. Предложенные подходы могут быть использованы как при реализации других инструментальных средств поддержки технологии фрагментированного программирования, так и встраиваться в качестве дополнительных способов задания управления (новой категории управляющих операторов) в современные языки программирования.

The technology of fragmented programming is focused on the development of parallel programs that solve numerical problems. The final program in this technology is assembled from separate computation fragments, each of which is an independent program unit containing input and output variables (data fragments) and the code of their processing (code fragment). To implement this technology on computers with shared memory, a parallel programming system Aspect was developed. It includes a declarative language for describing the structure of a fragmented program (the Aspect language), a translator from the Aspect language to C and an executive subsystem. The article presents the methods of defining order of execution of computation fragments, developed and implemented in the programming system Aspect. All of them are based on the use of strict partial order on a set of computation fragments. Various approaches to define order of execution are described: simple (between separate fragments), massive (between sets of fragments), complex (based on logical operations can be set between separate fragments, and between sets of fragments). The syntax and semantics of the main structures of the Aspect language, introduced to support the proposed methods of the control, are considered.An example of solving LU decomposition of a matrix numerical problem is given. Based on that example it was demonstrated how using methods offered one can present a numerical algorithm with a high degree of nonprocedurality. The proposed approaches can be used to implement other tools to support the technology of fragmented programming or can be integrated as additional ways to set the control (new category of control operators) into modern programming languages.