Проектирование параллельных алгоритмов в задачах идентификации. Вашкевич Н.П - 33 стр.

UptoLike

33
6) анализировать получаемые от "рабочих" сообщения, в том числе сигнал "конец ра-
боты";
7) решать задачу верхнего уровня (устанавливать событие "найдена цепочка");
8) Завершать обработку последовательности, для чего учитывать количество посту-
пивших сигналов "конец работы". Когда их число станет равным числу занятых "ра-
бочих" (это число в принципе может быть меньше общего числа "рабочих"), перехо-
дить к обработке следующей последовательности (см. п. 1).
Для "рабочего" процессора:
1) читать очередной символ и осуществлять переходы в алгоритме;
2) если обрабатываемый блок закончился, и нет итерации, передать "управляющему"
сигнал завершения обработки блока, иначе запросить блок следующий в обрабаты-
ваемой последовательности за предыдущим.
3) если возникло состояние алгоритма "цепочка найдена", то передать сообщение
"управляющему" об обнаружении цепочки (возможен вариант алгоритма, когда ин-
формация о найденных цепочках будет храниться у "рабочего" до завершения обра-
ботки всех блоков, а затем пакетом передаваться "управляющему");
Этот алгоритм можно усовершенствовать. При большом количестве цепочек-образов и
достаточном количестве "рабочих" возможно разделение алгоритма работы "управляю-
щего" процессора на алгоритмы двух процессоров: "управляющего" и "анализатора". На
"управляющего" будут возлагаться функции загрузки блоков последовательности, а на
"анализатор" - прием сообщений от "рабочих" и их обработка. По окончании обработки
всех последовательностей "управляющий" получает от "анализатора" результаты. Добав-
ление "анализатора" в мультипроцессорную систему целесообразно в том случае, когда
объем оперативной памяти, как общей так и процессоров мал по сравнению с длинами
обрабатываемых последовательностей. В этом случае "управляющий" процессор будет
тратить много времени на распределение блоков между рабочими процессорами. Архи-
тектура такой системы приведена на рис. 3.14.
В предлагаемой мультипроцессорной системе при начале обработки очередной последо-
вательности каждый "рабочий" должен обратиться к "управляющему" с требованием дан-
ных. "Управляющий" распределяет имеющиеся блоки по "рабочим". Каждый "рабочий",
обработав полученный блок, обращается к "управляющему» с запросом на получение
следующего. Если у "управляющего" есть необработанные блоки, он передает очередной
  6) анализировать получаемые от "рабочих" сообщения, в том числе сигнал "конец ра-
   боты";

  7) решать задачу верхнего уровня (устанавливать событие "найдена цепочка");

  8) Завершать обработку последовательности, для чего учитывать количество посту-
   пивших сигналов "конец работы". Когда их число станет равным числу занятых "ра-
   бочих" (это число в принципе может быть меньше общего числа "рабочих"), перехо-
   дить к обработке следующей последовательности (см. п. 1).

  Для "рабочего" процессора:
  1) читать очередной символ и осуществлять переходы в алгоритме;

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

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

   Этот алгоритм можно усовершенствовать. При большом количестве цепочек-образов и
достаточном количестве "рабочих" возможно разделение алгоритма работы "управляю-
щего" процессора на алгоритмы двух процессоров: "управляющего" и "анализатора". На
"управляющего" будут возлагаться функции загрузки блоков последовательности, а на
"анализатор" - прием сообщений от "рабочих" и их обработка. По окончании обработки
всех последовательностей "управляющий" получает от "анализатора" результаты. Добав-
ление "анализатора" в мультипроцессорную систему целесообразно в том случае, когда
объем оперативной памяти, как общей так и процессоров мал по сравнению с длинами
обрабатываемых последовательностей. В этом случае "управляющий" процессор будет
тратить много времени на распределение блоков между рабочими процессорами. Архи-
тектура такой системы приведена на рис. 3.14.
 В предлагаемой мультипроцессорной системе при начале обработки очередной последо-
вательности каждый "рабочий" должен обратиться к "управляющему" с требованием дан-
 ных. "Управляющий" распределяет имеющиеся блоки по "рабочим". Каждый "рабочий",
   обработав полученный блок, обращается к "управляющему» с запросом на получение
 следующего. Если у "управляющего" есть необработанные блоки, он передает очередной




                                         33