Рассматриваются вопросы оптимизации кода для многопроцессорных систем на базе концептуально нового поколения вычислительной техники — нейрокомпьютеров, принцип функционирования которых основан на принципах мышления человека. Показана методология разбиения программы на множество подпрограмм, загружаемых на нейропроцессорный вычислительный модуль системы.
Ключевые слова: нейрокомпьютер, оптимизация, распараллеливание, обработка информации, программа.
Введение. Программирование нейрокомпьютера — это обучение его на выполнение той или иной задачи, в связи с чем известные методы оптимизации и распараллеливания нейрокомпьютерной программы не могут быть ипользованы [1]. В свою очередь, интерес же к нейрокомпьютерам и нейрокомпьютерным системам постоянно увеличивается, их применяют в различных сферах: космос, военная промышленность, дорожное движение и др., в связи с чем, возникает необходимость разработки математического, алгоритмического и программного обеспечения создания и оптимизации программ для нейрокомпьютеров и систем на их базе. Следует также отметить, что нейрокомпьютерные системы обладают очень высоким уровнем распараллелирования, в связи с чем наиболее важна задача именно распараллеливания и оптимизации вычислительных систем на базе нейропроцессорных устройств [1–3].
Цель работы: разработка математического аппарата программной оптимизации в вычислительных системах различной структуры на базе нейропроцессоров.
Пусть — некоторый -й алгоритм обработки информации для реализации его на на нейропроцессорной платформе. Введем множество операций . С учетом введенного множества операций этот алгоритм обработки информации представляет собой кортеж, состоящий из операций длиной , т. е.:
. (1)
Исходя из математического смысла нейрокомпьютерной обработки множество операций нейрокомпьютера рационально разделить на 2 подмножества [4–11]:
1. Множество операций первого типа, представляющих математическую модель формального нейрона, и состоящее из одной операции :
(2)
Операция может быть рассмотрена в виде множества самостоятельных операций исходя из функциональных блоков, ее реализующих:
, (3)
где — количество возможных видов векторных операций эмуляции нейрона в нейропроцессоре.
2. Множество вспомогательных операций второго типа: обмена данными, управления подготовки данных, и др.
(5)
Тогда алгоритм (1) можно записать следующим образом:
(6)
На этапе разработки программы каждой операции ставится в соответствие микрокоманда процессора , где - множество микрокоманд, написанных на внутреннем языке нейропроцессора; - минимальное количество микрокоманд, необходимое для реализации операции .
Множество микрокоманд также можно разделить на 2 подмножества:
, (7)
, (8)
где — число сочетаний исходя из (3) для конкретного нейропроцессора. Для того, чтобы определить , необходимо найти количество сочетаний команды притом, что часть функциональных блоков и часть может быть незадействована, т. е. количество возможных вариантов, если задействован один функциональный блок, если два, и т. д.:
, (9)
где — число сочетаний из элементов по .
, (10)
где — количество возможных микрокоманд, возможных для реализации вспомогательных операций второго типа, определяемых согласно (5).
Тогда, для каждой операции первого типа:
, (11)
Под программой понимается кортеж микрокоманд:
, (12)
длиной .
В данном пункте на основании алгебраического подхода предлагается методика разбиения программы на множество подпрограмм исходя из числа нейропроцессорных вычислительных модулей (НПВМ) [78].
Исходя из специфики и принципов функционирования нейрокомпьютеров, количество команд гораздо больше команд (не превышает 1 %), более того команды второго типа «делят» кортеж микрокоманд на сегменты, так как являются вспомогательными для подготовки данных (рисунок 1).
Рис. 1. Сегменты программы для нейрокомпьютера
Исходя из принципов функционирования и назначения нейрокомпьютера, количество и вид команд зависит от кортежа команд , то есть каждая, произвольно взятая команда зависит от некоторой команды то есть:
, (13)
где — количество операций второго типа. Также, каждой операции может соответствовать одна или несколько операций , подготавливающих данные. Поэтому, в дальнейших рассуждениях считаем команды невлияющими на функционирование нейропроцессорной системы и не рассматриваем отдельно.
Рассмотрим отношение двух произвольно взятых микрокоманд и , каждая из которых представляет собой комплекс несвязанных между собой команд , число которых зависит от конкретного нейрокомпьютера. При этом, рассматривая две команды в виде «черного ящика», имеем:
- одинаковое функциональное назначение — эмуляция нейрона;
- одинаковое время выполнения команды, равное одному такту нейропроцессора;
- воздействие на один и тот же набор аппаратных ресурсов;
- аппаратная реализация нейрокомпьютера предполагает один и тот же путь потока данных и потока команд.
Введем понятие функционального равенства микрокоманд , под которым будет подразумеваться равенство времени исполнения команды и равенство используемых командой аппаратных ресурсов , т.е:
. (14)
Тогда справедливо утверждение о том, что отношение двух произвольно взятых микрокоманд и ,удовлетворяющим (14), есть отношение эквивалентности.
Отношение эквивалентности — это бинарное отношение, для которого выполнены следующие условия: рефлексивность, симметричность, транзитивность.
Рассмотрим каждое из этих условий:
1. Всякая микронейрокоманда , удовлетворяющая (14), и являющаяся отражением модели нейрона, может выполняться параллельно самой себе, что подразумевает сама архитектура нейросети и нейрокомпьютера, т. е. . Таким образом, справедливо условие рефлективности команд .
2. Если команда , функционально равна команде , то и команда функционально равна команде и одновременно с ней может выполняться, что предполагается исходя из парадигмы нейрокомпьютинга т. е.:
. (15)
Другими словами выполняется условие симметричности двух нейромикрокоманд.
3. Если команда функционально равна команде , а команда функционально равна , тогда команда функционально равна и параллельна команде , т. е.
. (16)
Таким образом, справедливо условие транзитивности нейромикрокоманд.
Введем понятие сегмента нейромикропрограммного кода, поразумевающего кортеж команд и связанных вспомогательных команд подготовки данных :
(17)
Тогда всю программу можно разделить на кортеж сегментов:
(18)
Под подпрограммой нейропрограммы будем понимать кортеж сегментов:
(19)
На рисунке 2 показано сегментирование и программы .
Рис. 2. Сегментирование программы
Рассмотрим две произвольно взятые подпрограммы и , каждая из которых представляет собой некоторый сегмент (рисунок 2), то есть представляет собой множество команд эмуляции нейрона, каждая из которых эквивалентна другой, произвольно выбранной команде, и вспомогательные команды, подготавливающие данные для обработки и являющиеся неотъемлимой частью множества команд первого типа:
. (20)
Рассмотрим отношение структуры , которое указывает на то, что любые две произвольно взятые подпрограммы и , удовлетворяющие (17), могут выполняться одновременно на разных НПВМ под управлением микрокоманд, принадлежащих указанным подпрограммам, т. е.:
. (21)
Справедливо утверждение о том, что отношение структуры обработки есть отношение эквивалентности. Тогда задача разбиения программы на множество подпрограмм преобразуется в задачу рационального последовательного объединения сегментов в множество подпрограмм :
(22)
То есть, задача разбиения заключается в нахождении значения выражения (22) для всех подпрограмм , где число подпрограмм равно числу НПВМ :
(23)
Пусть число команд в программе , определяемой как (18) равно , число команд некоторого сегмента равно .
Цель разбиения программы на подпрограммы состоит в достижении одинакового времени обработки для всех этапов, то есть, в данном случае, в достижении одинакового количества команд для всех подпрограмм. Тогда необходимо определить среднее число команд в подпрограмме:
. (24)
Далее, добавление нового сегмента к подпрограмме возможно лишь тогда, когда разность значения и суммарного количества команд уже добавленных в подпрограмму сегментов больше, чем .
То есть, если верно условие , (25)
где определяет номера сегментов, уже включенных в подпрограмму:
— номер первого сегмента в подпрограмме ;
— номер последнего сегмента в подпрограмме .
Тогда ; (26)
Если условие (25) неверно, то
(27)
Таким образом, в соответствии с выражениями (23)-(27), нейромикропрограмма может быть рационально разделена на подпрограммы , для которых верно отношение структуры обработки информации .
Литература:
1. Галушкин А. И. Нейронные ЭВМ — перспективное направление развития вычислительной техники — М.: Препринт, 1991.-615 с.
2. Головкин Б. А. Вычислительные системы с большим числом процессоров. М.: Радио и связь, 1995. — 320 с.
3. Злобин В. К., Григоренко Д. В., Ручкин В. Н., Романчук В. А. Кластеризация и восстанавливаемость нейропроцессорных систем обработки данных // Известия тульского государственного университета. Технические науки. — Тула: Издательство ТулГУ, 2013. — Вып.9. — Ч.2. — С.125–135.
4. Романчук В. А., Ручкин В. Н. Разработка программных средств анализа нейропроцессорных систем // Вестник РГРТУ. — Рязань: РГРТУ, 2010. — № 2. — Вып.32. — С.61–67.
5. Романчук В. А., Ручкин В. Н. Разработка программного комплекса для моделирования и анализа нейропроцессорных систем обработки изображений // Цифровая обработка сигналов. — Рязань: Информационные технологии, 2010. — № 1. — С.53–58.
6. Романчук В. А., Ручкин В. Н. Оценка результатов моделирования вычислительных систем на базе нейропроцессоров // Известия тульского государственного университета. Технические науки. — Тула: Издательство ТулГУ, 2013. — Вып.9–2 — С.194–203.
7. Романчук В. А. Моделирование нейропроцессорных систем // Отраслевые аспекты технических наук: научно-практический журнал. — Москва: ИНГН, 2013. — № 10(34). — С.19–24.
8. Романчук В. А., Ручкин В. Н. Разработка алгоритмов определения вида структуры нейропроцессорной системы на основе описания связей ее элементов // Информатика и прикладная математика: межвуз. сб. науч. тр. — Рязань: РГУ имени С. А. Есенина, 2011. — Вып.17. — С.106–109.
9. Романчук В. А. Инновационный программный комплекс моделирования вычислительных систем на базе нейропроцессоров «НейроКС» // Современные научные исследования и инновации. — Декабрь, 2012 [Электронный ресурс]. — URL: http://web.snauka.ru/issues/2012/12/19407.
10. Романчук В. А. Разработка алгоритмов определения связей элементов вычислительной структуры на базе нейропроцессоров // Информатика и прикладная математика: межвуз. сб. науч. тр. — Рязань: РГУ имени С. А. Есенина, 2011. — Вып.17. — С.102–105.
11. Романчук В. А. Оптимизация программных и аппаратных средств сложных вычислительных систем на базе нейропроцессоров // Моделирование, оптимизация и информационные технологии. — 2015. — № 1(8) 3 [Электронный ресурс]. URL: http://moit.vivt.ru/wp-content/uploads/2015/03/Romanchuk_1_15_1.pdf.
12. Ручкин В. Н., Романчук В. А., Фулин В. А., Пролыгина А. А. Экспертная система нечеткой кластеризации нейропроцессорных систем // Известия тульского государственного университета. Технические науки. — Тула: Издательство ТулГУ, 2014. — Вып.6. — С.162–167.