Параллельное программирование: Учебное пособие, страница 35

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

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

Однозначность закрепления процессов или их групп за конкретными процессорами с сохранением относительного расположения процессов в общей конфигурации требует привлечения специальных механизмов синхронизации. Например, каким образом указать вычислительной системе, что процесс с должен быть запущен после исполнения процесса s, а не сразу за процессом a, или, что очередность процессов f и w должна быть такой как на рисунке 2.17б, а не обратной? С точки зрения запуска процессов по готовности данных такие очередности тоже допустимы, но ряд критериев достижения оптимальных показателей всего алгоритма были бы не выполнены.

Чтобы глубже понять механизм удержания относительного положения процессов на своих местах необходимо проанализировать существующее положение дел в аппаратном обеспечении вычислительных систем при работе с разделяемыми данными и общей памятью. Особенно это касается циклического прокручивания подобных рисунку 2.17 взаимодействующих участков программы, которые еще и “плывут” относительно друг дуга (п.1.2).

2.4.1  Управление параллельными процессами.

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

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

,                                                                   (2.38)

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