Научная статья на тему 'Подход к архитектурно-независимому программированию вычислительных систем на основе аспектно-ориентированного языка Set@l'

Подход к архитектурно-независимому программированию вычислительных систем на основе аспектно-ориентированного языка Set@l Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
94
25
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГИБРИДНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ / АРХИТЕКТУРНО-НЕЗАВИСИМОЕ ПРОГРАММИРОВАНИЕ / АСПЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД / ЯЗЫК ПРОГРАММИРОВАНИЯ SET@L / HETEROGENEOUS COMPUTER SYSTEMS / ARCHITECTURE-INDEPENDENT PROGRAMMING / ASPECT-ORIENTED APPROACH / SET@L PROGRAMMING LANGUAGE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Левин Илья Израилевич, Дордопуло Алексей Игоревич, Писаренко Иван Вадимович, Мельников Андрей Кимович

Актуальным направлением развития вычислительной техники является создание высокопроизводительных гибридных вычислительных систем, в которых объединены вычислительные устройства различных типов. Существующие языки программирования гибридных вычислительных систем характеризуются архитектурной специализацией, которая заключается в необходимости существенной переработки кода при реализации одного и того же алгоритма на системах с различными архитектурами. Для решения данной проблемы предлагается язык архитектурно-независимого программирования Set@l, который развивает идеи, заложенные в высокоуровневом языке COLAMO и языке программирования на основе теории множеств SETL. Отличительной чертой языка Set@l является описание алгоритма решения задачи и его распараллеливания в виде отдельных модулей программы, что обеспечивается использованием теоретико-множественного представления исходного кода и методологии аспектно-ориентированного программирования. Архитектурно-независимый исходный код программы на языке Set@l представляет решение прикладной задачи в виде информационного графа, описанного на языке теории множеств и реляционного исчисления. Адаптация универсального алгоритма к архитектуре и конфигурации конкретной вычислительной системы осуществляется аспектами, которые разбивают и классифицируют ключевые совокупности задачи. В отличие от языка SETL, в Set@l введена типизация множеств по различным критериям, одним из которых является тип параллелизма их элементов. Для некоторых совокупностей тип обработки не может быть задан однозначно, поэтому они обозначаются как неопределенные. В данной статье рассматриваются базовые принципы создания архитектурно-независимых программ на языке Set@l, а также приводится пример его использования для описания прямого хода метода Гаусса.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Левин Илья Израилевич, Дордопуло Алексей Игоревич, Писаренко Иван Вадимович, Мельников Андрей Кимович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

APPROACH TO ARCHITECTURE-INDEPENDENT PROGRAMMING OF COMPUTER SYSTEMS IN ASPECT-ORIENTED SET@L LANGUAGE

The development of new architectures for heterogeneous computer systems is a relevant research direction in the field of modern supercomputer engineering. At the same time, software porting between different heterogeneous architectures requires a significant code revision due to the architectural limitation of existing programming languages. To solve the problem, we propose a new architecture-independent Set@l programming language, which develops some ideas of the COLAMO and SETL programming languages. In Set@l, an algorithm and its parallelizing description are separated modules of a program. This feature is provided by the application of the set-theoretic codeview and aspect-oriented programming paradigm. Architecture-independent source code in Set@l represents a solution for a computational problem as an information graph specified in terms of the set theory and relational calculus. Adaptation of a universal algorithm for a certain architecture and configuration is carried out by aspects, which divide and classify the key collections of the problem. In contrast to SETL, Set@l offers different classification criteria for sets, particularly according to the type of parallelism. If it is impossible to define the type unambiguously, the collection is denoted as implicit. In this paper, we consider the fundamentals of architecture-independent programming in Set@l and the example of its application for the Gaussian elimination coding.

Текст научной работы на тему «Подход к архитектурно-независимому программированию вычислительных систем на основе аспектно-ориентированного языка Set@l»

УДК 004.432.4 DOI 10.23683/2311-3103-2018-3-46-58

И.И. Левин, А.И. Дордопуло, И.В. Писаренко, А.К. Мельников

ПОДХОД К АРХИТЕКТУРНО-НЕЗАВИСИМОМУ ПРОГРАММИРОВАНИЮ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ НА ОСНОВЕ АСПЕКТНО-ОРИЕНТИРОВАННОГО ЯЗЫКА SET@L

Актуальным направлением развития вычислительной техники является создание высокопроизводительных гибридных вычислительных систем, в которых объединены вычислительные устройства различных типов. Существующие языки программирования гибридных вычислительных систем характеризуются архитектурной специализацией, которая заключается в необходимости существенной переработки кода при реализации одного и того же алгоритма на системах с различными архитектурами. Для решения данной проблемы предлагается язык архитектурно-независимого программирования Set@l, который развивает идеи, заложенные в высокоуровневом языке COLAMO и языке программирования на основе теории множеств SETL. Отличительной чертой языка Set@l является описание алгоритма решения задачи и его распараллеливания в виде отдельных модулей программы, что обеспечивается использованием теоретико-множественного представления исходного кода и методологии аспектно-ориентированного программирования. Архитектурно-независимый исходный код программы на языке Set@l представляет решение прикладной задачи в виде информационного графа, описанного на языке теории множеств и реляционного исчисления. Адаптация универсального алгоритма к архитектуре и конфигурации конкретной вычислительной системы осуществляется аспектами, которые разбивают и классифицируют ключевые совокупности задачи. В отличие от языка SETL, в Set@l введена типизация множеств по различным критериям, одним из которых является тип параллелизма их элементов. Для некоторых совокупностей тип обработки не может быть задан однозначно, поэтому они обозначаются как неопределенные. В данной статье рассматриваются базовые принципы создания архитектурно-независимых программ на языке Set@l, а также приводится пример его использования для описания прямого хода метода Гаусса.

Гибридные вычислительные системы; архитектурно-независимое программирование; аспектно-ориентированный подход; язык программирования Set@l.

I.I. Levin, A.I. Dordopulo, I.V. Pisarenko, A.K. Melnikov

APPROACH TO ARCHITECTURE-INDEPENDENT PROGRAMMING OF COMPUTER SYSTEMS IN ASPECT-ORIENTED SET@L LANGUAGE

The development of new architectures for heterogeneous computer .systems is a relevant research direction in the field of modern supercomputer engineering. At the same time, software porting between different heterogeneous architectures requires a significant code revision due to the architectural limitation of existing programming languages. To solve the problem, we propose a new architecture-independent Set@l programming language, which develops some ideas of the COLAMO and SETL programming languages. In Set@l, an algorithm and its parallelizing description are separated modules of a program. This feature is provided by the application of the set-theoretic codeview and aspect-oriented programming paradigm. Architecture-independent source code in Set@l represents a solution for a computational problem as an information graph specified in terms of the set theory and relational calculus. Adaptation of a universal algorithm for a certain architecture and configuration is carried out by aspects, which divide and classify the key collections of the problem. In contrast to SETL, Set@l offers different classification criteria for sets, particularly according to the type of parallelism. If it is impossible to define the type unambiguously, the collection is denoted as implicit. In this paper, we consider the fundamentals of architecture-independent programming in Set@l and the example of its application for the Gaussian elimination coding.

Heterogeneous computer systems; architecture-independent programming; aspect-oriented approach; Set@l programming language.

Введение. Одним из архитектурных решений, позволяющих повысить производительность современных вычислительных систем (ВС), является объединение традиционных процессоров с вычислительными устройствами других типов [1-3]. Наиболее перспективным классом гетерогенных ВС считаются гибридные реконфигурируемые системы на основе программируемых логических интегральных схем (ПЛИС) [4], что обусловлено их конструктивно-технологическими особенностями и широкими возможностями адаптации вычислительной архитектуры под структуру решаемой прикладной задачи [5]. Однако программное обеспечение (ПО) для подобных ВС должно сочетать описания параллельных, конвейерных и процедурных фрагментов вычислений [6, 7], что приводит к усложнению его разработки и повышению затрат временных и материальных ресурсов.

Многообразие вычислительных архитектур, используемых в гибридных ВС, существенно усложняет портацию ПО из-за отсутствия эффективных методов и средств архитектурно-независимого параллельного программирования. В существующих языках программирования математическая сущность решения прикладной задачи и его декомпозиция описываются неделимыми фрагментами кода. Поэтому изменение каких-либо особенностей распараллеливания, связанное с реализацией алгоритма на ВС с другой архитектурой, фактически требует разработки новой программы. Традиционные подходы к решению проблемы архитектурной специализации обладают существенными недостатками и сводятся к использованию специализированных алгоритмов трансляции (например, в языке функционального программирования «Пифагор» [8]) или фиксации конкретной модели распараллеливания, основанной на принципах процедурного программирования (например, в стандарте Ореп^ [9]).

Большинство проблем, связанных с программированием реконфигурируемых ВС на основе ПЛИС, решено в высокоуровневом языке программирования COLAMO [10-12], в котором распараллеливание описывается в неявной форме путем объявления типов доступа к массивам и индексации их элементов. Однако язык COLAMO ориентирован на структурно-процедурную организацию вычислений, что не позволяет переносить описанные на нем параллельные программы между ВС с различными архитектурами.

Дальнейшим развитием идей COLAMO является язык архитектурно-независимого программирования ВС Set@l, который предлагается в данной работе. Set@l основан на теоретико-множественном представлении исходного кода, реализованном в языке программирования SETL [13], и дополняет его механизмами разбиения и типизации множеств. Для описания алгоритма решения вычислительной задачи и его распараллеливания в виде отдельных программных модулей в языке Set@l используется парадигма аспектно-ориентированного программирования (АОП) [14, 15]. Set@l позволяет свести портацию ПО к формированию соответствующих аспектов архитектуры и конфигурации ВС, в которых описываются разбиение и типизация по параллелизму ключевых совокупностей алгоритма. При этом исходный код, определяющий математическую сущность решения прикладной задачи, остается неизменным.

В данной статье рассматриваются базовые принципы создания архитектурно-независимых программ на языке Set@l, а также приводится пример его использования для описания прямого хода метода Гаусса.

Принципы программирования на языке 8й@1. В существующих языках программирования ВС архитектурная специализация ПО обусловлена тем, что алгоритм решения прикладной задачи и конкретный вариант его распараллеливания описываются неделимым кодом (что приводит к спутыванию в терминах АОП) и рассредоточены по тексту программы (что приводит к разбрасыванию в

терминах АОП). Проблемы спутывания и разбрасывания кода [16] могут быть решены в рамках технологии АОП, поэтому она используется в языке Set@l. Фрагменты программы, задающие распараллеливание, выделяются в отдельные модули - аспекты [17], что позволяет описывать алгоритм решения прикладной задачи независимо от архитектурных особенностей вычислительной системы, на которой будет осуществляться ее решение. В таком случае исходный код программы является архитектурно-независимым, а код аспектов определяет декомпозицию прикладной задачи для реализации ее решения на ВС с определенными архитектурой и конфигурацией. Анализируя созданную пользователем разметку, транслятор-препроцессор будет формировать виртуальную программу, в которой особенности операционной и итерационной декомпозиции будут вплетены в код, делая его пригодным для исполнения на определенной ВС.

В соответствии с принципами АОП, базовыми модулями любой программы на языке Set@l являются исходный код и аспекты (табл. 1). Исходный код описывает решение прикладной задачи в виде информационного графа на языке теории множеств и реляционного исчисления [18], формируя универсальное архитектурно-независимое представление алгоритма. Аспекты, направленные на адаптацию алгоритма к архитектуре и конфигурации конкретной ВС, разделяют исходные множества вершин обработки и данных итераций на особые совокупности, для каждой из которых задаются тип обработки и разбиение. Создавая комбинации из совокупностей, можно описать самые разные формы параллелизма и осуществлять переход между ними изменением комбинаций. Программа может включать произвольное количество аспектов, описывающих различные особенности разбиения и типизации базовых совокупностей решаемой вычислительной задачи.

Модули программы на языке Set@l разбиваются на разделы, которые объявляются с помощью элементов синтаксиса, представленных в табл. 1. Для описания системы связей между исходным кодом и его аспектами в каждый программный модуль включается интерфейсный раздел, в котором объявляются входные (input), выходные (output) и неопределенные (extern) параметры, а также ссылки на аспекты-источники и аспекты-приемники. Другие разделы программы объявляются аналогично интерфейсному, но не содержат списков параметров и могут иметь любые имена. Например, в исходном коде целесообразно выделить раздел подготовки данных и основной вычислительный блок.

Таблица1

Элементы синтаксиса, используемые при описании модулей и разделов программы на языке Бе1@1

Модуль/раздел Формат описания

Исходный код program (<имя>) : <исходный код>; end (<имя>);

Аспект aspect (<имя>) : <код аспекта>; end (<имя>);

Интерфейсный раздел interface : <входные параметры>: input (<модули-источники>); <выходные параметры>: output (<модули-приемники>); <список неопределенных параметров>: extern; end (interface);

Другие разделы <имя раздела> : <код раздела>; end (<имя раздела>);

На рис. 1 представлена схема, иллюстрирующая один из возможных вариантов структуры аспектно-ориентированной программы на языке Set@l для решения вычислительных задач линейной алгебры. Распараллеливание решения подобных задач описывается путем разбиения совокупностей строк, столбцов и итераций I, J и K на подсовокупности с зависящими от архитектуры ВС типами параллелизма. В рамках исходного кода характер разбиения I, J и K не определен, что делает описание алгоритма решения задачи архитектурно-независимым. Аспект метода обработки определяет логику различных вариантов разбиения матрицы (например, по строкам, столбцам, клеткам или итерациям) путем задания обобщенных совокупностей неопределенного типа и размерности, обозначенных на рис. 1 как ЦТ], ЦТ] и ЦК]. Архитектурный аспект, используя данные о размерности задачи из исходного кода и конкретные числовые параметры конфигурации ВС из аспекта конфигурации, преобразует или задает тип совокупностей в соответствии с особенностями архитектуры ВС для эффективной параллельно-конвейерной обработки. В результате формируется итоговое разбиение информационного графа, которое определяется четко заданными по типу обработки совокупностями {/}, <J, }К{ и может быть подставлено в исходный код для реализации требуемого варианта распараллеливания.

Аспект метода обработки

И. VIPI

_I_

Архитектурный аспект

Параметры конфигурации ВС

Аспект конфигурации ВС

Рис. 1. Схема взаимодействия исходного кода и аспектов в программе на языке Set@l, реализующей решение задачи линейной алгебры

В отличие от других языков программирования на основе теории множеств (например, языка SETL), в языке Set@l вводится классификация совокупностей по различным критериям. С точки зрения архитектурной независимости, основополагающим критерием типизации множеств является характер параллелизма их элементов при обработке. В табл. 2 приведены используемые в языке Set@l обозначения типов совокупностей по параллелизму и формат их описания.

Таблица 2

Типы совокупностей по параллелизму в языке Set@l

Тип совокупности Тип обработки Символьное обозначение Формат описания

Множество Параллельно-независимая {1, 2, , p} set(1 p )

Кортеж Последовательная [1, 2, , p] seq(1 p )

Кортеж-конвейер Конвейерная <1,2, , p) pipe(1 p )

Множество обработки по итерациям Параллельно-зависимая }1, 2, , p} conc(1 p )

Неопределенный Тип определяется в другом аспекте 11, 2, , p] imp(1 p )

{¡I иШ

Исходный код (математическое описание)

Данные о размерности задачи

Базовыми типами совокупностей являются множество (параллельно-независимая обработка), кортеж (последовательная обработка), кортеж-конвейер (конвейерная обработка) и кортеж обработки по итерациям (параллельно-зависимая обработка). В некоторых аспектах тип совокупностей не может быть определен однозначно, так как отсутствует информация об архитектуре ВС, на которой будет решаться описываемая задача. Подобные совокупности обозначаются как неопределенные (imp), а в других аспектах их тип объявляется с помощью конструкции type, которая имеет следующий формат описания:

type(<uмя совокупности>)='<тип параллелизма^.

Выделение типов по параллелизму является лишь одним из возможных вариантов классификации совокупностей в языке Set@l. При необходимости возможно добавить другие варианты типизации, например, по характеру синхронизации или разрядности, что позволит повысить гибкость и адаптируемость создаваемых архитектурно-независимых программ.

Элементы синтаксиса, используемые в языке Set@l для описания основных математических операций теории множеств, приведены в табл. 3. Для разбиения совокупностей применяются конструкции, формируемые в рамках реляционного исчисления и представляемые в следующем формате:

А=<тип совокупности>( <переменная> | <предикат> );

Описание циклов осуществляется с помощью квантора всеобщности, выраженного ключевым словом forall:

( forall <переменная-итератор> in <множество> | <предикат> ) : <тело цикла>;

end (forall);

Таблица 3

Кванторы, операции над множествами и их элементами в языке Set@l

Операция Формат Операция Формат

Квантор существования ( 3 ) exists Принадлежность ( а 6 А) a in А

Квантор всеобщности (V) forall Объединение(А и В) union(A,B)

Квантор существования и единственности ( ) exists! Пересечение (А В) int(A,B)

Конъюнкция (А & В ) A and B Разность (А ) dif(A,B)

Дизъюнкция (А V В ) A or B Произведение множеств (А х ) prod(A,B)

Инверсия ( ! А) not A Подмножество (А с ) subs(A,B)

Язык Set@l позволяет использовать типизацию совокупностей, предложенную П. Вопенка в рамках альтернативной теории множеств [19]. Большинство алгоритмов решения прикладных вычислительных задач может быть описано с помощью типов совокупностей, представленных в табл. 4.

По умолчанию все совокупности в языке Set@l считаются четко выделенными множествами, однако существуют некоторые задачи, решение которых не может быть описано в архитектурно-независимой форме без привлечения совокупностей других типов. Примером такой задачи является решение систем линейных алгебраических уравнений (СЛАУ) итерационным методом Якоби [20], в рамках которого совокупность итераций определена только частично и представляет собой полумножество.

Таблица 4

Классификация совокупностей по определенности, используемая в языке

программирования Set@l

Тип совокупности Описание Символьное обозначение Ключевое слово

Множество Четко выделенная совокупность элементов {} set

Полумножество Частично определенная совокупность элементов { ? ? } i ? } sm

Класс Полностью неопределенная совокупность элементов, тип которой задан в другом аспекте ? cls

Таким образом, отличительными чертами языка архитектурно-независимого программирования Set@l являются аспектно-ориентированная структура программы и представление решаемой задачи не в виде определенных с точки зрения параллелизма массивов данных, а в виде системы совокупностей, разбиение и многокритериальная типизация которых позволяют описывать распараллеливание и другие аспекты реализации вычислительного алгоритма.

Описание прямого хода метода Гаусса на языке Set@l. Решение СЛАУ -одна из основополагающих прикладных задач линейной алгебры. Классическим прямым методом решения СЛАУ является метод Гаусса [20], заключающийся в последовательном исключении неизвестных с помощью эквивалентных преобразований системы уравнений (прямой ход) и последующем нахождении всех неизвестных, начиная с последней (обратный ход). В данной работе рассматривается только прямой ход метода Гаусса, в результате которого исходная СЛАУ преобразуется в систему уравнений с трапециевидной матрицей.

Для решения СЛАУ методом Гаусса и реализации других задач линейной алгебры, как правило, используется один из следующих методов обработки исходной матрицы: по строкам, по столбцам, по клеткам и по итерациям. В случае обработки по строкам совокупность строк матрицы делится на N блоков BL(i), в каждый из которых попадает S строк (рис. 2,а). При обработке по столбцам совокупность столбцов делится на M блоков BC(j), в каждый из которых попадает С столбцов (рис. 2,б). В случае обработки по клеткам матрица делится на ( N * M ) клеток, в каждую из которых попадают S строк и С столбцов (рис. 2,в). При обработке по итерациям совокупность итераций обработки матрицы делится на T блоков BI(к) по ni итераций (рис. 2,г).

Исходный код программы на языке Set@l, реализующей прямой ход метода Гаусса, представлен на рис. 3. Программный модуль с исходным кодом состоит из трех разделов: интерфейса (interface, строки 2-5), блока подготовки данных (data preparation, строки 6-11) и основного вычислительного блока (computing, строки 12-22).

В интерфейсе описана взаимосвязь исходного кода с архитектурным аспектом (architecture): совокупности строк, столбцов и итераций I, J и K объявлены как входные параметры, а данные о размерности задачи по строкам, столбцам и итерациям n, m и p - как выходные.

Блок подготовки данных необходим для объявления размерности задачи и ввода матрицы, соответствующей исходному виду решаемой СЛАУ. Указанная матрица представлена в форме расширенной матрицы, дополненной вектором-столбцом свободных членов и изменяющейся на каждой итерации прямого хода метода Гаусса. В коде используется следующий формат индексации элементов расширенной матрицы:

а(<номер итерации>, <номер строки>, <номер столбца>).

Блок строк 1

Блок строк 2

Блок строк N

Строка 1 Строка 2

Строка s Строка (s+1)

Строка 2*s

Строка (N-l)*s+l

столбцов 1

столбцов 2

столбцов M

с С С С с С С

т т т ? т т т

о о о о о о о

л л л л л л л

б б б б б б б

е е е е е е е

Ч Ц Ц Ц 4 4 4

1 2 с (с+а) 2-С (M-lJc+I M с

"V

Блок итераций 1

V

Блок итераций Т

Рис. 2. Методы обработки, используемые при распараллеливании вычислительных задач линейной алгебры: по строкам (а), по столбцам (б), по клеткам (в),

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

по итерациям (г)

Троеточие на месте какого-либо индекса обозначает полное множество его значений, т.е. запись a(1, , ) соответствует матрице исходной СЛАУ на первой итерации.

Вычислительный блок является основным разделом исходного кода, в котором алгоритм решения прикладной вычислительной задачи описывается на универсальном математическом языке без указаний на конкретные варианты распараллеливания. На рис. 3 алгоритм прямого хода метода Гаусса описан в терминах теории множеств и реляционного исчисления (строки 13-20).

(1) program (Gauss^fonvard) :

(2) interface :

(3) I, J, К : input (architecture);

(4) il m. p : output (architecture);

(5) end (interface);

(6)

(7)

(8)

(9)

(10) (И) (12)

(13)

(14)

(15)

(16)

(17)

(18)

(19)

(20) (21) (22)

data preparation :

n=<размерность матрицы по строкам>\ m=n+l; //размерность матрицы по столбцам;

р=п; // количество итерации;

а(1,... .)=<ввод исходной расширенной матрицы CJIA У>; end (data preparation); computing :

( forall k in К ) :

( forall seq(i,j) in prod(I,J) | i>=(k+l) ) :

a(k+1 ,i J )=a(k,i,j )-a(k,i,k)/a(k,k,k)*a(k,k,j) ; end (forall);

( forall seq(i,j) in prod(I,J) | i<(k+l) ):

a(k+l,i,j)=a(k,i,j); end (forall);

end (forall); end (computing);

end (Gauss_Jonvard);

Рис. 3. Исходный код прямого хода метода Гаусса на языке

б

а

в

г

Код аспекта метода обработки для прямого хода метода Гаусса представлен на рис. 4. Значения параметров методов обработки S , N, c, M , ni и T определяются архитектурой и конфигурацией ВС и задаются в архитектурном аспекте, что отражено в интерфейсном разделе рассматриваемого программного модуля (строка 3). После формирования множеств, разбитых в соответствии с некоторым методом обработки, они передаются в архитектурный аспект для определения типа параллелизма (строка 4). Разбиения совокупностей I, J и K, объявляемые в строках 7-9 раздела set formation, позволяют описать все методы обработки, изображенные на рис. 3. Например, при обработке по строкам множество I разбивается на N блоков по S параллельно обрабатываемых строк, а для J и K разбиения не задаются, что может быть описано следующим образом: M = 1, c = m, T = 1, ni = p.

(1) aspect (processing) :

(2) interface î

О) s, N, c, M, ni, T : input (architecture);

(4) [, J, K : output (architecture);

(5) end (interface);

(6) set formation :

(7) I-imp( BL(i) 1 BL(i)-imp( (i-l)*s+l .. i*s ) and i in seq(l.. .N) );

(8) J=irop( BC(j) | BC(i)-imp( (j l)*c ! 1 .. ) and j in seq(l,, .M) );

(9) K-imp( BI(k) 1 BI(k)-imp( (k-l)*ni+l ... k*ni ) and k in seq( 1... T) );

(10) end (sel formation);

(Ч) end (processing);

Рис. 4. Аспект метода обработки программы на языке реализующей

прямой ход метода Гаусса

На рис. 5 приведен код архитектурного аспекта на языке Set@l для прямого хода метода Гаусса, описывающий распараллеливание решения задачи на рекон-фигурируемой вычислительной системе с независимым полем ПЛИС (RCS) и мультипроцессорной архитектуре (MP). В архитектурном аспекте программы объявляются типы множеств I, J , К и их подмножеств и определяются параметры методов обработки, зависящие от конфигурации ВС.

(1) aspect (architecture) :

(2) interface :

(3) I, J, К : input (processing);

C) R, R0, K_krp, ql, q2, aie lut ecturetype : input (configuration);

(5) il, m, p : input (Gauss^forward);

(6) I, J, К : output (Gaussforward);

en end (interface);

09 case (architecture_type-'RCS') : case (arcliitecture_type='MP') :

(9) // Строки (I):

(10) s-K krp; s=ql;

(H) M=n/s; N=n/s;

(12) type(I)='pipe'; type(I)=,seqI;

(13) type(BL(i))='par' ; <ype(BL(i))='par' ;

(14) // Столбцы (J):

(15) c=m; c=q2;

(16) M=l; M-m/c;

(17) type(J)='pipe'; typet^'seq';

(18) type(BC(j))='nuil' ; type(BC(j))='par';

(19) //Итерации (К):

(20) ni=min( p, floor(R/s/R0) ); ni—p;

(21) T-p/iii; T-l;

(22) type(K)='pipe'; type(K)='seq*;

(23) type(BI(k))='coDc'; type(BI(k))='nuir ;

(24) end (case); end (case);

(25) end (architecture);

Рис. 5. Архитектурный аспект программы на языке Бв(@1, реализующей прямой

ход метода Гаусса

В случае реконфигурируемой ВС используется комбинированный метод обработки по строкам/по итерациям (рис. 6). Число параллельно обрабатываемых строк S определяется количеством доступных каналов контроллеров распределенной памяти (КРП), обозначенным на рис. 5 как K krp (строка 10) и заданным в аспекте конфигурации ВС. Зная S и общее число строк в матрице П , можно рассчитать количество блоков строк N (см. строку 11). Формирование множества номеров строк I завершается объявлением типов параллелизма (строки 12 и 13). Распараллеливание по столбцам не используется, поэтому множество столбцов J не содержит подмножеств и описано как кортеж-конвейер, эквивалентный одному блоку со всеми столбцами матрицы (строки 15-18). Так как объявление отдельного типа параллелизма для блока строк BC в данном случае теряет смысл, вместо типа используется ключевое слова сброса null (строка 18). Количество параллельно реализуемых итераций ni определяется формулой, представленной в строке 20 и учитывающей общий доступный вычислительный ресурс R, ресурс R0, необходимый для реализации минимального базового подграфа, описанное выше распараллеливание по S строкам и ограничение ni общим числом итераций p в случае избытка доступного вычислительного ресурса. Функции min( ) и floor( ) служат для определения минимума и округления до целого в меньшую сторону соответственно. Число параллельно-зависимых блоков итераций T (строка 21) вычисляется как отношение общего количества итераций обработки матрицы p к числу итераций в блоке ni. Следует отметить, что обработка по итерациям, в отличие от обработки по строкам, имеет параллельно-зависимый характер, поэтому каждый блок итераций BI (к) относится к типу conc (строка 23).

а б

Рис. 6. Архитектура реконфигурируемой ВС с независимым полем ПЛИС (а) и распараллеливание задач линейной алгебры по строкам/по итерациям (б)

Для ВС с мультипроцессорной архитектурой применяется метод обработки по клеткам (рис. 7). Множество процессоров системы представлено в виде прямоугольной матрицы размерностью ц1 х ц2. Элементы клетки обрабатываются параллельно разными процессорами (строки 13 и 18 листинга 3), поэтому размерность клетки соответствует размерности матрицы процессоров, т.е. ^ = ц1 и

с = ц2 (строки 10 и 15). Количества клеток по строкам и столбцам N и М рассчитываются через соответствующие параметры размерности матрицы п и т (строки 11 и 16). В рамках одной итерации клетки обрабатываются последовательно (строки 12 и 17). Движение по итерациям также осуществляется последовательно, поэтому множество итераций не разбивается на блоки и описывается в виде кортежа из р элементов (строки 20-23).

Кэш-паллять Кэш-память Кэш-память

б

Рис. 7. Архитектура мультипроцессорной ВС (а) и распараллеливание алгоритмов решения задач линейной алгебры по клеткам (б)

Код аспекта конфигурации ВС для реконфигурируемой ВС и мультипроцессорной архитектуры приведен на рис. 8.

(1) aspect (configuration) :

(2) interface :

(3) R, RO, K krp, ql, q2, architecture type : output (architecture);

(4) end (interface);

(5) architecture_type=<seod m una apxumeKmypu>\

(6) case (architecture type~'RCS'):

(7) R=<доступный вычислительный pecypc>;

(8) RO=<вычислительный ресурс, необходимый для реализации минимального

базового подграфа>\

(9) К krp=<количество каналов КРП в ВС>;

(10) end (case);

(И) (12)

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

(13)

(14)

(15)

case (architecture type-'MP') :

ql =<размерность матрицы процессоров no строкам>; q2 <размерностъ матрицы процессоров по столбцам>; end (case);

end (configuration);

Рис. 8. Аспект конфигурации вычислительной системы

а

В аспекте конфигурации определяется значение переменной architec-ture_type (строка 5, рис. 8), описывающей тип архитектуры ВС, в зависимости от которого с помощью оператора case инициализируются те или иные числовые параметры конфигурации (строки 6 и 11 на рис. 8) и ветви архитектурного аспекта (строка 8 на рис. 5). Неинициализированные параметры при загрузке в архитектурный аспект рассматриваются как неопределенные переменные.

Рассмотренный пример описания алгоритма прямого хода метода Гаусса демонстрирует ключевые особенности синтаксиса языка Set@l, обусловленные ас-пектно-ориентированной структурой программы и теоретико-множественным представлением исходного кода.

Заключение. Таким образом, в отличие от других средств программирования высокопроизводительных ВС, в языке Set@l решаемая вычислительная задача представляется не в виде жестко определенных с точки зрения параллелизма массивов данных и команд, а в виде множеств и их отображений. Задавая различные варианты разбиения множеств и классифицируя их по различным признакам, можно описать алгоритм решения задачи в архитектурно-независимой форме и адаптировать его к любой архитектуре и конфигурации ВС с использованием системы аспектов. С целью снятия архитектурных ограничений, характерных для традиционных языков программирования ВС, в языке Set@l введен базовый механизм типизации множеств по параллелизму. Описание отдельных аспектов распараллеливания в виде независимых программных модулей обеспечивается формированием совокупностей с неопределенным типом обработки, характер которого уточняется в других компонентах программы. Использование языка Set@l открывает принципиально новые возможности для оперативной портации сложных программных комплексов на различные архитектуры ВС, в том числе гибридные и реконфигурируемые.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Bourzac K. Stretching supercomputers to the limit // Nature. - 2017. - Vol. 551. - P. 554-556.

2. Mittal S., Vetter J. A survey of CPU-GPU heterogeneous computing techniques // ACM Computing Surveys. - 2015. - Vol. 47.

3. Лощухина Т.Е., Дорофеев В.А. Решение прикладных задач с использованием гетерогенных вычислительных систем // Известия Томского политехнического университета.

- 2013. - Т. 323, № 5. - С. 165-170.

4. EbrahimiA., ZandsalimyM. Evaluation of FPGA Hardware as a New Approach for Accelerating the Numerical Solution of CFD Problems // IEEE Access. - 2017. - Vol. 5. - P. 9717-9727.

5. Дордопуло А.И., Левин И.И. Ресурсонезависимое программирование гибридных рекон-фигурируемых вычислительных систем // Суперкомпьютерные дни в России: Труды международной конференции (25-26 сентября 2017 г., г. Москва). - М.: Изд-во МГУ, 2017. - C. 714-723.

6. Андреев С.С., Дбар С.А., ДавыдовАА., ЛацисА.О., Савельев Г.П., ОрловВ.Л., ПлоткинаЕ.А., Простов И.В. Гибридный суперкомпьютер К-100: что дальше? // Информационные технологии и вычислительные системы. - 2012. - № 2. - С. 29-35.

7. Daga M., Tschirhart Z.S., Freitag C. Exploring Parallel Programming Models for Heterogeneous Computing Systems // 2015 IEEE International Symposium on Workload Characterization, Atlanta, GA, 2015. - P. 98-107.

8. Легалов А.И. Функциональный язык для создания архитектурно-независимых параллельных программ // Вычислительные технологии, - 2005. - Т. 10, № 1. - С. 71-89.

9. Open CL: The open standard for parallel programming of heterogeneous systems // Khronos Group Website. - URL: https://www.khronos.org/opencl/ (дата обращения: 05.07.2018).

10. Каляев А.В., Левин И.И. Модульно-наращиваемые многопроцессорные системы со структурно-процедурной организацией вычислений. - М.: ООО «Изд-во Янус-К», 2003.

- 380 с.

11. Дордопуло А.И., Левин И.И., Каляев И.А., Гудков В.А., Гуленок А.А. Программирование вычислительных систем гибридного типа на языке программирования COLAMO // Известия ЮФУ. Технические науки. - 2016. - № 11 (184). - C. 39-54.

12. Каляев И.А., Дордопуло А.И., Левин И.И., Гудков В.А., Гуленок А.А. Технология программирования вычислительных систем гибридного типа // Вычислительные технологии. - 2016. - Т. 21, № 3. - С. 33-44.

13. DewarR. SETL and the evolution of programming // From Linear Operators to Computational Biology: Essays in Memory of Jacob T. Schwartz. London: Springer-Verlag, 2013. - 208 p.

14. Kurdi H.A. Review on aspect oriented programming // International Journal of Advanced Computer Science and Applications. - 2013. - Vol. 4, No. 9. - P. 22-27.

15. Rebelo H., Leavens G.T. Aspect-Oriented Programming Reloaded // SBLP 2017 Proceedings of the 21st Brazilian Symposium on Programming Languages, 2017. - Art. No. 10.

16. The AspectJ Development Environment Guide. - URL: https://www.eclipse.org/aspectj/ doc/released/devguide/index.html (дата обращения: 05.07.2018).

17. Aspect oriented programming with Spring. Core technologies // Spring Framework Reference Documentation. - URL: https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/ html/aop.html (дата обращения: 05.07.2018).

18. ХаггартиР. Дискретная математика для программистов. - М.: Техносфера, 2003. - 320 с.

19. Вопенка П. Альтернативная теория множеств: Новый взгляд на бесконечность: пер. со словац. - Новосибирск: Изд-во Института математики, 2004. - 612 с.

20. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. - 7-е изд. - М.: БИНОМ. Лаборатория знаний, 2017. - 636 с.

REFERENCES

1. Bourzac K. Stretching supercomputers to the limit, Nature, 2017, Vol. 551, pp. 554-556.

2. Mittal S., Vetter J. A survey of CPU-GPU heterogeneous computing techniques, ACM Computing Surveys, 2015, Vol. 47.

3. Loshchukhina T.E., Dorofeev V.A. Reshenie prikladnykh zadach s ispol'zovaniem geterogennykh vychislitel'nykh sistem [Solving the applied tasks using the heterogeneous computing systems], Izvestiya Tomskogo politekhnicheskogo universiteta [Bulletin of the Tomsk Polytechnic University], 2013, Vol. 323, No 5, pp. 165-170.

4. Ebrahimi A., Zandsalimy M. Evaluation of FPGA Hardware as a New Approach for Accelerating the Numerical Solution of CFD Problems, IEEE Access, 2017, Vol. 5, pp. 9717-9727.

5. Dordopulo A.I., Levin I.I. Resursonezavisimoe programmirovanie gibridnykh rekonfiguriruemykh vychislitel'nykh system [Resource-independent programming of hybrid reconfigurable computer systems], Superkomp'yuternye dni v Rossii: Trudy mezhdunarodnoy konferencii [Proceedings of Russian Supercomputing Days], 25-26 September 2017, Moscow. Moscow: Izdatel'stvo MGU, 2017, pp. 714-723.

6. Andreev S.S., Dbar S.A., Davydov A.A., Latsis A.O., Savel'yev G.P., Orlov V.L., Plotkina E.A., Prostov I.V. Gibridnyy superkompyuter K-100: chto dal'she? [Hybrid supercomputer K-100: what next?], Informacionnye tehnologii i vychislitel'nye sistemy [Information technologies and computing systems], 2012, No. 2, pp. 29-35.

7. Daga M., Tschirhart Z.S., Freitag C. Exploring Parallel Programming Models for Heterogeneous Computing Systems, 2015 IEEE International Symposium on Workload Characterization, Atlanta, GA, 2015, pp. 98-107.

8. Legalov A.I. Funkcional'nyy yaazyk dlya sozdaniya arkhitekturno-nezavisimykh parallel'nykh program [Functional language for creation of architecture-independent parallel programs], Vychislitel'nye tekhnologii [Computation Technologies], 2005, Vol. 10, No 1, pp. 71-89.

9. Open CL: The open standard for parallel programming of heterogeneous systems, Khronos Group Website. Available at: https://www.khronos.org/opencl/ (accessed 5 July 2018).

10. Kalyaev A.V, Levin I.I. Modul'no-narashhivaemye mnogoprocessornye sistemy so strukturno-procedurnoj organizaciej vychislenij [Modular-scalable multiprocessor system with structural-procedural organization of computing]. Moscow: OOO «Izdatel'stvo Janus-K», 2003, 380 p.

11. Dordopulo A.I., Levin I.I., Kalyaev I.A., Gudkov V.A., Gulenok A.A. Programmirovanie vychislitel'nykh sistem gibridnogo tipa na yazyke programmirovaniya COLAMO [Programming of hybrid computer systems in the programming language COLAMO], Izvestiya YUFU. Tekhnicheskie nauki [Izvestiya SFedU. Engineering Sciences], 2016, No. 11 (184), pp. 39-54.

12. Kalyaev I.A., Dordopulo A.I., Levin I.I., Gudkov V.A., Gulenok A.A. Tekhnologiya programmirovaniya vychislitel'nykh sistem gibridnogo tipa [Programming technology for hybrid computer systems], Vychislitel'nye tekhnologii [Computation Technologies], 2016, Vol. 21, No. 3, pp. 33-44.

13. Dewar R. SETL and the evolution of programming, From Linear Operators to Computational Biology: Essays in Memory of Jacob T. Schwartz. London: Springer-Verlag, 2013, 208 p.

14. Kurdi H.A. Review on aspect oriented programming, International Journal of Advanced Computer Science and Applications, 2013, Vol. 4. No. 9, pp. 22-27.

15. Rebelo H., Leavens G.T. Aspect-Oriented Programming Reloaded, SBLP 2017 Proceedings of the 21st Brazilian Symposium on Programming Languages, 2017, Art. No. 10.

16. The AspectJ Development Environment Guide. Available at: https://www.eclipse.org/aspectj/ doc/released/devguide/index.html (accessed 5 July 2018).

17. Aspect oriented programming with Spring. Core technologies, Spring Framework Reference Documentation. Available at: https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/ html/aop.html (accessed 5 July 2018).

18. Haggarty R. Diskretnaya matematika dlya programmistov [Discrete mathematics for computing]. Moscow: Tehnosfera, 2003, 320 p.

19. Vopenka P. Al'ternativnaya teoriya mnozhestv: NovyH vzglyad na beskonechnost' [Alternative set theory: a New look at infinity]. Novosibirsk: Izdatel'stvo Instituta matematiki, 2004, 612 p.

20. Bakhvalov N.S., Zhidkov N.P., Kobel'kov G.M. Chislennye metody [Numerical methods]. Moscow: BINOM. Laboratoriya znaniy, 2017, 636 p.

Статью рекомендовал к опубликованию д.т.н. Э.В. Мельник.

Левин Илья Израилевич - Южный федеральный университет; e-mail: iilevin@sfedu.ru; 347928, г. Таганрог, ул. Петровская, 15, кв. 143; тел.: 88634612111; и.о. зав. кафедрой интеллектуальных и многопроцессорных систем; д.т.н.; профессор.

Дордопуло Алексей Игоревич - Общество с ограниченной ответственностью «НИЦ супер-ЭВМ и нейрокомпьютеров», г. Таганрог; e-mail: dordopulo@superevm.ru; 347902, г. Таганрог, 9-й переулок, 44; тел.: 88634477407; начальник отдела математико-алгоритмического обеспечения; к.т.н.

Писаренко Иван Вадимович - e-mail: pisarenko@superevm.ru; 347942, г. Таганрог, ул. Нижняя линия, 8; тел.: 88634477407; программист.

Мельников Андрей Кимович - Закрытое акционерное общество «ИнформИнвестГрупп», Москва; e-mail: ak@iigroup.ru; 115432, г. Москва, Проспект Андропова, 18, Бизнес-Центр Nagatino i-Land, корп. 7 "Ломоносов"; тел.: 84957871109; с.н.с.; к.т.н.

Levin Ilya Izrailevich - Southern Federal University; e-mail: iilevin@sfedu.ru; 15, Petrovskaya street, ap. 143, Taganrog, 347928, Russia; phone: +78634612111; head of the department of intellectual and multiprocessor systems; dr. sc.; professor.

Dordopulo Alexey Igorevich - "Supercomputers and Neurocomputers Research Center" Co. Ltd., Taganrog, Russia; e-mail: dordopulo@superevm.ru; 44, 9th lane, Taganrog, 347902, Russia; head of the division of mathematic and algorithmic support; cand. of eng. sc.

Pisarenko Ivan Vadimovich - e-mail: pisarenko@superevm.ru; 8, Nizhnjaja Linija street, Taganrog, 347942, Russia; phone: +78634477407; software engineer.

Melnikov Andrey Kimovich - "InformInvestGroup" C. C., Moscow, Russia; e-mail: ak@iigroup.ru; 18, Andropov Av., Nagatino i-Land usiness Centre, building 7 "Lomonosov", floor 3, Moscow, 115432, Russia; phone: +74957871109; senior researcher; cand. of eng. sc.

УДК 004.93:551.5 DOI 10.23683/2311-3103-2018-3-58-67

В.А. Шаповалов, Х.А. Тумгоева

РАСПОЗНАВАНИЕ И СОПРОВОЖДЕНИЕ ОБЛАЧНЫХ КОНВЕКТИВНЫХ ЯЧЕЕК С ЦЕЛЬЮ ТЕКУЩЕГО ПРОГНОЗА ОПАСНЫХ

ПОГОДНЫХ ЯВЛЕНИЙ

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

i Надоели баннеры? Вы всегда можете отключить рекламу.