УДК 004.383.3

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

Романчук Виталий Александрович
Рязанский государственный университет имени С.А. Есенина
кандидат технических наук, доцент кафедры информатики, вычислительной техники и методики преподавания информатики

Аннотация
В статье предложены параметры и особенности управления нейрокомпьютерами, в соответствии с которыми разработаны алгоритмическое и программное обеспечение для управления облачным вычислительным кластером на базе нейрокомпьютера, предоставляющим пользователям инфраструктуру как услугу. Показаны решения для контроля и диагностики функционирования нейрокомпьютерного кластера. Исследование выполнено при финансовой поддержке РФФИ в рамках научного проекта №14-07-00261 а.

Ключевые слова: вычислительная система, диагностика функционирования, нейрокомпьютер, нейрокомпьютерный кластер, облачный сервис, управление


ALGORITHMIC AND THE SOFTWARE MANAGEMENT AND DIAGNOSTIC FUNCTIONING NEUROCOMPUTING CLOUD SYSTEMS

Romanchuk Vitaliy Aleksandrovich
Ryazan State University named S.Esenin
PhD if Technical Science, Associate Professor of Computer Science, Computer Engineering, and methods of teaching of computer science

Abstract
The article suggests the parameters and characteristics of neuro-computers control, in accordance with which the developed algorithms and software for managing cloud computing cluster based neurocomputer providing infrastructure as a service to users. Showing solutions for monitoring and diagnostics of functioning cluster neurocomputing. The reported study was funded by RFBR according to the research project №14-07-00261 a.

Библиографическая ссылка на статью:
Романчук В.А. Алгоритмическое и программное обеспечение управления и диагностики функционирования нейрокомпьютерных облачных систем // Современная техника и технологии. 2016. № 9 [Электронный ресурс]. URL: http://technology.snauka.ru/2016/09/10557 (дата обращения: 01.10.2017).

Введение.

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

Цель работы - разработка алгоритмического и программного обеспечения для управления и диагностики функционирования облачных вычислительных систем на базе нейропроцессоров. Работа проводилась в рамках гранта РФФИ №14-07-00261 а  ”Кластериза­ция и организация облачных и распределенных вычисли­тельных систем на основе нейропроцессоров”.

Облачный нейрокомпьютерный кластер может быть представлен в общем виде как совокупность:

ONS={P, E, C, D, a, h},

где P={P1,P2,…,Pq}  – множество вычислительных модулей ОНС, где каждый вычислительный узел – нейропроцессор (НПВМ) может быть описан с помощью технических параметров (тактовая частота нейропроцессора, количество эмулируемых нейронов за такт, количество ядер, объемы оперативной и дисковой памяти и др.);

E – множество направленных связей между узлами, характеризующиеся скоростью передачи данных, надежностью и др.;

C={C1,C2,…,Cn} – множество коммутаторов и контроллеров для обеспечения работы сетевой инфраструктуры;

a – архитектура аппаратного обеспечения нейрокомпьютера ОНС (для корректной работы облачного сервиса архитектура аппаратного обеспечения одинакова для каждого НПВМ);

h – архитектура программного обеспечения нейрокомпьютера ОНС (для корректной работы облачного сервиса архитектура программного обеспечения одинакова для каждого НПВМ);

D – диспетчер (управляющий узел) ОНС.

В качестве диспетчера D может быть использовано любое вычислительное устройство, которое будет осуществлять непосредственное управление облачной системой. На практике в качестве диспетчера может быть использовано устройство с архитектурой фон Неймана. Для семейства нейрокомпьютеров NM640x, выпускаемых НТЦ “Модуль” работа диспетчера может быть реализована с помощью интерфейсных файлов libload/mc431load.h и файла реализации bin/mc431load.dll. Nm-часть состоит из файла include/mc431_load.h, задающего интерфейс библиотеки со стороны целевого процессора, и файла реализации lib/mc431lib.lib [1]. Таким образом, работа диспетчера реализована в виде интерфейса связи между пользователем и облачной структурой определенной конфигурации.

Интерфейс диспетчера проектировался исходя из следующих предпосылок и требований:

- наиболее распространённым прикладным сценарием взаимодействия PC-компьютера и целевых устройств, имеющих PCI или USB разъемы с разделяемой памятью является сценарий, в котором инициатором взаимодействия является диспетчер: он инициализирует устройство, загружает прикладную задачу, принимает и отображает результаты её работы. В таких сценариях процесс на нейрокомпьютере играет подчинённую роль;

- базовый интерфейс библиотеки должен быть реализован независимо от аппаратной базы относительно разных типов устройств;

- интерфейс библиотеки должен обеспечивать независимость кода прикладных программ диспетчера относительно разных многопроцессорных систем;

- интерфейс библиотеки должен быть минимальным.

Рассмотрим необходимость независимости относительно типов устройств:

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

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

- дескрипторы доступа должны соответствовать порядковым номерам нейропроцессоров.

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

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

Для успешной работы модуля управления необходимы следующие параметры:

1. Количество вычислительных нейропроцессорных устройств.

2. Тип структуры.

3.  Матрица активных связей между нейрокомпьютерами.

4. Используемое аппаратное обеспечение.

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

-    определение номера используемого нейропроцессора;

-    двусторонняя синхронизация с диспетчером: передача одного элемента;

-    двусторонняя синхронизация с диспетчером: передача массива элементов на нейропроцессор.

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

-    определение номера версии библиотеки интерфейса;

-    определение количества нейропроцессоров в облачной системе;

-    получение дескриптора доступа к конкретному нейропроцессору;

-    завершение работы с текущим нейропроцессором;

-    перезагрузка текущего нейропроцессора;

-    загрузка кода начальной инициализации (код передается автоматически);

-    маскирование прерываний с нейропроцессоров на диспетчер;

-    ожидание прерывания с нейропроцессоров на диспетчер;

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

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

-    чтение блока данных из разделяемой памяти модуля;

-    двусторонние синхронизации с нейропроцессором – взаимодействие с аналогичной функцией для нейропроцессора;

-    установка времени ожидания функциям синхронизации;

-    посылка прерывания на процессор;

-    перезагрузка экземпляра модуля и запуск на исполнение внутренний загрузочный код нейропроцессора;

-    запрос статуса нейропроцессора.

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

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

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

Рисунок 1 – Схема действий при работе с удаленным нейропроцессором

Операции “Запрос статуса” и “Получение статуса” являются необязательными и используются в случае отсутствия сигналов от какого-либо нейропроцессора или подозрительных результатов выполнения операции.

Модуль управления можно настроить таким образом, что два нейропроцессора будут выполнять одну и ту же задачу. На выходе результаты сравниваются непосредственно в модуле управления программным образом. В случае различия результатов выдается сигнал об ошибке и происходит перезапуск обоих процессоров командой “Перезагрузка экземпляра модуля и запуск на исполнение внутренний загрузочный код модуля”. Этот случай используется для обеспечения сверхвысокой надежности работы устройства.

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

Функциональными возможностями модуля являются:

1. Передача данных другому нейропроцессору при отказе одного из процессорного модулей.

2.  Включение в режиме “горячей замены” восстановленного нейропроцессорного модуля.

3. Обеспечение синхронизации в облачной нейропроцессорной системе.

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

Для обеспечения задач синхронизации, остановки и включения нейропроцессорных модулей реализованы следующие функции [2].

1.  Функции, определяющие режим доступа процессора к памяти по внешним шинам при работе с общей памятью. Общей называется память, доступ к которой имеют два и более нейропроцессоров:

- разрешение/запрещение передачи контроля над глобальной шиной внешнему устройству при запросе от него;

- разрешение/запрещение передачи контроля над локальной шиной внешнему устройству при запросе от него.

2.  Функции, определяющие режим работы внешнего вывода TIMER:

- разрешение/запрещение выдачи сигнала на внешний вывод (ножку) TIMER нейропроцессора.

3.  Функции, определяющие режимы работы первого коммуникационного порта нейропроцессора:

- инициализация канала ввода порта 1, осуществляется программно. Это значит, что адрес и размер принимаемого массива задается перед тем, как начать прием данных. При этом, DMA сопроцессор уже до начала приема знает, сколько слов принять и куда разместить;

- инициализация канала ввода порта 1, осуществляется по первому принятому слову. То есть, DMA сопроцессор сначала принимает первое слово (64 бита) и рассматривает его, как пару 32-разрядных слов, одно из которых содержит адрес, а второе размер массива;

- разрешение/запрещение приема данных через порт 1;

- бит разрешения/запрещения передачи данных через порт 1.

4.  Функции, определяющие режимы работы первого коммуникационного порта процессора:

- инициализация канала ввода порта  0 осуществляется программно. Это значит, что адрес и размер принимаемого массива задается перед тем, как начать прием данных. При этом, DMA сопроцессор уже до начала приема знает, сколько слов принять и куда разместить;

- разрешение/запрещение передачи данных через порт 1.

5.  Функции, определяющие режимы работы нулевого коммуникационного порта процессора:

- инициализация канала ввода порта  0, осуществляется программно. Это значит, что адрес и размер принимаемого массива задается перед тем, как начать прием данных. При этом, DMA сопроцессор уже до начала приема знает, сколько слов принять и куда разместить;

- инициализация канала ввода порта 0, осуществляется по первому принятому слову. Например, DMA сопроцессор сначала принимает первое слово (64 бита) и рассматривает его, как пару 32-разрядных слов, одно из которых содержит адрес, а второе размер массива;

- разрешение/запрещение приема данных через порт 0;

- разрешение/запрещение передачи данных через порт 0.

6.  Функции управления работой таймера Т0 нейропроцессора:

- определение режима работы таймера Т0;

- запрещение/разрешение работы таймера Т0.

7.  Функции управления работой таймера Т1 нейропроцессора:

- определение режима работы таймера Т1;

- запрещение/разрешение работы таймера Т1.

8.  Функции управления очисткой буферов AFIFO и WFIFO:

- разрешения/запрещения очистки WFIFO;

- разрешения/запрещения очистки AFIFO.

9.  Функции для маскирования или снятия маски c прерываний процессора:

- установка/снятие маски прерывания от таймера t0. Запрос на прерывание выставляется, когда счетчик таймера достигает нулевого значения;

- установка/снятие маски прерывания по переполнению при выполнении арифметической операции, заданной скалярной командой;

- установка/снятие маски прерывания по запрещенной векторной команде;

- установка/снятие маски прерывания по внешнему прерыванию (пользовательское прерывание);

- установка/снятие маски прерывания по завершению приема данных  по коммуникационному порту 1. Запрос на прерывание выставляется, когда счетчик порта, отсчитывающий принятые слова, достигает нулевого значения;

- установка/снятие маски прерывания по завершению приема данных по коммуникационному порту 0. Запрос на прерывание выставляется, когда счетчик порта, отсчитывающий принятые слова, достигает нулевого значения;

- установка/снятие маски прерывания по завершению передачи данных  по коммуникационному порту 1. Запрос на прерывание выставляется, когда счетчик порта, отсчитывающий посылаемые слова, достигает нулевого значения;

- установка/снятие маски прерывания по завершению передачи данных  по коммуникационному порту 0. Запрос на прерывание выставляется, когда счетчик порта, отсчитывающий посылаемые слова, достигает нулевого значения;

- установка/снятие маски прерывания от таймера t1. Запрос на прерывание выставляется, когда счетчик таймера достигает нулевого значения;

- установка/снятие маски пошагового прерывания.

10.   Функции чтения флагов:

- признак знака – устанавливается в 1 всякий раз, когда результатом арифметической операции на скалярном процессоре является отрицательное число;

- признак нуля – устанавливается в 1 всякий раз, когда результатом арифметической операции на скалярном процессоре является нулевое значение;

- признак переполнения – устанавливается в 1 всякий раз, когда в результате арифметической операции на скалярном процессоре возникло переполнение;

- признак переноса – устанавливается в 1 всякий раз, когда в результате арифметической операции на скалярном процессоре возник перенос.

Для изменения статуса нейропроцессора – его регистра pswr реализованы следующие функции:

- установка в единицу определенных битов регистра pswr;

- установка в ноль определенных битов регистра pswr.

Для получения статуса нейропроцессора может быть использована функция PL_GetStatus для host-блока, находящаяся в библиотеке mc431load.dll для платы MC4.31 или EMULOAD.DLL для эмулятора нейропроцессора.

Программное обеспечение реализовано в виде подсистемы программного комплекса “NP Studio” (рисунок 2).

Рисунок 2 – Подсистема управления и контроля облачной вычислительной системы на базе нейропроцессоров

Заключение.

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


Библиографический список
  1. Ручкин В.Н., Романчук В.А., Лукашенко В.В. Обобщенная модель вычислений кластера нейрокомпьютеров // Вестник Рязанского государственного университета имени С.А. Есенина. – 2015. – № 2 (47). – С. 146-150.
  2. Романчук В.А. Логическое проектирование вычислительных систем на базе нейропроцессоров // Современные научные исследования и инновации. – 2014. – № 12. – URL: http://web.snauka.ru/issues/2014/12/41496.
  3. Романчук В.А., Ручкин В.Н. Разработка алгоритмов определения вида структуры нейропроцессорной системы на основе описания связей ее элементов // Информатика и прикладная математика : межвуз. сб. науч. тр. – 2011. – Вып.17. – С.106–109.
  4. Романчук В. А. Разработка методологических основ программной оптимизации систем нейрокомпьютерной обработки информации // Молодой ученый. – 2015. – №15. – С. 56-61.
  5. Романчук В.А. Разработка алгоритмов определения связей элементов вычислительной структуры на базе нейропроцессоров // Информатика и прикладная математика : межвуз. сб. науч. тр., 2011  – Вып.17. – С.102–105.
  6. Макаров Д.В., Романчук В.А. Облачные SaaS, IaaS, PaaS системы для искусственного интеллекта // Современная техника и технологии. – 2015. – № 5. – URL: http://technology.snauka.ru/2015/05/6731 (дата обращения: 01.09.2016).
  7. Галушкин А.И. Нейронные сети: основы теории. М.: «Горячая линия Телеком», 2010. 496 с.
  8. Топорков В.В. Модели распределенных вычислений. М.: ФИЗМАТЛИТ, 2004. 320 с.
  9. Бурцев В. С. Параллелизм вычислительных процессов и развитие архитектуры супер ЭВМ. М.: ИВВС РАН, 1997. 152 с.
  10. Воеводин В. В., Воеводин Вл. В. Параллельные вычисления. СПб.: БХВ-Петербург, 2002. 608 с.


Все статьи автора «Романчук Виталий Александрович»


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

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: