THE COMPARISON OF MPI AND LUNA CAPABILITIES USING THE IMPLEMENTATION OF CELLULAR AUTOMATA WAVE
INTERFERENCE
V.P. Markova*, M.B. Ostapkevich**
The Institute of Computational Mathematics and Mathematical Geophysics SB RAS,
630090, Novosibirsk, Russian Federation
*The Novosibirsk National Research State University, 630090, Novosibirsk, Russian Federation
**The Novosibirsk State Technical University, 630073, Novosibirsk, Russian Federation
In this paper, a parallel implementation of the cellular-automata interference algorithm for two waves using the fragmented programming technology and Luna system based on it is proposed. The technology is based on a strategy of data flow control. Unlike existing systems and technologies, LuNA provides a unified technology for implementing parallel programs on a heterogeneous multicomputer. The LuNA program contains a description of data fragments, computational fragments, and information dependencies between them. In the work, the LuNA program was executed on a computational cluster with homogeneous nodes. The results of comparison of the LuNA and MPI implementations showed that the execution time of the LuNA program exceeded that of the MPI program. This is due to the peculiarities of algorithms used for the distribution, search and transfer of data and computation fragments between the nodes of a cluster. The complexity of writing the LuNA program is much lower than for the MPI program.
Key words: parallel programming, fragmented programming, graph of information dependencies, LuNA system, cellular automata, lattice gas, interference simulation.
References
1. Streamlt Project Homepage. [Electron, resource]. http://groups.csail.mit.edu/cag/ streamit/, last accessed 2017/03/01.
2. Language for Streaming Applications /7 Proceeding CC '02. Proceedings of the 11th International Conference on Compiler Construction. 2002. P. 179 196.
3. Michel Steuwer, Toomas Remmelg, and Chistophe Dubaeh. Lift: a functional data-parallel IR for high-performance GPU code generation /7 CGO'17 Proceedings of the 2017 International Symposium on Code Generation and Optimization. 2017. P. 74 85.
4. V. Malvshkin. Active Knowledge, LuNA and Literacy for Oncoming Centuries /7 LNCS. Springer, Heidelberg. 2015. V. 9465. P. 292 303.
5. M. Zhang, D. Cule, L. Shafai, G. Bridges and N. Simons. Computing Electromagnetic Fields in Inhomogeneous Media Using Lattice Gas Automata /7 Proceedings of 1998 Symposium on Antenna Technology and Applied Electromagnetic. 1998. Aug. 14 16, Ottawa, Canada.
The work is supported by the projects of Presidium RAS 14.1, 15.4.
6. V. Markova. Designing a collision matrix for a cellular automaton with rest particles for simulation of wave processes // Bull. Nov. Comp. Center, Comp. Science. NCC Publisher, Novosibirsk. 36. 2014. P. 47-56.
7. Conditions for interference. [Electron, resource], http://physics.bu.edu/~duffy/sc545_ notes09/interference_conditions.html
8. V. Malvshkin, V. Perepelkin The PIC implementation in LuNA system of fragmented programming // Journal of Supercomputing. 2014. V. 69, I. 1. P. 89-97.
СРАВНЕНИЕ ВОЗМОЖНОСТЕЙ MPI И LUNA НА ПРИМЕРЕ РЕАЛИЗАЦИИ МОДЕЛИ КЛЕТОЧНО-АВТОМАТНОЙ ИНТЕРФЕРЕНЦИИ ВОЛН
В. П. Маркова*, М.Б. Остапкевич**
Институт вычислительной математики и математической геофизики СО РАН,
630090, Новосибирск, Россия
* Новосибирский национальный исследовательский государственный университет,
630090, Новосибирск, Россия
"""Новосибирский государственный технический университет, 630073, Новосибирск, Россия
УДК 519.688
В статье рассматривается параллельная реализация а;п'оритма клеточно-автоматной интерференции двух волн с использованием технологии фрагментированших) программирования и основанной на ней системы LuNA. Технология основана на стратегии управления потоками данных. В отличие от других известных технологий и систем, LuNA предоставляет унифицированный способ написания параллельных программ для мультикомпьютеров с неоднородными узлами. Программа на LuNA содержит описание фрагментов данных, вычислительных фрагментов и информационных зависимостей между ними. В данной работе LuNA программа исполняется на мультикомпьютере с однородными узлами. Результаты сравнения LuNA и MPI показали, что время выполнения LuNA программы больше, чем время выполнения MPI программы. Это обусловлено особенностями а.;п'оритмов распределения, поиска и передачи данных и вычислительных фрагментов между узлами мультикомпьютера. Написание программы для LuNA существенно проще, чем написание MPI программы.
Ключевые слова: параллельное программирование, фрагментированное программирование, система LuNA, клеточный автомат, решеточный газ, моделирование интерференции.
Введение. В настоящее время дня написания параллельных программ па мультиком-иыотерах (компьютерах с распределенной памятью) используется стандарт MPI. Он получил самое широкое распространение на большинство мультикомпьютеров с однородными узлами благодаря тому, что он позволяет создавать переносимые программы. Используя MPI, программист при написании программ, помимо описания собственно вычислений, должен программировать выделение ресурсов, межузловые коммуникации, балансировку нагрузки между узлами и определять порядок вычислений.
С появлением компьютеров с гетерогенными узлами задача распараллеливания усложнилась, так как разные вычислители в составе узла имеют разную архитектуру и каждый из них программируется с использованием отдельного интерфейса (технологии). Построение эффективной программы дня таких компьютеров выполняется двумя способами.
Работа поддержана проектами Президиума РАН 14.1. 15.4.
Первый заключается в использовании MPI для организации межузлового параллелизма, a Open MI'. OpenCL, CUD A, HLS — для организации внутриузлового параллелизма.
Второй способ предполагает построение единой технологии реализации параллельных программ на гетерогенном мультикомпыотере. Примерами таких технологий являются Streamlt [1, 2] и Lift [3]. В рамках второго способа в I IBM и МГ СО РАН была реализована технология фрагментированного программирования, основанная на стратегии управления потоками данных. На ее основе построена система программирования LuNA [4].
В статье исследованы реализации алгоритма клеточно-автоматной интерференции двух волн. Одна реализация построена с использованием MPI, а другая — на базе системы LuNA. Перечислены характеристики системы LuNA. Проведено их сравнение, и сформулированы преимущества использования системы LuNA.
1. Основные определения и характеристики системы LuNA. Система LuNA это инструмент для построения параллельных программ на базе технологии фрагментированного программирования. LuNA система состоит из транслятора языка сборки и подсистемы исполнения фрагментированных программ.
Базовыми понятиями в системе являются фрагменты данных, фрагменты кода и фрагменты вычислений.
Фрагмент данных — это множество соседних ячеек массива заданного размера.
Фрагмент кода — это функция, которая получает значения некоторых входных фрагментов данных и вычисляет по ним значения выходных фрагментов данных. При построении фрагментированных программ (ФП) используются два типа фрагментов кода: атомарные и структурированные. Атомарные фрагменты кода в системе представляются как функции Си программ. Структурированные фрагменты кода содержат сборку из фрагментов вычислений.
Фрагмент вычислений — это обращение (вызов на исполнение) к фрагменту кода с указанием имен всех входных и выходных фрагментов данных.
Написание LuNA-программы состоит из следующих шагов.
1) В исходной последовательной программе на языках Си/Си++ выделяются участки кода, которые отвечают за вычисления. В этих участках кода обработка произвольных объектов данных заменяется обработкой фрагментов данных, а сами участки оформляются как атомарные фрагменты кода.
2) На языке сборки LuNA описываются структурированные фрагменты кода и информационные зависимости между фрагментами вычислений и фрагментами данных. В отличие от MPI программы, в сборочной программе (это синоним LuNA-программы) нет необходимости жестко задавать порядок вычислений, управлять выделением ресурсов и программировать межузловые коммуникации (см. таблицу).
3) Вставляются инструкции, которые обеспечивают освобождение памяти, занимаемой фрагментами данных, которые больше не используются.
4) Определяются размеры фрагментов данных, при которых время выполнения минимально.
На вход системы LuNA поступают фрагментированная программа на языке сборки и модуль на Си/Си++, реализующий атомарные фрагменты кода. Эта программа содержит все фрагменты кода, фрагменты данных и информационные зависимости между ними. Система LuNA выполняет следующие шаги.
1) Транслятор системы преобразует исходную LuNA-программу во внутреннее представление, с которым может работать исполнительная подсистема.
2) Исполнительная подсистема LuNA автоматически распределяет фрагменты кода и данных по узлам в соответствии с имеющимися ресурсами мультикомпыотера. При программировании с использованием MPI программист должен сам проводить такое распределение (см, таблицу),
3) При выполнении фрагментированной программы исполнительная подсистема определяет окончательный порядок выполнения фрагментов вычислений. Для этого она ведет учет фрагментов кода, готовых к исполнению, и распределяет их на исполнение по потокам, При выполнении программы на нескольких узлах система автоматически обеспечивает необходимую пересылку фрагментов данных между узлами. При написании же MPI программы разработчик в явном виде определяет порядок выполнения и описывает все межузловые пересылки данных (см, таблицу). При несбалансированности вычислительной нагрузки на узлы исполнительная подсистема перераспределяет нагрузку между узлами, В MPI такую балансировку нагрузки реализует сам программист в своей программе,
4) Исполнение фрагментированной программы продолжается, пока есть исполняющиеся или готовые к исполнению фрагменты кода.
Опыт программирования в LuNA-еиетеме позволяет сформулировать ее преимущества перед исполнением MPI-программой,
1) Отсутствие жесткой привязки фрагментов данных в LuNA к MPI процессам позволяет LuNA-программе адаптироваться к имеющимся доступным ресурсам вычислительной системы. Это возможно как при запуске программы, так и при ее исполнении, когда множество доступных ресурсов изменяется,
2) Малый размер фрагментов кода и фрагментов данных обеспечивает сбалансированность вычислительной нагрузки как на процессах в разных узлах вычислительной системы, так и на отдельных потоках внутри узлов в автоматическом режиме, В MPI программе задача по балансировке или не решается вообще, или решается программистом,
3) Описание информационных зависимостей между фрагментами в LuNA — более простая задача для программиста, чем описание жесткой последовательности действий в MPI программе, особенно при большом их числе. Следствием этого упрощения является уменьшение количества ошибок в программе, связанных с неверно заданной последовательностью действий. Такие ошибки в параллельных программах трудно выявлять и исправлять,
2. Клеточно-автоматное моделирование волновых процессов. Для моделирования интерференции двух волн используется простейшей класс одночаетичных недетерминированных клеточных автоматов с одной частицей покоя массой 2, известный в литературе как HPPlrp [5]. Клеточные автоматы (КА) описывают природные явления множеством гипотетических частиц, которые движутся в решеточном пространстве по некоторым правилам. Эти правила представляют моделируемое явление на микроуровне, исходя из общих законов физики.
Интерес к клеточно-автоматному (КА) моделированию объясняется рядом его достоинств, Во-первых, отсутствие ошибок округления и способность моделировать нелинейные и разрывные процессы. Во-вторых, простота задания граничных условий, И наконец, неограниченные возможности параллельной реализации задач на современных суперкомпьютерах.
Клеточный автомат HPPlrp определен на 2D решетке. Каждый узел решетки соединен с соседями единичными решеточными векторами е^ % = 1,2,3,4, и содержит 4 движущиеся частицы и частицу покоя. Движущиеся частицы имеют единичную массу и единичную скорость Ci, направленную вдоль одного из четырех векторов решетки, В каждом направ-
Таблица
Реализация системных функций в МР1 и ЬгША
Функция
МР1
1дША
Порядок вычислений
Управление выделением ресурсов в узле
Распределение данных по узлам
Межузловые коммуникации
Балансировка нагрузки
Жестко задается программистом, неизменен при выполнении
Реализуется программистом Реализуется программистом
Явно кодируются программистом
Не реализуется или реализуется программистом
Окончательный порядок определяется уже при исполнении, когда есть информация о фрагментах кода, для которых готовы и собраны в одном узле все исходные данные и которые могут запускаться
Реализуется системой 1.И.ХЛ
Выполняется системой на основании информации о доступных ресурсах вычислительной системы Активизируются подсистемой исполнения на основе информации о местонахождении затребованных данных Реализуется системой 1дША
лении может двигаться только одна из частиц, находящихся в узле решетки. Частица покоя имеет массу 2 и нулевую скорость.
Каждому узлу решетки с именем г поставлена в соответствие клетка с тем же именем. Множество частиц в клетке определяет ее состояние з(г). Вектор в(г) состоит из 5 элементов, Значение первых четырех элементов вектора в показывает наличие (бДг) = 1) или отсутствие (эДг) = 0) движущейся частицы со скоростью с^ в клетке с именем г, последний элемент вектора в(г) показывает наличие вДг) = 1 или отсутствие в^г) = 0, частицы покоя массой 2 в клетке с именем г. Пара (в, г) называется клеткой. Общая сумма масс частиц в клетке с именем г называется модельной плотностью р(г). Множество клеток, в котором все клетки имеют уникальные имена, образует клеточный массив. Множество состояний всех клеток массива в момент времени Ь называется глобальным состоянием автомата. Смена глобальных состояний автомата описывает эволюцию КА,
Клеточный автомат работает синхронно: все клетки автомата меняют свои состояния одновременно на каждом итерационном шаге. Шаг состоит из 2-х фаз: столкновение и сдвиг. На фазе столкновения частицы в каждой клетке соударяются друг с другом таким образом, что суммарные масса и импульс частиц сохраняются. Функция столкновения создает или разрушает движущуюся частицу со скоростью в клетке с именем г в момент времени Ь и зависит только от ее исходного состояния в данный момент времени. Например, клетка в состоянии (00101)(5) на фазе столкновения меняет его на 3 состояния: (00101)(10) с вероятностью Ръ^ю (рис, 1, а), (10000)(16) с вероятностью р5_>.х6 (рис, 1, б) и остается в своем состояние с вероятностью рь^ь (рис, 1, в). На фазе сдвига движу-
I
а) б) в)
Рис. 1. Пример правила столкновения: а) переход 5 —> 10. б) переход 5 —> 16. в) переход 5 —> 5.
5 4,5 4 3,5
з
! 2,5
! 2 !1,5 ■ 1
0,5 0
200
400 600
положение
а) б)
Рис. 2. Функционирование источника периодических волн
800
щиеся частицы в каждой клетке сдвигаются в сторону ближайшего соседа с единичной скоростью.
Периодическая волна моделируется эволюцией КА, определенного на массиве 1400 х 1200. Источник внешнего возмущения расположен в центре и представляет собой окружность радиусом 30 клеток. Исходное состояние клеток массива (модельная плотность) задается генератором случайных чисел в течение одного такта. Модельная плотность клеток источника возмущения составляет 5,5: генератор с вероятностью 1 генерирует движущиеся частицы и с вероятностью 0,7 генерирует частицы покоя с массой 2. Модельная плотность клеток остальной части массива равна 3,3 (движущиеся частицы генерируются с вероятностью 0,7, частицы покоя 0,5 генерирует с вероятностью 0,25). Граничные условия — периодические. Ниже клеточный массив с исходной (невозмущенной) плотностью, граничными условиями, источником внешнего возмущения и матрицей столкновения частиц будем называть средой.
Моделирование периодической волны основано на периодическом изменении плотности клеток источника. В начале каждого периода колебаний в источнике формируется исходная плотность частиц 5,5 (см. рис. 2, а). Через полпериода колебания плотность клеток источника изменяется таким образом, чтобы амплитуда волны над уровнем невозмущенной плотности 3,3 и под ним была одинакова (см. рис. 2, б). Для данного примера значение плотности частиц составляет 1,1. Моделирование показало, что заданной среды период волны равен 150 шагам, а ее длина составляет 75 клеток.
3. Моделирование интерференции двух волн. Интерференция двух воли моделируется эволюцией клеточного автомата размера 1400 х 1200 и плотности клеток среды 3,3. Два круговых источника периодических волн находятся на расстоянии четырех длин волны (целое число длин волн — условие существования конструктивной интерференции
а) б)
Рис. 3. Интерференция но формуле сферической волны (а) и в модели НРРгр (б)
[7]). На рис. 3 показаны две похожие интерференционные картины двух воли, которые получены разными способами и па разных шагах моделирования. Первая промоделирована традиционным способом па шаге времени 100 (рис. 3, а), а вторая — клеточпо-автоматпым способом па 975-м шаге эволюции клеточного автомата (рис. 3, б).
4. Описание фрагментированного алгоритма КА-интерференции. В реализации исходный клеточный массив разбивается па фрагменты данных с топологией „липей-
Главпыми фрагментами данных в реализации являются:
1) — фрагменты, храпящие начальное состояние клеточного массива па шаге моделирования t.
2) — фрагменты, храпящие состояние клеточного массива после вычисления столкновения частиц па шаге моделирования t.
3) bd[t] [х] — фрагменты для храпения теневых граней.
Во фрагменте дублируется верхняя строка фрагмента Ь[£][ж]. Во фрагмен-
те 6с£[£][ж] дублируется нижняя строка фрагмента Введение фрагментов данных
Ьи[£][ж], bd[t] [х\ позволяет уменьшить объем пересылок между узлами, так как их размер существенно меньше, чем у фрагмента Ь[£][ж].
Индекс х определяет положение фрагмента в пространстве. Для фрагмента, содержащего самые верхние строки клеточного массива, значение х равно 0. х для фрагмента, содержащего самые нижние строки массива, равен числу фрагментов, па которое разбит массив, минус единица.
Фрагмептироваппая реализация алгоритма КА-иптерферепции представлена фрагментами кода:
1) init — инициализация начального состояния клеточного массива,
2) collision — вычисление операции столкновения частиц в клетках,
3) propagation — вычисление перелета частиц между клетками,
4) print — печать результата моделирования в файл.
На рис. 4 показан фрагмент графа информационных зависимостей для двух исходных фрагментов а[£][ж] и а[£][ж + 1] па шаге времени t. Они являются исходными фрагментами для фрагментов вычислений collision[t][x] и collision[t][x + 1]. Как только эти фрагмеп-
Рис. 4. Часть графа информационных зависимостей реализации НРРгр в LuNA
ты данных вычислены, фрагменты вычислений collision[t][x] и collision[t][x + 1] готовы к выполнению. В какой-то момент времени они запускаются на исполнение. После завершения выполнения collision[t][x] создаются фрагменты данных &[£][#], &гх[£][ж], Эти фрагменты хранят состояние частей клеточного массива на шаге t после применения правила коллизии. Аналогично, после завершения collision[t][x +1] создаются фрагменты данных b[i][x], ¿m[i][x], М[£][х]. В этот момент фрагменты данных а[£][х] и а[£][х + 1] больше не будут использоваться никакими фрагментами вычислений и могут быть удалены из системы, а освободившаяся память использоваться для хранения новых фрагментов данных. Когда вычислены фрагменты данных bd[t][x — 1], im[t][x + l], фрагмент вы-
числений propagation[t][x] готов к исполнению. Аналогично, фрагмент propagation[t][x +1] может запускаться, когда посчитаны 6d[i][x], b[t][x + 1], Ьг/[£][а; + 2]. Результатом работы фрагментов вычислений propagation[t][x], propagation[t][x + 1] являются фрагменты данных a[t + 1][х] и a[t + 1][х + 1], хранящие состояние клеточного массива на шаге времени t + 1.
LuNA-программа реализует КА-интерференцию в клеточном массиве размером 4096 х 4096. На рис. 5 показана зависимость времени выполнения программы от размера фрагментов. Все замеры проводились при числе узлов 1, потоков 8. Минимальное время наблюдается при размере фрагментов 256. При уменьшении размера фрагментов увеличивается их число и растут накладные расходы системы на их обработку. При увеличении размера фрагментов количество обрабатываемых потоком фрагментов становится слишком
Рис. 5. Зависимость времени выполнения программы от размера фрагмента
160 140 120 100 80 60 40 20 0
-------------------
——-LuNA .....«.....MPI
2 4
число узлов
Рис. 6. Зависимость времени выполнения программы от числа используемых узлов
маленьким, и система менее качественно балансирует вычислительную нагрузку между потоками.
Результаты сравнения времени выполнения реализаций па MPI и LuXA представлены па рис. 6. Время выполнения LuXA реализации при использовании нескольких узлов существенно превышает время выполнения MPI реализации. Первые эксперименты и анализ временной сложности LuXA-программы показали: улучшение временной сложности может быть достигнуто за счет оптимизации алгоритмов распределения, поиска и передачи фрагментов данных между узлами мультикомпьютеров и алгоритмов управления выделением памяти дня фрагментов данных внутри узлов.
Заключение. Опыт реализации программ показал, что, хотя текущая реализация LuXA проигрывает MPI в плане времени выполнения, у технологии LuXA есть ряд существенных преимуществ перед MPI,
Дня задач с неравномерной вычислительной нагрузкой па узлы использование встроенной в LuXA динамической балансировки дает сопоставимый по времени выполнения результат по сравнению с ручной реализацией балансировки в MPI программе |8|,
LuNA программы не имеют такой привязки к архитектуре и доступным ресурсам компьютера, как MPI программы. Поэтому LuNA программы обладают существенно более высокой переносимостью.
Отсутствие необходимости задавать порядок вычислений и программировать межузловые коммуникации существенно упрощает программирование в LuNA по сравнению с MPI. Эти же особенности LuNA устраняют появление некоторых видов ошибок, свойственных при программировании в MPI. Описание информационных зависимостей между фрагментами имеет локальный характер, в отличие от задания порядка вычислений в MPI. Это упрощает отладку LuNA программ. Все это вместе уменьшает время разработки параллельных реализаций вычислительных алгоритмов в системе LuNA по сравнению с MPI.
Список литературы
1. Streamlt Project Homepage. [Electron, resource], http://groups.csail.mit.edu/cag/ streamit/
2. William Thies, Michal Karczmarek, Sam an P. Amarasinghe. Streamlt: A Language for Streaming Applications // Proceeding CC '02. Proceedings of the 11th International Conference on Compiler Construction. 2002. P. 179-196.
3. Michel Steuwer, Toomas Remmelg, and Chistophe Dubach. Lift: a functional data-parallel IR for high-performance GPU code generation // CGO'17 Proceedings of the 2017 International Symposium on Code Generation and Optimization. 2017. P. 74-85.
4. V. Malyshkin. Active Knowledge, LuNA and Literacy for Oncoming Centuries // LNCS. Springer, Heidelberg. 2015. V. 9465. P. 292-303.
5. M. Zhang, D. Cule, L. Shafai, G. Bridges and N. Simons. Computing Electromagnetic Fields in Inhomogeneous Media Using Lattice Gas Automata // Proceedings of 1998 Symposium on Antenna Technology and Applied Electromagnetic. 1998. Aug. 14-16, Ottawa, Canada.
6. V. Markova. Designing a collision matrix for a cellular automaton with rest particles for simulation of wave processes // Bull. Nov. Сотр. Center, Сотр. Science. NCC Publisher, Novosibirsk. 36. 2014. P. 47-56.
7. Conditions for interference. [Electron, resource], http://physics.bu.edu/~duffy/sc545_ notes09/interference_conditions.html
8. V. Malyshkin, V. Perepelkin The PIC implementation in LuNA system of fragmented programming // Journal of Supercomputing. 2014. V. 69. I. 1. P. 89-97.
Маркова Валентина Петровна — канд. техн. наук, доцент, старш. науч. сотр. Института вычислительной математики и математической геофизики (ИВМ и ML СО РАН, г. Новосибирск); e-mail: [email protected].
Маркова В. П. окончила факультет автоматики и вычислительной техники Новосибирского государственного технического университета в 1970 г. С 1970 по 1986 гг. работала в институте математики СО АН СССР. В 1980
г. защитила кандидатскую диссертацию „Спектральные методы синтеза функций к-значной логики". С 1986 года и по настоящее время работает в ИВМ и MF СО РАН. Научные исследования связаны с клеточно-автоматным моделированием пространственной динамики. Маркова В. П. является доцентом кафедры Параллельных вычислений в Новосибирском национальном исследовательском государственном университете.
Markova V. graduated from the Novosibirsk State Technical University in 1970. From 1970 to 1986 she worked at the Institute of Mathematics
SB AS. She received Ph.D. in 1980. Since 1987 she works at the Institute of Computational Mathematics and Mathematical Geophysics SB RAS. Her research interests include cellular automata simulation of spacial dynamics. She is an assistant professor of the department of Parallel computations at the Novosibirsk National Research State University.
Остапкевич Михаил Борисович — младш. науч. сотр. Института вычислительной математики и математической геофизики; e-mail: ostap@ssd. sscc.ru.
Окончил факультет АВТ Новосибирского государственного технического университета в 1997 г. С 1999
года и по настоящее время работает в ИВМ и МГ СО РАН. Научные интересы связаны с клеточно-автоматным моделированием и разработкой программного обеспечения для задач имитационного моделирования. Является ассистентом кафедры Параллельных вычислительных технологий в Новосибирском государственном техническом университете.
Ostapkevich М. graduated from the Novosibirsk State Technical University in 1997. Since 1999 he works at the ICM&MG SB RAS. His research interests include cellular automata simulation and the software development for simulating systems. He is an assistant of the department of Parallel computing technologies at the Novosibirsk State Technical University.
Дат,а, поступления — 10.04.2017