Kolokolcev Vadim Yrevich, leading expert, [email protected], Russia, Tula, Center of Information Technologies
УДК 004.383.3
АЛГОРИТМИЧЕСКОЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВЫБОРА СТРУКТУРЫ РАСПРЕДЕЛЕННОГО ОБЛАЧНОГО КЛАСТЕРА НА БАЗЕ НЕЙРОКОМПЬЮТЕРОВ
В. А. Романчук, В.В. Лукашенко, В.Н. Ручкин
Предложена методика функционирования системы управления вычислительным кластером на базе нейрокомпьютеров. Особое внимание методики уделяется этапу выбора структуры вычислительного кластера в связи с тем, что существующие методы не являются эффективными из-за специализированной аппаратной базы -нейрокомпьютеров, которые представляют собой высокопараллельные вычислительные устройства с архитектурой, отличной от архитектуры фон Неймана. Описан разработанный алгоритм выбора вычислительной структуры облачного кластера исходя из направления передачи данных в графе потока управления программы и его матрицы смежности.
Ключевые слова: вычислительная система, облачные вычисления, выбор структуры, граф потока управления, нейрокомпьютер.
В современной научной и производственной сфере достаточно актуальна задача использования систем распределенной обработки данных и их логического развития - систем облачных вычислений из-за недостаточности вычислительных ресурсов для решения ряда задач. В основе любых систем глобальных распределенных вычислений лежит модель вычислений. Модель вычислений осуществляет связь между архитектурой и моделью программирования в вычислительных системах, а также отражает взаимодействие процессов в них. Но в настоящее время для классифицированных технологий глобальных распределенных вычислений универсальных моделей не построено, что объясняется сильной зависимостью модели вычислений от архитектуры распределенной системы.
В работе рассматривается модель вычислений глобального распределенного вычислительного кластера на базе нейрокомпьютеров, которая имеет программную реализацию в виде системы управления глобальным распределенным вычислительным кластером. Для последовательной разработки описанной системы предложена методика функционирования системы управления вычислительным кластером. На рис. 1 показана последовательность этапов этой методики.
Входными данными являются:
распределенный вычислительный кластер на базе нейрокомпьютеров (О) [2,3].
программный код для выполнения на кластере, в теории рассматриваемый в виде алгоритма А1[1].
Также на втором этапе входными данными является: множество вычислительных нейрокластерных структур = [Б^, ,..., ..., } [1]. "
А1
(Я
Исследование программы^-*, поступившей на выполнение в кластере.
Представление программы А1а) в качестве множества операций
Ор =< Ор1,Ор2,...,Орр,...,Орр >. связанных между собой совокупностью
отношений параллельности и последовательности выполнения
операций^ Ра^ || Ро$1
Ор=<Ор1.Ор2.....Ор!!....,Орр >
\jbPar, || Роб,
Выбор необходимой вычислительной структуры ^кластера О. Постановка в соответствие А1программы выполнения , соответственно, каждой операции
Ор=<Ор1.Ор2....,Орр.....ОрР > -множества подпрограмм-микрокоманд РЯ(Л =< А[К1.А1К2....Л[К^..Л{К! > .
5гг
РЯ
1Л .
: Ж^Ж^.., АЯ^,.., >
Распределение подпрограмм АЖ, по узлам вычислительной структуры,?^ путем коммутации пакетов с подпрограммами и данными.
Раск^-={Раск]=.. .=Раск; }
Вычисление. Контроль функционирования
1 Кг?= {.... структуры 5/г
Сбор результатов.йе7;работы вычислительной структуры кластера О
+
К€2,
Рис. 1. Этапы методики функционирования системы управления вычислительным кластером на базе нейрокомпьютеров
Рассмотрим каждый этап разработанной методики:
189
1. На первом этапе алгоритм Al рассматривается как совокупность операций Op =< Opl,Op2,...,Opp,...,Opp >, связанных между собой
отношениями последовательности и параллельности выполнения операций. Отношением последовательности выполнения операций будем называть бинарное отношение двух операций Opl и Op 2 когда данные, необходимые для выполнения операций требуются каждой из них последовательно от одной к другой и обозначать Pos [3, 4].
Отношение параллельности выполнения операций будем называть бинарное отношение двух операций Opl и Op 2 когда данные, необходимые для выполнения операций, имеются изначально, не зависят от результатов выполнения операций и обозначать Par .
2. На втором этапе алгоритму Al(1^ ставится в соответствие программа его реализации PR(1а множеству операций - подпрограммы-
микрокоманды программы PR(-j) =<MKl,МК2,...,MKi,...,MKl >. Таким образом, описывается разбиение программного кода на атомарные подпрограммы, что реализовано в алгоритме разбиения задач, поступивших на выполнение в кластер на подзадачи. Одновременно с этим, происходит выбор подходящей вычислительной нейрокластерной структуры из множества возможных структур = {БЩ,БЩ,...,Б^...,Б^}. За реализацию описанного процесса отвечает алгоритм выбора и формирования вычислительной структуры кластера нейрокомпьютеров.
3. На третьем этапе происходит распределение подпрограмм
PR(1) =<МК1,МК2,...,МКг-,...,МК1 > по узлам выбранной вычислительной структуры кластера. Результат распределения подпрограмм
по узлам выбранных вычислительных структур Б^ е w = 1,Ш - есть совокупность множеств отношений параллельности и последовательности выполнений подпрограмм: Ц=1 Pari || P0Si.
Этот процесс осуществляется посредством коммутации пакетов Packi = {Packl,..., Packi}, 1 = 1, N, содержащих необходимые для вычислений команды и данные, его также реализует алгоритм загрузки подзадач в вычислительную структуру кластера нейрокомпьютеров.
4. На четвертом этапе происходит сам процесс вычисления, т.е. выполнения подпрограмм на вычислительных ядрах нейрокомпьютеров -нейропроцессорах. Данный процесс осложнен тем фактом, что в отличии от процессоров традиционной архитектуры, нейропроцессоры способны обрабатывать за один такт множество операций, например семейство ней-ропроцессоров ММ640х до 64 операций [4].Параметр отвечающий за этот процесс BitVal - значения разрядности данных является основополагаю-
щим для описания особенностей архитектурных отличий нейропроцессо-ров. Также необходимо учитывать ситуацию, когда разрядность результата превышает разрядность входных данных - переполнение. Тогда данные разрядностью BitVal = ({flag,n},...,{flag, k}), где n,...,k < 64 - разрядность данных, а flag = 1 u 0 - значение флага переполнения, подающиеся для
выполнения на нейропроцессоре должны занимать его полностью для эффективного использования ресурсов всей вычислительной системы.
Контроль функционирования процесса вычисления осуществляется системой управления кластером и реализуется в алгоритме управления вычислениями в кластере.
5. На пятом этапе осуществляется последовательный сбор результатов Rzi = {Rzi,...,Rzi},i = 1,N работы вычислительной структуры кластера G диспетчером кластера и системой управления кластером. Этот процесс должен происходить сразу же за 4 этапом и при непосредственном контроле функционирования вычислений. Для реализации работы системы управления кластером на пятом этапе работает алгоритм сбора и возврата финального вычислительного результата из структуры кластера.
Рассмотрим этап выбора структуры вычислительного кластера в связи с тем, что существующие методы не являются эффективными из-за специализированной аппаратной базы - нейрокомпьютеров, которые представляют собой высокопараллельные вычислительные устройства с архитектурой, отличной от архитектуры фон Неймана.
На входе этапа имеем некоторую программу, которую с точки зрения теории компиляции можно представить в виде Pr(j) = (Gpu, W), где Gpu = (V, E, start, stop) - граф потока управления программы, а W = {wi,..., Wj} - алфавит операторов.
Граф потока управления - это ориентированный граф, в котором выделены две вершины start и stop, связанные между собой посредством множеств вершин V и дуг E соответственно, и удовлетворяющий следующим требованиям:
- в start не входит ни одна дуга;
- из stop не выходит ни одна дуга;
- любая вершина достижима из start;
- из любой вершины достижима вершина stop .
Таким образом, после представления программы удобном для компьютера виде, например в виде обратной польской записи, необходимо построить граф потока управления программы, который отобразит множество всех путей исполнения программы. Представление программы в расширенной обратной польской записи хранится и передается в форме абстрактного типа данных класса стек. Будем называть такой стек - стек ко-
191
манд программы. Сформируем из стека команд программы абстрактное синтаксическое дерево (АСД) программы. Абстрактное синтаксическое дерево - конечное, помеченное, ориентированное дерево, в котором внутренние вершины помечены операторами языка программирования, а листья — соответствующими операндами. Листья самого нижнего слоя являются входными параметрами, а корень дерева результатом, который возвращает программа в результате своей работы. Для этого воспользуемся следующим алгоритмом. Будем хранить в Я текущий считываемый символ.
Если R является идентификатором или константой, то его значение выбирается из стека и становится листом АСД, затем осуществляется считывание следующего символа.
Если R - бинарный оператор, то он применяется к двум следующим за ним операндам из стека, таким образом, формируется поддерево АСД, где родителем является бинарный оператор, а его детьми операнды. Затем осуществляется считывание следующего символа.
Если R - унарный оператор, то он применяется к верхнему последующему символу из стека, таким образом, формируется поддерево АСД, где родителем является унарный оператор, а его единственным наследником операнд.
Следует отметить, что все логические конструкции языка, такие как: «развилка», «циклы», «условны переходы» и т.д. в расширенной польской записи описываются в виде бинарных и унарных операторов, что и позволяет осуществить переход от стека команд программы к АСД.
Следующим этапом по построению графа потока управления программы из АСД является процесс передачи по АСД данных. Для этого воспользуемся алгоритмом концевого обхода дерева. При обратном обходе АСД происходит рекурсивный обход левого поддерева, затем правого поддерева, затем корня, то есть узел посещается после обхода его поддеревьев. В узлах АСД находятся бинарные и унарные операторы в обратной польской записи, в зависимости от их выполнения при передаче данных по АСД будет изменяться количество связей в поддеревьях АСД. Таким образом, алгоритм преобразования АСД к графу потока управления программы примет вид:
Считываем очередное левое поддерево АСД, состоящее из крайнего нижнего левого и правого листа, если есть, и их корня, т.е. считываем крайние операнды нижнего слоя и их оператор.
Если это бинарный арифметический оператор, бинарный оператор задания массива, бинарный оператор обращения к элементу массива, то происходит выполнение операции с данными и переход к считыванию следующего правого листа АСД (если он есть) и его корня. Листья и их корень, соединенные дугами, заносятся в матрицу смежности, которой представляется граф потока управления программы.
192
Если это унарный оператор безусловного перехода, бинарный оператор условного перехода, то строится дуга от оператора до адресата безусловного перехода в АСД и считывание следующего правого от адресата листа (если он есть) и его корня. Лист и корень, соединенные дугами, заносятся в матрицу смежности, которой представляется граф потока управления программы.
Таким образом, при возникновении новых дуг АСД фактически теряет структуру бинарного дерева и преобразуется в граф. Это примечательно тем, что преобразование происходит при подаче в АСД данных. Следовательно, можно утверждать, что АСД преобразован в граф потока управления программы.
Для разработки алгоритмического обеспечения выбора вычислительной структуры кластера необходимо проанализировать направления передачи данных в графе потока управления программы по его матрице смежности. Анализ потоков данных в графе потока управления показывает, что данные могут распространяться последовательно и параллельно. Т.е. подпрограммы, получившиеся в результате работы алгоритма разбиения поступившей на выполнение в кластер программы на подпрограммы, могут находится друг с другом в бинарных отношениях последовательности Pos и параллельности Par работы с данными.
Отношением последовательности выполнения программ будем называть бинарное отношение двух подпрограмм RO1 и RO2 когда данные, необходимые для работы подпрограмм, появляются и требуются каждой подпрограмме последовательно от одной к другой и обозначать Pos .
Отношение параллельности выполнения подпрограмм будем называть бинарное отношение двух подпрограмм RO1 и ro2 когда данные, необходимые для работы подпрограмм, имеются изначально, не зависят от результатов выполнения подпрограмм и обозначать Par .
Шаг 1. Считываем очередную строку матрицы смежности графа потока управления программы и записываем ее в массив.
Если только один элемент массива равен 1, то это строка, описывающая очередную вершину графа, являющуюся операндом. Записываем операнд помечающий строку матрицы смежности в очередь.
Если два элемента массива равны 1, то это строка, описывающая очередную вершину графа, являющуюся унарным оператором. Записываем унарный оператор помечающий строку матрицы смежности в очередь.
Если три элемента массива равны 1, то это строка, описывающая очередную вершину графа, являющуюся бинарным оператором. Записываем бинарный оператор помечающий строку матрицы смежности в очередь.
Шаг 2. Считываем очередной элемент очереди.
Если этот элемент - операнд, то считываем следующий элемент.
193
Если этот элемент унарный оператор, то удаляем из очереди предыдущий операнд и унарный оператор. Полученную конструкцию назовем независимой операцией, запишем ее в отдельный вектор. Присваиваем, сформированному вектору очередной порядковый номер, состоящий их
двух чисел i, j е N , где i = 1, N - коэффициент последовательности выполнения операции, а j = 1, N - коэффициент параллельности выполнения операции.
Если этот элемент бинарный оператор, то удаляем из очереди предыдущие два операнда и бинарный оператор. Полученную конструкцию назовем независимой операцией, запишем ее в отдельный вектор. Присваиваем, сформированному вектору очередной порядковый номер, nfr; t состоящий их двух чисел i, j е N .
Если операндов перед оператором в очереди нет, то записываем в вектор вместо операндов ссылки на предыдущие, полученные в результате работы алгоритма вектора. Таким образом, полученную конструкцию назовем зависимой операцией, так как ее выполнение зависит от выполнения предыдущих независимых операций. Присваиваем, сформированному вектору очередной порядковый номер, также состоящий их двух чисел i, j е N.
Далее во всех случаях считываем очередной элемент очереди.
Шаг 3.
Независимые операции могут выполняться параллельно. В таком случае говорим, что подпрограммы, соответствующие операциям, находятся в отношении параллельности и выбираем векторную структуру, членами которой будут эти подпрограммы.
Зависимые операции могут выполняться только последовательно, передавая результаты от вектора к вектору. В таком случае говорим, что подпрограммы, соответствующие операциям, находятся в отношении последовательности и выбираем конвейерную структуру, членами которой будут эти подпрограммы.
Последовательно переходя от вектора к вектору, осуществляя их комбинацию в зависимости от того в каких отношениях они находятся, получим вычислительную структуру кластера, необходимую для выполнения задачи на кластере нейрокомпьютеров.
Практические исследования реализованы согласно разработанной методики и алгоритмического обеспечения и могут быть представлены в виде подсистемы "Логическое проектирование нейропроцессорных систем" на базе платформы "NP Studio" (рис. 2) [5 - 10].
Рис. 2. Выбор вычислительной структуры облачного кластера
на базе нейрокомпьютеров
Заключение. Показаны методика функционирования системы управления вычислительным кластером на базе концептуально нового поколения вычислительной техники - нейрокомпьютеров и разработанные алгоритмическое, программное обеспечение выбора вычислительной структуры облачного кластера на базе нейрокомпьютеров исходя из направления передачи данных в графе потока управления программы и его матрицы смежности.
Исследование выполнено при финансовой поддержке РФФИ в рамках научного проекта №14-07-00261 а.
Список литературы
1. Ручкин В.Н., Романчук В.А., Лукашенко В.В. Обобщенная модель вычислений кластера нейрокомпьютеров // Вестник Рязанского государственного университета имени С. А. Есенина. № 2 (47). 2015. С. 146150.
2. Лукашенко В.В. Анализ основных вопросов классификаций распределенных вычислительных систем // Современная техника и технологии. № 4 (44). 2015. С. 65-69.
3. Романчук В. А., Ручкин В.Н. Оценка результатов моделирования вычислительных систем на базе нейропроцессоров // Известия Тульского государственного университета. Технические науки. Тула: Изд-во ТулГУ, 2013. Вып. 9. Ч. 2. С. 194-203.
4. Романчук В. А., Ручкин В.Н. Разработка алгоритмов определения вида структуры нейропроцессорной системы на основе описания связей ее элементов // Информатика и прикладная математика: межвуз. сб. науч. тр. Вып. 17. 2011. С.106-109.
5. Романчук В. А., Лукашенко В.В. Модель описания функционирования нейропроцессора как сложной параллельной системы // Автоматизация и управление в технических системах. № 2 (14). 2015. С. 13-24.
6. Романчук В. А. Разработка алгоритмов определения связей элементов вычислительной структуры на базе нейропроцессоров // Информатика и прикладная математика: межвуз. сб. науч. тр. Вып.17. 2011. С. 102— 105.
7. Макаров Д.В., Романчук В. А. Облачные SaaS, IaaS, PaaS системы для искусственного интеллекта // Современная техника и технологии. № 5. 2015. URL: http://technology.snauka.ru/2015/05/6731 (дата обращения: 01.09.2016).
8. Галушкин А.И. Нейронные сети: основы теории. М.: «Горячая линия Телеком», 2010. 496 с.
9. Топорков В.В. Модели распределенных вычислений. М.: ФИЗМАТЛИТ, 2004. 320 с.
10. Бурцев В.С. Параллелизм вычислительных процессов и развитие архитектуры супер ЭВМ. М.: ИВВС РАН, 1997. 152 с.
11. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. СПб.: БХВ-Петербург, 2002. 608 с.
Романчук Виталий Александрович, канд. техн. наук, доц., v.romanchukarsu. edu.ru, Россия, Рязань, Рязанский государственный университет имени С.А. Есенина,
Лукашенко Владислав Владиславович, асп., v. lukashenkoa rsu. edu. ru, Россия, Рязань, Рязанский государственный университет имени С.А. Есенина,
Ручкин Владимир Николаевич, д-р техн. наук, проф., v.ruchkina rsu.edu.ru, Россия, Рязань, Рязанский государственный университет имени С. А. Есенина
ALGORITHMIC AND THE SOFTWARE OF CHOICE OF THE STRUCTURE OF DISTRIBUTED CLOUD CLUSTER ON THE BASIS OF NEUROCOMPUTERS
V.A. Romanchuk, V.V. Lukashenko, V.N. Ruchkin 196
The method of operation of a computing cluster management system on the basis of neurocomputers. Particular attention is paid to a technique of computing cluster stage selection structure due to the fact that the existing methods are not effective due to the specialized hardware base - neurocomputers which represent a highly parallel architecture with computing devices other than the von Neumann architecture. The developed algorithm for selecting the cloud computing structure of the cluster on the basis of data in the direction of the program control flow graph and its adjacency matrix.
Key words: computer system, cloud computing, the choice of structure, control flow graph, neurocomputer.
Romanchuk Vitaliy Alexandrovich, candidate of technical science, docent, v.romanchuk a rsu.edu.ru, Russia, Ryazan, Ryazan State University,
Lukashenko Vladislav Vladislavovich, postgraduate, v. lukashenkoa rsu. edu. ru, Russia, Ryazan, Ryazan State University,
Ruchkin Vladimir Nikolaevich, doctor of technical science, professor, v. ruchkinarsu. edu. ru, Russia, Ryazan, Ryazan State University
УДК 004.383.3
ОБОБЩЕННАЯ МОДЕЛЬ ФУНКЦИОНИРОВАНИЯ ОБЛАЧНОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ НА БАЗЕ НЕЙРОКОМПЬЮТЕРОВ
В. А. Романчук, В.В. Лукашенко, В.Н. Ручкин
Предлагается формализованное описание и обобщенная модель функционирования вычислительной системы на базе нейрокомпьютеров, включающая ее характеристики, возможные структуры при взаимодействии с памятью, модель передачи сообщений и модель распределения задач внутри облачного кластера.
Ключевые слова: вычислительная система, облачные вычисления, модель функционирования, нейрокомпьютер.
Облачные нейрокомпьютерные вычислительные системы предназначены для обеспечения повсеместного доступа через сеть Интернет или подобной сетевой структуры к программному обеспечению, платформе или инфраструктуре конфигурируемых вычислительных ресурсов, таких как, например, нейрокомпьютерная система. Использование нейрокомпьютеров в качестве аппаратной базы облачного сервера позволяет эффективно использовать достаточно дорогостоящее оборудование во многих сферах. Кроме этого, программы для нейрокомпьютеров обычно имеют
197