Архитектура параллельных вычислительных систем

Вычислительные системы нетрадиционной архитектуры

Показывать лекцию целиком

Однородные вычислительные структуры (среды)

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

Каждый ПЭ обладает алгоритмически полным набором операций, а также операциями обмена или взаимодействия с другими ПЭ. Например, решетка с регулярными связями процессоров может быть такой, какая изображена на рис. 9.1.

(рис 9.1) Однородная вычислительная среда

ОВС относится к ВС с распределенной памятью. Реализуется на основе микропроцессоров.

С 1985 г. стало развиваться направление разработки транспьютеров — в интегральном исполнении соответствующих ПЭ ОВС. Т.е. ОВС в этом случае строится как транспьютерная сеть.

Транспьютер — интегрально (в одном чипе или кристалле) выполненное семейство системных компонент, в составе которых: процессор, таймер, память, каналы последовательного ввода-вывода, контроллер внешней оперативной памяти.

Транспьютер вместе с языком программирования Occam (основной язык программирования транспьютеров) позволяет создавать ВС типа МКМД.

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

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

Систолическая схема вычислений. Представляет собой конвейер, в котором данные проходят обработку "волной" с одной границы ОВС — входа к другой границе — выходу. Следом за одной может следовать другая волна и т.д. (рис. 9.2). В этом случае ОВС — систолическая матрица.

(рис 9.2) Схема систолических вычислений

На рисунке: в первом такте на вход подаются данные задачи 2, а задача 1 решается процессорами первой строки систолической матрицы; в следующем такте задача 2 решается первым уровнем, а задача 1 — вторым уровнем процессоров, на вход подаются данные задачи 3; на третьем уровне происходит очередное аналогичное смещение и т.д. Стрелками показано возможное перемещение обрабатываемой информации.

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

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

Таким образом, в систолической матрице процессоров, ориентированной на применение в АЛУ, распараллеливание "в длину" успешно сочетается с распараллеливанием "в ширину", как и при решении произвольного потока задач.

С помощью ОВС реализуется и ВС типа "гиперкуб".

Гиперкуб — пространственное обобщение рассмотренной плоской решетки, где адресация процессоров (и соответственно, блоков распределенной памяти) ставится в зависимость от структуры связей между ними. Проводится аналогия с n -мерным пространством.

(рис 9.3) Вычислительная система "гиперкуб": а — двумерный, б — трёхмерный, в — четырёхмерный

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

То же самое можно обнаружить для n = 3 (рис. 9.3,б), n = 4 (рис. 9.3,в) и т.д.

Значит, в общем случае ВС типа "гиперкуб" формируется следующим образом. Ее образуют 2n ПЭ, каждый ПЭ соединен ровно с n ПЭ. При длине адреса ПЭ, равной n, непосредственно связаны ПЭ, у которых адреса разнятся не более чем в одном разряде.

Структура типа "гиперкуб" обладает важными свойствами.

  • Из структуры "гиперкуб" легко получаются более простые структуры. Например, при n = 3 легко получается матричная ВС, на которой, в частности, хорошо решать задачи в конечных разностях. Как мы видели ранее, для этого удобна плоская решетка, где существуют непосредственные (не транзитные) связи между тремя ПЭ (столбец составляют только два ПЭ, поэтому нет необходимости в связях в двух направлениях), как показано на рис. 9.4. Здесь можно в дополнение к адресам ввести (временно) нумерацию ПЭ и поставить эти номера в соответствие адресам.

    (рис 9.4) Матричная ВС на основе двумерного гиперкуба

    Процессоры образовали фрагмент плоской решетки для реализации конечно-разностного метода (метода сеток). Процессоры "прокатываются" по области, на которой строится решение, например, задачи численного интегрирования.

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

  • Например, предположим, что в предыдущем примере мы располагали не 3-мерным, а 6-мерным "гиперкубом". Пусть планирующая система в составе ОС из всего адресного пространства ПЭ $$000000 \ddiivv 111111$$ выделила нам массив $$000000 \ddiivv 111111$$, т.е. определенное 3-хмерное подпространство всего пространства процессоров. В это же время пусть другой задаче выделен массив $$101000 \ddiivv 101111$$, т.е. четырехмерное подпространство и т.д.

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

    Ассоциативные вычисления и ВС

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

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

    Распространенный вид АП — таблица с двумя столбцами: " запросное полеответное поле. Строка таблицы занимает регистр памяти. По ключевому слову обрабатываются запросные поля: производится поиск на основе сравнений и выдается результат из одного (или более) ответных полей. При помощи маскирования можно выделить только те поля в ключевом слове, которые нужно использовать при поиске для сравнения.

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

    Поскольку ассоциативные ВС характеризуются только активным использованием АП в вычислениях, то в целом эти ВС обладают обычными свойствами, могут производить сложные преобразования данных и принадлежать типу ОКМД (STARAN, PEPE) или МКМД. Для параллельного обращения (для ускорения поиска) АП разбита на модули (32 модуля — в STARAN).

    Когда в 1980 г. был провозглашен так называемый "Японский вызов" о построении ВС сверхвысокой производительности, то одним из пунктов была указана необходимость самого широкого использования принципов самообучающихся систем — систем, способных накапливать опыт и выдавать результат решения задачи без счета самой задачи. Это значит, что применение ассоциативных ВС неотделимо от проблемы искусственного интеллекта.

    Предположим, мы пользуемся значениями функции $$000000 \ddiivv 001111$$. Мы можем запрограммировать счет этой функции на РС, и каждый раз, когда нам надо, задаем x и запускаем программу, пользуясь прекрасным современным сервисом.

    Предположим, та же функция сложна, а ее счет — важный элемент алгоритма управления в реальном времени. Решение приходит сразу: зададим эту функцию таблично, а для ускорения выборки включим в ВС ассоциативную память. Предусмотрим на ней операции, позволяющие производить простейшую интерполяцию. А именно, для данного значения x найти наибольший x1 < x и наименьший x2 >= x. Для них выбрать f(x1) и f(x2). Тогда вместо счета точного значения f(x) процессору остается произвести хотя бы линейную интерполяцию$$\begin{align*} \tilde f(x)=f(x_1)+\frac{f(x_1)-f(x_2)}{x_2-x_1} (x-x_1), \end{align*}$$ надо только быть уверенным в достижении нужной точности.

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

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

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

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

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

    Итак, пусть исходная ситуация характеризуется вектором X = {x1, ..., xm}. По значению X, т.е. по его компонентам, принимается решение Y, также представляющее собой вектор, Y = {y1, ..., yn}.

    (Значения X и Y могут определяться целыми и вещественными, булевыми. Изначально они могут иметь нечисловую природу: "темнее — светлее", "правее — левее", "ласковее — суровее" и т.д. Мы не будем рассматривать проблему численной оценки качественных или эмоциональных категорий.)

    Предположим, для любых двух значений X1 и X2, а также Y1 и Y2 определено отношение xi(1) <= xi(2) (или наоборот), yj(1) <= yj(2) (или наоборот).

    Структура ассоциативной памяти и общий вид ее обработки показаны на рисунке 9.5.

    (рис 9.5) Структура и обработка ассоциативной памяти

    Пусть поступила входная ситуация X, для которой необходимо найти решение Y. В АП находятся два вектора X1 и X2, минимально отличающиеся по всем координатам от вектора X. для Для этих векторов там же записаны векторы решения Y1 и Y2 соответственно. Однако если для компоненты xi выполняется условие xi <= xi(1)(xi >= xi(1)), то должно выполняться условие xi >= xi(2)(xi <= xi(2)), i = 1, ..., m. Таким образом, отыскивается "вилка", которой принадлежит входная ситуация. Тогда, опираясь на известные решения на границах этой вилки, необходимо выдать промежуточное решение для данной ситуации. Это можно сделать методом той же обобщенной интерполяции$$\begin{gathered} y_i = y_i^{(1)}+(y_i^{(2)} - y_i^{(1)})\frac{r(X,X_2)}{r(X_1,X_2)},\quad i=1, \ldots, n;\\ r(X,X_2) = \sqrt{{\sum_{j=1}^m}(x_j - x_j^{(2)})^2} \end{gathered}$$ r(X,X2) и r(X1,X2) (находится аналогично) — расстояния между векторами X и X2, а также X1 и X2.

    Если известно, что точность Y достаточна, принципиально возможно дополнение АП новой строкой$$\arraycolsep=9pt \begin{array}{|c|c|} \hline X Y\\ \hline \end{array},$$ т.е. информацией о новом полученном опыте.

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

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

    (рис 9.6) Самообучающаяся система управления

    ВС Connection Machine

    В упомянутом выше "Японском вызове" провозглашалась необходимость объединения в одну систему десятков и сотен тысяч микропроцессоров. А есть ли опыт создания таких систем?

    К такому опыту можно отнести семейство ВС, разработанное фирмой Thinking Machine. Оно является единственной крупной коммерческой реализацией идей ОВС. СМ-1 выпущена в 1986 г. Через год была выпущена СМ-2 с удвоенной производительностью в 2,5 млрд.оп./с. О ней следует говорить в связи с попытками воспроизвести ее в нашей стране на архитектурном уровне.

    СМ-2 комплектуется (рис. 9.7) из блоков параллельной обработки по 16 К узловых одноразрядных процессоров (элементарных процессоров — ЭП) каждый. В комплекс входят до 8 фронтальных ЭВМ, на которых реализуется вычислительный процесс. (Следовательно, как в ПС-2000, собственно блоки СМ образуют интеллектуальный терминал для выполнения операций по заявкам фронтальных (там — мониторной) ЭВМ.)

    (рис 9.7) Схема масспроцессорной системы Connection Machine

    Узловой (матричный) коммутатор обеспечивает связь фронтальных ЭВМ с секвенсорами блоков параллельной обработки в соответствии с вычислительным процессом и заявками пользовательских задач. Подсистема ввода-вывода связывает блоки параллельной обработки с периферийными устройствами массовой памяти и графическими дисплеями.

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

    Основные операции производятся над 32-разрядными данными. Для выполнения их используются по 32 элементарных процессора. Поэтому каждые 32 ЭП имеют акселератор для выполнения операций с плавающей запятой, в том числе — с двойной точностью.

    Память ( RAM — прямоадресуемая, с произвольным доступом ) распределенная. Каждый ЭП имеет 64 Кбит. Т.е. общий объем памяти — 512 Мбайт (в 64 К-процессорном варианте).

    Пользователю архитектурные особенности СМ предоставляются на уровне набора команд параллельной виртуальной машины, отображенной в ассемблере Paris. Ассемблер обеспечивает богатый набор от простых арифметических и логических операций до высокоуровневых APL-подобных операций (APL — параллельный PL, ЯВУ). Реализован микропрограммно в секвенсорах, и, как говорилось выше, этим обеспечивается преобразование потока высокоуровневых команд и аргументов на языке Paris в последовательность элементарных операций обрабатывающих процессоров.

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

    Нейронные сети и нейрокомпьютеры

    Применяемые нейросети являются моделями нейросетей живых организмов, принципы которых были известны уже в 1940-1950 годах, а с развитием микроэлектроники стали реализуемыми.

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

    Предварительным знакомством с системами ИИ можно считать рассмотрение ассоциативных ВС. Характерно то, что исследование и воспроизводство нейросетей первоначально проводились в рамках решения задачи построения ассоциативной памяти в совокупности с операциями ее заполнения, ведения и использования.

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

    Фрагмент нейросети представлен на рис. 9.8.

    (рис 9.8) Фрагмент нейронной сети

    Либо каждый нейрон управляем извне, либо сети строятся по принципу самоуправления, используя обратные связи. А именно, можно регулировать значения весов синапсических связей {wi} и значения порогов hi. Функции f бывают различны, но просты по объему вычислений.

    В простейшем случае f cовпадает с линейной формой — указанным аргументом. Т.е. по всем дендритам с учетом их весов производится суммирование и сравнение с порогом. Величина превышения порога является величиной возбуждения нейрона. Она передается через его ветвящийся аксон в соответствии со связями данного нейрона. В некоторых сетях величина возбуждения нейрона может принимать только два значения: возбужден (1), не возбужден (0).

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

    (рис 9.9) Сигмоидный нейроподобный элемент

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

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

    Существуют два режима работы сети: режим обучения и режим распознавания.

    Пусть мы на входной слой подали и поддерживаем некоторый образ, например, букву A.

    Через некоторое время возбудится нейрон выходного слоя, который мы можем отметить как образ A. Т.е. его возбужденное состояние мы воспринимаем как ответ: "Это буква A ". Введем снова букву A, но с естественными искажениями. Может возбудиться тот же нейрон, но может и другой. Мы хотим "научить" систему, заставить ее ответить, что это — буква A, т.е добиться возбуждения того же нейрона выходного слоя.

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

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

    Обучение заканчивается тогда, когда вероятность "узнавания" достигнет требуемого значения, т.е. необходимость корректировки параметров по предъявляемым эталонам возникает все реже. Теперь можно работать в режиме распознавания — в том ответственном режиме, для которого сеть создавалась. Предъявляем сети различные буквы. Можем быть уверены, что с большой вероятностью, если мы предъявим случайно искаженную и даже зашумленную букву A (конечно, в допустимых пределах), сеть ее распознает, т.е. возбудится соответствующий нейрон выходного слоя.

    Продолжим обсуждение применимости.

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

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

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

    Важная область применения — ситуационное управление.

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

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

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

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

    Здесь целесообразно вернуться к рассмотрению ВС типа SPMD в качестве нейропроцессора. Она идеально соответствует требованиям задачи, если производить распределение нейронов между процессорами. Легко просматривается план обработки нейросети как в режиме обучения (например, при реализации метода "обратного прохождения ошибки"), так и в режиме распознавания.

    Вернуться к учебному плану