Научная статья на тему 'РАЗРАБОТКА И РЕАЛИЗАЦИЯ ПЕРЕНОСИМЫХ АЛГОРИТМОВ РАСПРЕДЕЛЕННОГО ИСПОЛНЕНИЯ ФРАГМЕНТИРОВАННЫХ ПРОГРАММ НА НЕОДНОРОДНЫХ ВЫЧИСЛИТЕЛЯХ'

РАЗРАБОТКА И РЕАЛИЗАЦИЯ ПЕРЕНОСИМЫХ АЛГОРИТМОВ РАСПРЕДЕЛЕННОГО ИСПОЛНЕНИЯ ФРАГМЕНТИРОВАННЫХ ПРОГРАММ НА НЕОДНОРОДНЫХ ВЫЧИСЛИТЕЛЯХ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
82
12
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ФРАГМЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ / ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ / WEB-ТЕХНОЛОГИИ / СИСТЕМА LUNA

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Ажбаков Артем Альбертович, Перепелкин Владислав Александрович

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

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Ажбаков Артем Альбертович, Перепелкин Владислав Александрович

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

Текст научной работы на тему «РАЗРАБОТКА И РЕАЛИЗАЦИЯ ПЕРЕНОСИМЫХ АЛГОРИТМОВ РАСПРЕДЕЛЕННОГО ИСПОЛНЕНИЯ ФРАГМЕНТИРОВАННЫХ ПРОГРАММ НА НЕОДНОРОДНЫХ ВЫЧИСЛИТЕЛЯХ»

DEVELOPMENT AND IMPLEMENTATION OF DISTRIBUTED PORTABLE ALGORITHMS OF FRAGMENTED PROGRAMS EXECUTION ON HETEROGENEOUS MULTICOMPUTERS

A. A. Azhbakov, V.A. Perepelkin*

Novosibirsk State University, 630090, Novosibirsk, Russian Federation, institute of Computational Mathematics and Mathematical Geophysics SB RAS, 630090, Novosibirsk, Russian Federation

Parallel programming automation in numerical computations demands development of effective distributed system algorithms, capable of efficient execution of parallel programs, represented in high-level programming languages. This, in turn, demands conduction of many efficiency tests and experiments for a variety of applications and multicomputers. Of special importance are heterogeneous multicomputers, which comprise computing nodes of various configurations, connected by networks of different capabilities, since high performance computers tend to increase their heterogeneity, as well as different multicomputers tend to join into larger heterogeneous multicomputers. Nowadays there are many possibilities to aggregate various devices (such as cluster nodes, servers, personal computers, tablets and smartphones) into a single highly heterogeneous multicomputer, but there is a lack of software, suitable for conducting numerical computations on such multicomputers with an ability to vary system algorithms.

In the paper a distributed run-time environment is introduced, which is capable of execution of distributed parallel programs, written in LuNA language, on such highly heterogeneous hardware. To achieve good portability web-technologies were employed. Also, the architecture of the runtime environment supports replacement of the most of system algorithms, responsible for resources distribution, static and dynamic load balancing, computations scheduling, garbage collection, network routing etc. Thus, the environment is suitable for studying different system algorithms on highly heterogeneous multicomputers. The LuNA (Language for Numerical Algorithms) language was chosen as the basis because of the computational model, employed in the language. This model (called fragmented algorithm) allows defining computations in a portable, hardware-independent way, without pre-defined resources distribution or computations schedule. Fragmented algorithm represents computations as a set of side-effect-free micro-processes called computational fragments, which process immutable pieces of data called data fragments. In order to execute a fragmented algorithm the runtime environment has to assign fragments to computing nodes and deliver data fragments to their consumers — computational fragments. The problem of fragmented algorithm efficient execution is solved separately from the „numerical" part of computations. The run-time environment developed is compatible with LuNA compiler (i. e. it executes LuNA-program internal representation, produced by LuNA compiler).

The run-time environment developed focuses on portability, parameterization and scalability. Portability is necessary to allow usage of wide specter of computing nodes (and, thus, support a variety of heterogeneous multicomputers). Parametrization means the ability to replace various system algorithms with user-provided ones in order to study them in the field. Scalability is implied by large-scale numerical computations, where no centralized algorithms, communications or data structures are allowed unless demanded by the application.

(c) A. A. Azhbakov, V. A. Perepelkin, 2019

The paper proposes an analysis of fragmented algorithm execution in order to identify system algorithms, which are needed to cover the problem of efficient fragmented algorithm execution. According to the analysis architecture of the run-time environment is proposed, which provides necessary parametrization and scalability. For portability concerns the run-time environment was implemented in JavaScript and can be run in virtually any web-browser or under the Node.JS platform. All run-time environment instances form a peer-to-peer network using the Web Sockets technology. The topology of the network can also be controlled by a user module.

Some preliminary testing was conducted. A model problem was studied on a number of multicomputer configurations. The configurations included different nodes: personal multicore computer under OS Windows, a multicore server under Linux, a notebook, and Android smartphones. The tests conducted showed identical output to the output, produced by the original LuNA run-time system. Comparative performance tests were also conducted, which showed the expected curves of different parallelization efficiencies for different computation volume to data volume ratios. Further research should include study of a number of real applications and different system algorithms.

Key words: fragmented programming technology fragmented programming system LuNA, web-technologies.

References

1. Cloud Haskell. [Electron. Res.]: http://haskell-distributed.github.io/ (accessed: 01.04.2019).

2. Carlton M., Van Roy P. A distributed Prolog system with AND-parallelism // Proceedings of the Twenty-First Annual Hawaii International Conference on System Sciences. Volume II: Software track. 1988.

3. Kale, Laxmikant V. and Bhatele, Abhinav. Parallel Science and Engineering Applications: The Charm++ Approach. Taylor & Francis Group, CRC Press, 2013. ISBN 978-1-4665-0412-7

4. Bosilca, G., Bouteiller, A., Danalis, A., Faverge, M., Herault, T., Dongarra, J. PaRSEC: Exploiting Heterogeneity to Enhance Scalability // IEEE Computing in Science and Engineering. November, 2013. Vol. 15. N 6. P. 36-45.

5. X10 for High Performance Scientific Computing. Josh Milthorpe. Ph.D. Thesis, Research School of Computer Science, Australian National University, June 2015.

6. Treichler Sean, Bauer Michael, Sharma Rahul, Slaughter Elliott, and Aiken Alex. Dependent Partitioning //In Object Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016).

7. Malvshkin Victor E., Perepelkin Vladislav A. LuNA Fragmented Programming System, Main Functions and Peculiarities of Run-Time Subsystem // Parallel Computing Technologies. 11th International Conference, PaCT 2011, Proceedings. LNCS 6873. Springer, 2011. P. 53-61.

8. Malvshkin. V., Perepelkin. V., Schukin G. Scalable Distributed Data Allocation in LuNA Fragmented Programming System // Journal of Supercomputing, S.I.: Parallel Computing Technologies - 2016. Springer, 2016. P. 1-7. DOI: 10.1007/sll227-016-1781-0.

9. Boost C++ Libraries. [Electron. Res.]: https://www.boost.org/ (accessed: 01.04.2019)

10. Message Passing Interface (MPI) Forum. [Electron. Res.]: https://www.mpi-forum.org/ (accessed: 01.04.2019).

11. Javascript performance benchmarks. [Electron. Res.]: https://benchmarksgame-team.pages, debian.net/benchmarksgame/faster/j avascript.html (accessed: 01.04.2019).

РАЗРАБОТКА И РЕАЛИЗАЦИЯ ПЕРЕНОСИМЫХ АЛГОРИТМОВ РАСПРЕДЕЛЕННОГО ИСПОЛНЕНИЯ ФРАГМЕНТИРОВАННЫХ ПРОГРАММ НА НЕОДНОРОДНЫХ ВЫЧИСЛИТЕЛЯХ

А. А. Ажбаков, В. А. Перепелкин

Новосибирский национальный исследовательский государственный университет,

630090, Новосибирск, Россия * Институт вычислительной математики и математической геофизики СО РАН,

630090, Новосибирск, Россия

УДК 00 1,1 "23

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

Ключевые слова: фрагментированное программирование, параллельное программирование, web-технологии, система LuNA.

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

(с) А. А. Ажбаков, В. А. Перепелкин, 2019

мультикомпьютеров, С одной стороны, однородные вычислители (например, вычислительные кластеры) объединяют вместе с образованием неоднородного вычислителя, С другой стороны, все больше различных устройств (ноутбуки, планшеты, телефоны) становятся достаточно производительными, чтобы представлять интерес для их использования в научном моделировании.

Для преодоления этих трудностей разрабатываются системы программирования [18], автоматизирующие часть этой работы и повышающие уровень программирования для пользователя, И хотя в общей постановке эффективная параллельная реализация алгоритма, представленного на высоком уровне абстракции, является алгоритмически трудноре-шаемой проблемой (что не позволяет рассчитывать на универсальное ее решение), системы программирования существенно облегчают процесс разработки и отладки параллельных программ за счет того, что вбирают в себя различные частные алгоритмы и эвристики, позволяющие конструировать эффективные параллельные программы в частных случаях, По мере развития систем программирования их область применения расширяется, а эффективность конструируемых программ — повышается.

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

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

В функциональных и логических языках и системах (см., например, [1, 2]), кардинально повышающих уровень программирования, эффективная распределенная реализация вычислений практически недостижима (за исключением узкого класса прикладных задач), так как модель вычислений слишком абстрактна, а количество вариантов реализации очень обширно. Другой класс систем — это низкоуровневые средства программирования, Их использование для экспериментирования с системными алгоритмами управления поведением затруднительно ввиду отсутствия высокоуровневой модели, которую можно было бы взять за основу для постановки задачи управления поведением. Основной интерес представляет промежуточный уровень, на котором находятся системы программирования, имеющие в своей основе высокоуровневую модель вычислений (такие как Cliann [3], PaRSEC [4], Х10 [5], Legion [6] и многие другие).

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

Например, объектно-ориентированная система программирования Cliann [3] имеет в своей основе удобную модель вычислений, в которой прикладной алгоритм описывается в виде набора серпалпзуемых объектов, обменивающихся сообщениями. Такая модель позволяет исполнительной среде Cliann прозрачно для пользователя перемещать объекты с одного вычислительного узла на другой, контролировать очередность обработки переданных сообщений, сохранять состояние отдельных объектов и системы в целом и т, п. При этом на среду исполнения накладываются обязательства по поиску объектов на распределенном вычислителе, обеспечению баланса нагрузки, доставке сообщений. Таким образом, модель вычислений Cliann представляется вполне подходящей для проведения экспериментов с различными алгоритмами управления поведением, однако программная реализация не предусматривает замену системных модулей, отвечающих за управление поведением, и может выполняться лишь в форме редактирования исходного кода системы. Исключение составляют отдельные системные алгоритмы, такие как модуль динамической балансировки нагрузки на вычислитель, но в целом системные алгоритмы зафиксированы в коде системы.

Кроме того, системы программирования, используемые для высокопроизводительных вычислений, обычно переносимы лишь в классе настольных и серверных компьютеров и не могут функционировать на .мулыпкомпьютерах, имеющих в составе еще и мобильные устройства (например, на базе ОС Android), что ограничивает класс поддерживаемых мультикомпыотеров с точки зрения их неоднородности.

Из вышесказанного видно, что существующие системы лишь в ограниченной степени подходят для использования в качестве платформы для экспериментального исследования системных алгоритмов исполнения высокоуровневых программ на неоднородных вычислителях. Среди прочих систем наиболее подходящей для обозначенных целей представляется система автоматизации конструирования параллельных программ LuNA [7, 8], т.к. в ней управление ходом исполнения алгоритма явно отделяется от содержательной части вычислений (отдельно ставится задача управления поведением, как и в системе Legion [6]), Наиболее существенным недостатком системы LuNA в плане поддержки неоднородных вычислителей является ограниченная переносимость среды исполнения (runtime-еиетемы): привязка к С++ и библиотекам Boost [9] и MPI [10],

В настоящей работе предлагается распределенная среда исполнения LuNA-программ с существенно более высокой степенью переносимости. Переносимость достигается использованием веб-технологий как платформы, обладающей широчайшей переносимостью и при этом достаточно высокой для обозначенных целей производительностью (отставание по производительности от языка С составляет от 1,5 до 10 раз, в зависимости от типа задачи [11]). Акцент в предлагаемой системе делается на создании инструментария для исследования распределенных системных алгоритмов исполнения высокоуровневых программ, В частности, системные алгоритмы распределения ресурсов, выбора порядка выполнения вычислений, сборки мусора и т, п, являются заменяемыми модулями системы, а в систему встроены средства профилирования и оценки эффективности исполнения программы. Рассмотрим требования, предъявляемые к среде исполнения.

— Переносимость — возможность запуска системы на разнородных вычислительных устройствах, а также одновременное использование разнородных вычислительных ресурсов в распределенных вычислениях,

— Параметризуемоеть системными алгоритмами распределенного исполнения параллельных программ в неоднородной среде. Исследовательская система предназначена для проведения распределенного исполнения параллельных программ под управлением пользовательских алгоритмов, которые являются предметом исследования пользователя — разработчика системных алгоритмов. Необходимо определить виды алгоритмов, которые могут выступать предметом исследований, и спроектировать архитектуру и интерфейсы исследовательской платформы таким образом, чтобы обеспечить возможность их подключения к системе, а также определить способ представления пользовательских алгоритмов. Таким образом, алгоритм работы самой исследовательской платформы использует подключенные пользовательские системные алгоритмы для выполнения реализуемых ими процессов управления распределенным исполнением программ,

— Масштабируемость — алгоритм работы системы распределенного исполнения программ не должен содержать принципиальных ограничений для одновременного использования произвольного количества вычислительных устройств. Это подразумевает отсутствие централизации в системных алгоритмах распределенной среды исполнения. Допустимы ограничения масштабируемости, вызванные конкретной реализацией пользовательских системных алгоритмов или прикладной задачей.

Оставшаяся часть статьи организована следующим образом, В разделе 1 рассматриваются модель распределенного исполнения фрагментированной программы и ее анализ, В разделе 2 предлагаются архитектура и алгоритмы среды исполнения, В разделе 3 представлены описание реализации и описание результатов экспериментального исследования, В заключении подведены итоги работы и обозначены дальнейшие направления исследования,

1, Модель исполнения фрагментированной программы.

В данном разделе формулируются определения технологии фрагментированного программирования, представляется модель исполнения фрагментированный программы в технологии фрагментированного программирования в общем случае и в условиях распределенной среды исполнения, а также выполняется анализ модели с целью выявления функций среды исполнения и их особенностей,

1,1, Термины и определения. Фрагментированная программа. В технологии фрагментированного программирования фрагментированная программа представляет собой описание прикладного алгоритма в виде операторного выражения. Выражение задает множество операторов, которые должны быть выполнены вычислителем в соответствии с семантикой, и множество переменных, значения которых вычисляются в ходе исполнения операторов. Значения переменных в технологии фрагментированного программирования называют фрагментами данных, а операторы которые их производят — фрагментами вычислений.

Исполнение фрагментированной программы заключается в вычислении этого выражения над некоторым входным набором данных. Вычисление выражения, то есть выполнение задаваемого им множества операторов над входными данными, описывается потенциально бесконечным вычислительным, графом,.

Вычислительный граф. Вычислительный граф программы Р на входном таборе данных I — ориентированный граф ОР, / = (V, А), где множество вершин V = О У О,

Рис. 1. Пример вычислительного графа: прямоугольники операторы, скругленные прямоугольники

фрагменты данных

D — множество переменных единственного присваивания, O — множество операторов { op = {Din op, Dout op, Oout op)}, где Din op С D — множество входных переменных оператора op, Dout op С D — множество выходных переменных оператора op, Oout op С O — множество выходных операторов оператора op, множество дуг E = UDin[} UDaut[} Uoout, где

UDin = U (Din op,op), UD0ut = U (0P, D°at op), UOout = |J (oP, Oout op). op eo op eo op eo

Исполнение оператора приводит к вычислению значения его выходных переменных. Исполнение оператора возможно, только если вычислены значения всех его входных не-

op

op

В LuXA исполнение программ начинается с оператора main но аналогии с процедурой main в традиционных языках программирования (рис, 1),

Исполнение фрагментированной программы. Будем называть состоянием исполнения фрагментирыванной программы P на начальном наборе данных I подграф S = (Vs, As), Vs = D^U OS вычислительного графа GP, I, такой что:

— если d е Ds, то wop е O | d е Dout op выполняется op e Os и (op, d) e As\

— если o e Os, то wop e O | o e Oout op выполняется op e Os и (op, 0) E As. Таким образом, состояние исполнения содержит операторы, которые были исполнены, и переменные, значения которых были вычислены, а также операторы, которые являются прямыми потомками исполненных операторов. Обозначим множество операторов, готовых к исполнению в состоянии исполнения S : Rs = {op e Os|Din op С Ds и op не был исполнен ранее} (для упрощения изложения не будем

Os

Состояние исполнения S' = (Vs, As') получается из состояния исполнения S исполне-op E Rs

Vs' = VsU Dout op Oout op-,

As' = As U Aoutop{j Arest^m Aoutop = { (op, d) | d e Dout op d E Oout op }A rest { (di, d2) | ((di E A^op d2 e Vs) (di E Vs d 2 E Aoutop)) d2 ) e A }.

То есть состояние исполнения S было расширено выходными операторами и переменными оператора op, а также всеми догами, которыми они связаны с вершинами S в вычислительном графе.

Пусть So = ({main} , 0) — начальное состояние, Sn = GP, I — конечное состояние. Потенциально бесконечную последовательность состояний {S0, ..., Sn, ... }, где Si+1 получено из Sj исполнением оператора из RSi, будем называть исполнением фрагментиро-ванной программы P на наборе входных данных I, Вопросы корректности LuNA-программ в данной статье не рассматриваются, будем считать, что такая последовательность существует,

PI

деляют последовательность состояний исполнения однозначно — зачастую множество RSi содержит более одного оператора, готового к исполнению, они могут быть использованы для перехода в следующее состояние в разном порядке. Это соответствует недетерминированности порядка исполнения операторов параллельной программы,

1,2, Исполнение фрагментированной программы, в распределенной среде. Чтобы добавить в модель исполнения фрагментированной программы детали исполнения на мультикомпыотере, приведем краткую общую характеристику архитектуры муль-тикомпьютера и примерный сценарий исполнения программы на нем и уточним модель исполнения для условий мультикомпыотера.

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

Примерный сценарий распределенного исполнения фрагментированной программы. В начальный момент времени оператор main загружен на один из узлов мультикомпьютера, узлы мультикомпьютера связаны между собой, образуя некоторую сетевую топологию, LuNA-программа загружена на каждый узел мультикомпьютера. Узел-лидер выполняет оператор вызова подпрограммы main и распределяет результирующие операторы по узлам вычислительной сети в соответствии с используемым системным алгоритмом для последующего исполнения, В случае выполнения оператора, присваивающего значения переменным, результирующие фрагменты данных аналогичным образом назначаются на хранение в локальную память одного или нескольких узлов мультикомпьютера. При наличии у оператора входных зависимостей по данным для каждой входной переменной определяется узел хранения ее значения и направляется запрос на получение значения, Исполнение программы заканчивается, когда выполнены все операторы, составляющие вычислительный граф исполняемого фрагментированного алгоритма с выбранными входными данными.

Формализуем понятие мультикомпьютера как связный граф M = (N, C), N — множество вычислительных узлов мультикомпьютера, C = {(n1, n2) | n1, n2 G N, n1 = n2} — двунаправленные каналы связи между узлами мультикомпьютера.

Будем считать, что исполнение {S0, ..., Sn, ... } фрагментированной про граммы P на наборе входных данных I на, мультикомпьютере M соответствует множеству отображений Q = {Q0, ..., Qn}, определяющих хранение состояний исполнения на узлах мультикомпыотера, где Qi : VSi ^ 2n такое, что:

— если Si+i получено из Si исполнением оператора op, то 3n е N | n е Qi(op) n е Qi(d) vd Е Din api

— если 3i е [0, n] 3d Е DSi | Qi(d) =0, то vj > i выполняется Qj(d) = 0.

Такое определение фиксирует следующие факты:

— Для исполнения программы на мультикомпьютере на каждом состоянии исполнения все невыполненные операторы, т, е, еще не послужившие для перехода в другое состояние исполнения, и их входные переменные должны находиться в памяти одного или нескольких узлов мультикомпыотера;

— Операторы и переменные могут мигрировать, т, е, между состояниями исполнения узлы хранения одного и того же оператора или переменной могут отличаться;

— Для перехода в очередное состояние исполнения путем исполнения оператора, необходимо, чтобы существовал узел мультикомпыотера, в памяти которого одновременно находится данный оператор и все входные переменные этого оператора;

— Память для хранения оператора или переменной может быть освобождена — этому соответствует отображение в пустое подмножество, такой оператор или переменная больше не могут появиться в памяти мультикомпыотера после освобождения памяти,

1,3, Анализ функционала среды, исполнения в процессе исполнения фрагментированной программы.

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

— Отображение операторов и переменных для каждого состояния исполнения на узлы мультикомпыотера соответствует распределению нагрузки на память мультикомпыотера;

— Отображение оператора op Е RS для состояния S на один узел со всеми d е Din ор

op

вычислительной нагрузки мультикомпыотера;

— Отображение операторов и переменных в пустое множество соответствует распределенной „сборке мусора";

— Отображение оператора или переменной более чем на один узел мультикомпыотера соответствует избыточному хранению, что имеет значение в обеспечении отказоустойчивости, повышения доступности данных и т.п.;

— Выбор путей миграции операторов и переменных соответствует балансировке нагрузки на каналы связи между узлами мультикомпыотера.

Таким образом, алгоритм работы распределенной среды исполнения, задавая множе-Q

фективного (в смысле использования времени и ресурсов) исполнения параллельной программы,

Q

Qi

Sj | j < i

ческой или собранной средой исполнения в динамике. Множество факторов может быть учтено при принятии решения, в частности, статические и динамические характеристики вычислительной сети, такие как граф связности узлов мультикомпыотера, латентность и

пропускная способность каналов связи, объем памяти и производительность узлов муль-тикомпыотера, количество вычислительных ядер, загруженность каналов связи и вычислительных узлов в данный момент и статистика за предыдущий отрезок времени, длина такого отрезка времени.

Граф связности вычислительной сети мультикомпыотера также является одним из ключевых факторов распределенного исполнения параллельной программы, исследовательская платформа должна предоставлять возможность управлять связыванием разнородных вычислителей в вычислительную сеть.

Кроме отображения состояний исполнения на физические ресурсы мультикомпыотера, среда исполнения осуществляет также исполнение операторов в рамках узла мультикомпыотера, Способ организации параллельного исполнения оператора и параллельной обработки множества операторов, назначенных на данный узел мультикомпыотера, непосредственно влияет на время распределенного исполнения фрагментированной программы.

Другой важной деталью является стратегия, исполнения операторов с большим количеством результирующих операторов — при достаточно большом количестве выходных операторов и фрагментов данных исполнение оператора может привести к переполнению памяти мультикомпыотера или скачку сетевой нагрузки. Примером такой ситуации является исполнение оператора, реализующего цикл for с достаточно большим диапазоном значений счетчика. Для уменьшения влияния скачка нагрузки возможно, например, производить выходное множество операторов и данных по частям, дожидаясь их использования и освобождения памяти. Данные сценарии представляют интерес для исследования, и системный алгоритм, реализующий их, должен быть представлен в архитектуре системы в виде отдельного модуля в соответствии с требованием параметризуемости.

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

Таким образом, выявлены основные функции среды исполнения, большая часть которых осуществляется путем управления распределением операторов и фрагментов данных по узлам мультикомпыотера,

2. Предлагаемая архитектура среды исполнения LuNA и алгоритм ее работы.

Исходя из аспектов исполнения фрагментированной программы, выделенных в предыдущем разделе, была разработана модульная архитектура экземпляра среды исполнения LuNA (рис. 2).

Коммуникационный модуль. Предоставляет низкоуровневый программный интерфейс для передачи сообщений другим экземплярам среды исполнения LuNA, Не обладает представлением об устройстве вычислительной сети в целом, оперирует лишь каналами связи с соседними вычислительными узлами, которые идентифицирует по некоторому ключу-направлению, задаваемому топологией сети (например „левый сосед", „правый сосед", если узлы объединены в „линейку"). Позволяет реализовать различные способы передачи сообщений соседним узлам вычислительной сети и отслеживать состояние канала связи и статистику его использования.

Модуль исполнения. Данный модуль осуществляет исполнение операторов LuNA — извлекает список аргументов оператора, запрашивает фрагменты данных, соответствующие аргументам, в модуле хранилища, обрабатывает тела операторов согласно их типу, вызывает элементарную подпрограмму для атомарных операторов, передает результирующие операторы и фрагменты модулю хранилища (см, листинг 1), Модуль позволяет ре-

Опциональные прикладные модули

Опциональные модули навигации

Рис. 2. Модульная архитектура экземпляра среды исполнения

ализовать различные способы работы с циклами и задействовать параллелизм па уровне одного узла мультикомпыотера.

Листинг 1. Псевдокод простого алгоритма работы модуля исполнения

// Основной цикл

// Работа останавливается по команде алгоритма обнаружения завершения while (¡stop) {

if ( StorageModule . IsLocalOpStorageEmpty ()) WaitForOps ();

// Исполнение операторов , назначенных па текущий узел foreach cf in StorageModule. LocalOpStorage { /7 Запросить аргументы var args = | | ;

foreach dfld in GetArgumentList (op) {

args . Add( await StorageModule . GetDf(dfId )); /7 Модуль хранилища выполнил сетевые запросы

}

/7 Выполнение оператора

var newFrags = ExecOpWithArgs (op , args);

/7 Сохранение результирующих фрагментов /7 в память текущего или удаленного узла

StorageModule . Add(newFrags ): }

}

Модуль хранилища. Отвечает за храпение операторов и фрагментов данных, абстрагирует распределенный характер системы. Использует модуль навигации Pathfinder

(см, далее) для определения узла хранения фрагмента и коммуникационный модуль для передачи и приема фрагментов и системных сообщений, скрывая таким образом трудности работы с распределенной памятью от модуля исполнения (см, листинг 2),

Листинг 2. Псевдокод примерного алгоритма работы, модуля хранилища

void PutOp(Op op) {

var targetNodePath = PathfinderNavModule . GetDestination (op );

if (IsCurrentNode (targetNodePath )) StorelnLocalStorage (op ); else CommModule. Send (op , targetNodePath);

}

void GetOp(OpId) {

var storageNodePath = PathfinderNavModule , GetDestination (opld );

if (IsCurrentNode (storageNodePath )) return GetFromLocalStorage (opld );

else {

var opRequest = CreateRequestMessage (opld ); CommModule. Send (opRequest , storageNodePath) return await WaitForAnswer ();

}

}

/ / Аналогично для фрагментов данных

В данном модуле может быть реализовано отказоустойчивое хранение, а также алгоритмы сборки мусора. При этом для обеспечения дополнительных системных коммуникаций в локационный модуль Pathfinder должна быть добавлена навигационная логика для системных сообщений.

Подобный подход, когда модуль, осуществляющий сетевые коммуникации, тесно связан

со своим навигационным модулем, может быть использован при реализации любых других

"

Локационный модуль (Pathfinder). Выполнение очередного оператора LuNA включает разрешение его входных зависимостей и их загрузку из распределенной памяти, а также сохранение результирующих операторов и фрагментов данных в распределенную память. Функция навигации, реализованная в данном модуле, для каждого фрагмента определяет узел мультикомпыотера, локальная память которого должна быть использована для хранения фрагмента.

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

нескольких узлов мультикомпыотера для хранения одного узла. Возможна реализация

"

лительной сети, на которые поступят зависящие от него операторы.

Таким образом, локационный модуль реализует отображение Q из модели исполнения фрагментированной программы на мультикомпыотере.

Отметим, что порядок исполнения операторов в среде исполнения, и, следовательно, порядок следования состояний исполнения (So, ..., Sn, ... }, определяется совокупно-

стью модулей — локационный модуль может поместить оператор на выеоконагруженный узел и отложить таким образом его исполнение относительно оператора, направленного на свободный узел, а реализация модуля исполнения и модуля хранилища влияют на порядок исполнения операторов, находящихся в очереди на одном узле.

Навигация сообщений. Некоторые системные алгоритмы могут осуществлять сетевые коммуникации по собственному протоколу, например алгоритм обнаружения остановки, В ходе таких коммуникаций как правило возникают две задачи: определить, какому из соседних узлов вычислительной сети направить сообщение, чтобы оно достигло узла-получателя, либо определить узел-получатель и проложить маршрут к нему посредством других узлов, если узел-получатель не имеет прямого соединения с узлом-отправителем. Решение таких задач предполагает знание об устройстве окружающей сети и наличие логики маршрутизации. Предлагается вынести данную логику из модуля, реализующего исходный системный алгоритм в специальный отдельный модуль — модуль навигации — который выступает прослойкой между прикладным модулем и коммуникационным модулем, Это позволит упростить прикладной модуль и даст возможность использовать одну реализацию навигационного модуля нескольких прикладных. Примером модуля навигации является локационный модуль Pathfinder,

Задача модуля навигации состоит в том, чтобы собрать информацию о топологии и состоянии узлов и каналов связи некоторой подсети вычислительной сети и использовать ее для определения маршрута и/или узла назначения для прикладных сообщений (см, листинг 3 и листинг 4),

Листинг 3. Псевдокод навигации с точки зрения прикладного модуля

va г message ;

* Сформировать сообщение message *

va г path = NavModule . CalculateDestination (message ); CommModule. Send ( message , path );

Листинг 4- Псевдокод навигации с точки зрения модуля навигации

va г networklnfo ; // Использовать CommModule

// для сбора информации о сети (опционально)

networklnfo = ColleetNetworklnfoImpl (CommModule);

Path CalculateDestination (message) {

var destination = ChooseDestinationlmpl ( message , nerworklnfo ); var gateway = ChooseGatewaylmpl (destination , networklnfo); return new Path ( destination , gatewav );

}

Алгоритм инициализации вычислительной сети. Этап инициализации одноранговой вычислительной сети подразумевает установку каналов связи между узлами .мулы п-компьютера в соответствии с некоторой сетевой топологией. Поскольку изначально не связанные узлы не могут знать о существовании друг друга, необходим сигнальный сервер — элемент централизации, который сообщит каждому обратившемуся узлу информацию о его месте в топологии сети и поможет обменяться данными „рукопожатия" (handshake)

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

Отметим, что наличие сигнального сервера не нарушает требование масштабируемости, поскольку он используется лишь до начала распределенного исполнения программы и не участвует в передаче данных во время исполнения.

Вывод. Таким образом, все системные задачи исполнения фрагментированной программы, выявленные в ходе анализа, могут быть независимо реализованы с данной модульной декомпозицией экземпляра среды исполнения LuNA, Были рассмотрены основные виды системных алгоритмов, реализующих распределенное исполнение фрагментированной программы, разработана модульная архитектура среды исполнения, позволяющая блочно изменять реализацию системных алгоритмов, на уровне модульной архитектуры соблюдено требование параметризуемое™. Архитектура также не накладывает ограничений на добавление новых видов модулей, взаимодействие модулей друг с другом принципиально не ограничено. Предлагаемое решение не накладывает ограничений на масштабируемость системы, предоставлена свобода поддержки вычислительных сетей с произвольным графом связности. Возможность подключения разных реализаций модулей на разных узлах мультикомпыотера, а также возможность реализации произвольных протоколов связи внутри модулей, дает возможность реализовать переносимую, поддерживающую разнородные устройства среду исполнения,

3. Реализация и тестирование распределенной среды исполнения.

3,1, Реализация распределенной среды, исполнения фрагментированных программ на базе web-технологии.

Требования к средствам реализации среды исполнения. При выборе средств для реализации среды исполнения фрагментированных программ ключевую роль играет требование переносимости. Необходимо обеспечить возможность одновременно задействовать разнородные вычислительные устройства и сохранить при этом удобство параметризуемое™ — разработчик системных алгоритмов не должен реализовывать свой алгоритм несколько раз на разных языках программирования, чтобы использовать его на неоднородном оборудовании. Еще одним важным фактором при выборе технологий является удобство развертывания системы — минимизация работы по развертыванию позволит разработчику системных алгоритмов провести эксперименты на большем количестве устройств и сконцентрироваться на прикладной проблеме. Обеспечение максимальной производительности в пределах одного узла вычислительной сети не является требованием при разработке программной платформы для исследования системных алгоритмов распределенного исполнения программ, однако используемые технологии и программная реализация системы не должны препятствовать использованию системы по назначению с точки зрения производительности.

Применение web-технологий для реализации среды исполнения. Исходя из требований, для реализации среды исполнения LuNA были выбраны веб-технологии — JavaScript Runtime Environment как окружение для запуска экземпляра среды исполнения, JavaScript в качестве языка среды исполнения и модулей, HTML для графического интерфейса при управлении системой и отображении информации о ходе исполнения.

На каждом узле мультикомпыотера запускается веб-браузер или среда исполнения Node.js для выполнения JavaScript-кода среды исполнения LuNA, Одним из способов загрузки среды исполнения является загрузка веб-страницы с прикрепленным JavaScript-кодом среды исполнения и графическим интерфейсом через веб-сервер. Используя интерфейс веб-страницы, пользователь может управлять настройками вычислительной задачи, загружать прикладные программы и модули среды исполнения, а также наблюдать за состоянием вычислительной сети.

Сигнальный сервер является компонентом среды исполнения, он развертывается в зоне доступности для всех экземпляров среды исполнения и служит точкой подключения вычислителя к .мулы h компьютеру. Он сообщает подключившимся экземплярам среды исполнения информацию об их положении в топологии сети и передает между ними пакеты для установки р2р-еоединения.

Был реализован веб-сервер на базе ASP.NET Core, совмещающий функции сигнального сервера и сервера для загрузки веб-страниц с экземплярами среды исполнения. Для связи сервера с экземплярами среды исполнения используется WebSoeket, для р2р-евязи между экземплярами среды исполнения — WebRTC,

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

Характеристика web-технологий как средства реализации среды исполнения. Выбор веб-технологий обусловлен тем, что они изначально разрабатывались для обеспечения платформо-незавпснмого взаимодействия в распределенных неоднородных системах. Сохраняется тенденция обеспечения функцией просмотра веб-страниц самых разных устройств, практически каждая операционная система включает веб-браузер, возможно задействовать широчайший класс мобильных и персональных устройств, существующих и будущих, которые обладают самыми разными с точки зрения неоднородности характеристиками. Также, помимо веб-браузеров JavaScript может исполняться и на высокопроизводительном серверном ПО (Node.js), включая узлы вычислительных кластеров. Таким образом, использование web-технологий позволяет задействовать для создания экспериментального мультикомпыотера множество устройств, гораздо более неоднородное, чем позволяют используемые в LuNA С++ и MPI, кроме того, это дешевле, проще и быстрее, чем использование настольных компьютеров или кластерного оборудования для этой цели.

Веб-технологии предоставляют высокую переносимость, масштабируемость, возможность задействовать разнородные вычислительные устройства, развитые средства разработки и перспективы улучшения во всех этих направлениях.

В соответствии с вышеизложенным новая среда исполнения LuNA была программно реализована. Разработаны:

— Клиентское веб-приложение, исполняемое в веб-браузере, образующее ядро системы, параметризуемое модулями;

— Сигнальный сервер, параметризуемый алгоритмами, определяющими топологию вычислительной сети;

— Простейшие реализации модулей.

3.2. Тестирование новой среды, исполнения LuNA.

Чтобы убедиться, что новая реализация среды исполнения LuNA может быть использована в качестве программной платформы для экспериментальных исследований систем-

♦ без цикла цикл х4 цикл х8

s № и

и «

о

в

о в

и И

180 160 140 120 100 80 60 40 20

16

Количество задействованных ядер

Рис. 3. Влияние реализации навигационного модуля на исполнение тестовой задачи

пых алгоритмов распределенного исполнения программ, был выполнен ряд тестовых запусков, демонстрирующих влияние используемого навигационного модуля па исполнение программы.

В качестве тестовой задачи использовалось решение уравнения Пуассона методом Яко-би в трехмерной области размером 200x200x200, 85 итераций, топология вычислительной сети — одномерная решетка.

Первая серия тестовых запусков демонстрирует влияние используемого навигационного модуля па исполнение программы. Дня этого были выполнены запуски среды исполнения с различными реализациями локационного модуля Pathfinder, распределяющими вычислительную нагрузку па 1, 2, 4, 8 и 16 узлов мультикомпьютера из 16 имеющихся. Дня наблюдения за влиянием па время исполнения программы накладных расходов па коммуникации в разных классах задач, отличающихся по объемам вычислений па единицу данных, такие классы были смоделированы увеличением времени исполнения некоторых наиболее длительно выполняемых операторов путем многократного их выполнения (4 и 8 повторов). Узлы мультикомпьютера представлялись процессами-вкладками браузера Chrome па компьютере с процессором Intel Core i5-7600K с 8Гб оперативной памяти под управлением ОС Windows 10.

На рис. 3 представлены результаты измерений времени исполнения тестовой задачи.

Первый график, соответствующий запуску без применения зацикливания операторов, показан замедление исполнения с ростом количества задействованных вычислителей. При использовании 8-кратного зацикливания наблюдается ускорение исполнения тестовой задачи с увеличением количества вычислителей, задействованных реализацией локационного модуля, что позволяет сделать вывод о том, что в первом случае па данной копфигура-

ции среды исполнения коммуникационные расходы сопоставимы с временными затратами на выполнение полезных вычислений при данной фрагментации трехмерной области, а во втором — время передачи данных относительно мало и удается получить выгоду от параллельного исполнения.

Также выполнялись серии тестов, направленные на проверку переносимости, тестовая задача была выполнена на различных сочетаниях вычислительных устройств, таких как 4-х ядерный сервер с 32 ГБ оперативной памяти под управлением Linux, ноутбук под управлением Windows 10, а также мобильные устройства с ОС Android, Стоит отметить, что несмотря на разницу языков в новой (JavaScript) и существующей (С++) реализациях среды исполнения, количество итераций до сходимости метода в примерах совпало, а также совпало значение невязки на последнем шаге с точностью как минимум 6 знаков.

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

Результаты тестов свидетельствуют о функциональном состоянии реализации среды исполнения, достижении требуемого уровня переносимости, и подтверждают возможность использования замены модулей для управления исполнением параллельной программы в экспериментальных исследованиях алгоритмов динамической балансировки вычислительной нагрузки.

Заключение. В работе предлагается распределенная среда исполнения фрагменти-рованных программ на языке LuNA, обладающая высокой степенью переносимости и предназначенная для проведения экспериментальных исследований системных алгоритмов управления поведением высокоуровневых параллельных программ. Высокая степень переносимости достигается за счет использования веб-технологий в качестве базовой платформы среды исполнения, что позволяет использовать среду исполнения на муль-тикомпыотерах с высокой степенью неоднородности аппаратного обеспечения, включая кластерный, серверный, персональный и мобильный классы устройств. Архитектура системы допускает замену системных алгоритмов распределения и перераспределения ресурсов, планирования вычислений, сборки мусора, маршрутизации коммуникаций и прочих функций. Проведено предварительное тестирование среды исполнения на ряде тестов, которое показало соответствие системы предъявляемым требованиям, в том числе по производительности.

Список литературы

1. CloudHaskell. [Электронный ресурс]: http://haskell-distributed.github.io/ (дата обращения: 01.04.2019).

2. Carlton M., Van Roy P. A distributed Prolog system with AND-parallelism // Proceedings of the Twenty-First Annual Hawaii International Conference on System Sciences. Volume II: Software track. 1988.

3. Kale, Laxmikant V. and Bhatele, Abhinav. Parallel Science and Engineering Applications: The Charm++ Approach. Taylor & Francis Group, CRC Press, 2013. ISBN 978-1-4665-0412-7.

4. Bosilca, G., Bouteiller, A., Danalis, A., Faverge, M., Hérault, T., Dongarra, J. PaRSEC: Exploiting Heterogeneity to Enhance Scalability // IEEE Computing in Science and Engineering. November, 2013. Vol. 15. N 6. P. 36-45.

5. X10 for High Performance Scientific Computing. Josh Milthorpe. Ph.D. Thesis, Research School of Computer Science, Australian National University, June 2015.

6. Treichler Sean, Bauer Michael, Sharma Rahul, Slaughter Elliott, and Aiken Alex. Dependent Partitioning //In Object Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016).

7. Malyshkin Victor Е., Perepelkin Vladislav A. LuNA Fragmented Programming System, Main Functions and Peculiarities of Run-Time Subsystem // Parallel Computing Technologies. 11th International Conference, PaCT 2011, Proceedings. LNCS 6873. Springer, 2011. P. 53-61.

8. Malyshkin. V., Perepelkin. V., Schukin G. Scalable Distributed Data Allocation in LuNA Fragmented Programming System // Journal of Supercomputing, S.I.: Parallel Computing Technologies - 2016. Springer, 2016. P. 1-7. DOI: 10.1007/sll227-016-1781-0.

9. Boost С++ Libraries. [Электронный ресурс]: https://www.boost.org/ (дата обращения: 01.04.2019).

10. Message Passing Interface (MPI) Forum. [Электронный ресурс]: https://www.mpi-forum. org/ (дата обращения: 01.04.2019).

11. Javascript performance benchmarks. [Электронный ресурс]: https://benchmarksgame-team. pages.debian.net/benchmarksgame/faster/javascript.html (дата обращения: 01.04.2019).

Ажбаков Артем Альбертович — магистрант факультета информационных технологий, Новосибирский национальный исследовательский государственный университет, 630090, Новосибирск, Россия; e-mail: azhbakov422@gmail. com.

Ажбаков Артем Альбертович получил степень бакалавра в 2017 году в Новосибирском национальном исследовательском государственном университете на кафедре параллельных вычислений факультета информационных технологий, тема выпускной квалификационной работы — „Разработка и реализация переносимых алгоритмов распределенного исполнения фрагментированных программ". Научные интересы — разработка системных алгоритмов распределенного исполнения параллельных программ.

Azhbakov Artem Albertovich received a bachelor's degree in Computer science in 2017 at Novosibirsk State University, 630090, Novosibirsk, Russia, e-mail: azhbakov422@gmail.com. Currently studying for the master's degree. Research interests include development of system algorithms of parallel program execution.

Перепелкин Владислав Александрович — научный сотрудник Института вычислительной математики и математической геофизики СО РАН; старший преподаватель каф. параллельных вычислений фа-

культета информационных технологий Новосибирского национального исследовательского государственного университета. Тел.: (383) 33089-94, e-mail: perepelkin@ssd.sscc.ru.

Перепелкин Владислав Александрович в 2008 году окончил Новосибирский государственный университет с присуждением степени

магистра техники и технологии по направлению

"

настоящее время работает научным сотрудником в Институте вычислительной математики и математической геофизики СО РАН и старшим преподавателем в Новосибирском национальном исследовательском государственном университете, имеет более 20 опубликованных статей по теме автоматизации конструирования параллельных программ в области численного моделирования. Является одним из основных разработчиков экспериментальной системы автоматизации конструирования численных параллельных программ для мультикомпьютеров LuNA (от Language for Numerical Algorithms). Область профессиональных интересов включает автоматизацию конструирования параллельных программ, языки и системы параллельного программирования, высокопроизводительные вычисления.

Perepelkin Vladislav Aleksandrovich — graduated from Novosibirsk State University in 2008 with the master degree in engineering and technology in computer science. Nowadays works as a researcher in Institute of Computational Mathematics and Mathematical Geophysics (Siberian Branch of Russian Academy of Sciences), and also as a senior professor in Novosibirsk State University. Is an author of

more than 20 papers on automation of numerical parallel programs construction. Is one of main developers of fragmented programming system LuNA (Language for Numerical Algorithms).

Professional interests include automation of numerical parallel programs construction, languages and systems of parallel programming, high performance computing.

Дата поступления — 13.05.2019

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