.
Начертательная геометрия Геометрическое черчение Инженерная графика Интегралы Математический анализ Матрицы Производные Векторная алгебра

 

5.3. Процессы последовательные и параллельные

 

Мы привыкли к последовательному образу мышления, к компьютерам последовательного действия, а следовательно, к разработке последовательных алгоритмов и соответственно к последовательной обработке данных. И как следствие этого, разработаны и широко используются "последовательные" языки программирования – ФОРТРАН, АЛГОЛ, ПАСКАЛЬ и многие другие.

Но если внимательно рассмотреть процессы, происходящие вокруг нас и в нас самих, то мы заметим, что многие операции выполняются одновременно. И естественно предположить, что только окружающие нас возможности по их реализации и адекватному отображению не позволяют нам замечать эту одновременность. В частности, однопроцессорные ЭВМ – один из главных источников формирования последовательного мышления. Этот процесс особенно усилился с появлением и широким распространением персональных компьютеров (ПК).

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

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

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

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

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

 

5.3.1. Отношение предшествования процессов

 

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

Впервые, по-видимому, мы услышали о параллельном программировании в 1958 г. после выхода статьи Гилла (S. Gill) "Параллельные программы". Если система имеет только одну начальную (В) и только одну конечную (F) вершину (арех), то отношения предшествования, которые возможны между процессами p1, p2, ... , pn, показаны на рис. 8.1.

Каждый граф на рис. 5.1 описывает трассу развития процесса во времени и указывает на отношение предшествования. Такие графы называют графами развития процесса.

Пример 1. Вычислить значение выражения

(a + b)  (c + d) – (e/f)

(1)


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

 

Рис. 5.1. Граф развития процесса:


а – последовательные процессы;б – параллельные процессы;

в – последовательно-параллельные процессы

Рис. 5.2. Дерево для выражения (1)

Рис. 5.3. Граф развития процесса
для вычисления выражения (1)

 

Н. Вирт (1966) предложил для описания параллелизма использовать простую конструкцию and. Тогда предложения программы для вычисления выражения (1) (рис. 8.3) могут быть следующими:

begin

S1: = a + b and S2: = c + d and S4: = e/f;

S3: = S1  S2;

S5: = S3  S4 

end.

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

В качестве упражнения полезно построить граф развития процесса для примеров 2 и 3 и решить пример 4.

Пример 2. Сортировка слиянием. Во время i-го прохода в стандартной сортировке слиянием второго порядка пары сортируемых списков длины 2i–1 сливаются в списке длины 2i. Все слияния в пределах одного прохода могут быть выполнены параллельно.

Пример 3. Умножение матриц. При выполнении умножения матриц A = B   C, все элементы матрицы A могут быть вычислены одновременно.

Пример 4. Оценить требуемое минимальное время как функцию n для вычисления выражения a1 + a2 + ... + an , n ³ 1, в предположении, что:

·        параллельно может быть выполнено любое число операций
сложения;

·        каждая операция (включая выборку операндов и запись результата) занимает одну единицу времени.

 

5.3.2. Типы параллелизма

 

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

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

Например, вычисление скалярного произведения для n-мерных векторов

включает два типа операций: попарное произведение компонент векторов и затем "интегральную операцию" (операция над n-мерным вектором) – суммирование между собой всех компонент этого вектора. Исходными операндами интегральных операций являются векторы или функции, или множества объектов, а результатом – число.

Кроме того, при параллелизме множества объектов чаще, чем в общем случае, встречаются ситуации, когда отдельные участки вычислений должны выполняться различно для разных объектов. Например, надо найти значения функции j (x, y), удовлетворяющей уравнению

во всех точках внутри некоторой области на плоскости x, y при заданных значениях j (x, y) на границах области.

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

При параллелизме множества объектов аналогичное положение встречается сравнительно часто.

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

Параллелизм независимых ветвей – количество независимых частей (участков, ветвей) задачи, которые при наличии в ВС соответствующих средств могут выполняться параллельно (одновременно одна с другой).

Ветвь программы Y не зависит от ветви X, если:

·        между ними нет функциональных связей, т. е. ни одна из входных переменных ветви Y не является выходной переменной ветви X либо какой-нибудь ветви, зависящей от X;

·        между ними нет связи по рабочим полям памяти;

·        они должны выполняться по разным программам;

·        независимы по управлению, т. е. условие выполнения ветви Y не должно зависеть от признаков, вырабатываемых при выполнении ветви X или ветви, от нее зависящей.

Параллелизм смежных операций. Суть его в следующем.

Если подготовка исходных данных и условий исполнения i-й операции заканчивается при выполнении (i–k)-й операции (где k = 2, 3, 4, ...), то i-ю операцию можно совместить с (i–k + 1)-й, (i–k + 2)-й , ... , (i–1)-й.

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

 


а


б

в

Рис.5.4. Сценарий обработки процессов:

а – последовательный процесс; б – последовательно–параллельный процесс: здесь ® порядок выполнения программы, ¼ – ожидание некоторого условия,   отдельные фрагменты программ;

в – параллельные процессы

 

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

 

1

Задача

®

последовательный

алгоритм

®

последовательный

язык

®

последова-тельное

мышление

®

последо-вательная

ЭВМ

 

 

 

 

 

 

 

 

 

 

2

Задача

®

параллель-

ный

алгоритм

®

параллель-

ный

язык

®

нетрадици-

онное

мышление

 

®

паралель-

ные ЭВМ

 

На главную