Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книги / TURIN / ПРИЛОЖ~1.DOC
Скачиваний:
32
Добавлен:
10.12.2013
Размер:
135.68 Кб
Скачать

Параллельное программирование

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

Развитие архитектуры ЭВМпривело к появ­лению структур, в которых вычислительный про­цесс может протекать по нескольким ветвям параллельно. Параллелизм возник естественным образом, как средство увеличения производитель­ности вычислительных машин. Идея параллелизма была технически реализована вмногопроцессорных системах,однородных средах, локальных вычис­лительных сетяхи в ряде других аппаратных решений.

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

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

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

Начало процесса

НАЧАТЬ (А, )

А

НАЧАТЬ

(Г,ЗАВЕРШЕНА А)

НАЧАТЬ НАЧАТЬ

(Б,ЗАВЕРШЕНА А) (В,ЗАВЕРШЕНА А)

ЖДАТЬ(В,а)

Б В

ЖДАТЬ(В,в)

Г

ЖДАТЬ(Б,В)

НАЧАТЬ(Д,ЗАВЕРШЕНА Г)

Д

Конец процесса

Рис.

Чтобы организовать параллельный процесс, надо иметь, по крайней мере, пять основных опера­торов, смысл которых для наглядности иллюстри­руется рис. .Первый оператор НАЧАТЬ (X,Z) соответствует тому, что начинает выполняться не­которая ветвь параллельного процесса. Для случая, показанного на рисунке в самом начале, —это только ветвь процесса А. Поэтому эта программа должна начинаться с оператора НАЧАТЬ (А, ). Следующий оператор фиксирует завершение неко­торой ветви. В нашем случае этот оператор выглядит, как ЗАВЕРШЕНА (А). После этого можно начинать сразу три ветви. Роль параметра при их включении играет завершение процесса А. Поэтому эти три оператора имеют вид:

НАЧАТЬ (Б, ЗАВЕР­ШЕНА А); НАЧАТЬ (В, ЗАВЕРШЕНА А) и НА­ЧАТЬ (Г, ЗАВЕРШЕНА А). В этих записях вторая позиция в операторе НАЧАТЬ используется как ус­ловие его активизации. Когда вторая позиция пус­та, то оператор НАЧАТЬ может включаться в работу немедленно.

Оператор ЖДАТЬ используется, когда надо ор­ганизовать ожидание окончания некоторой ветви или получения в некоторой ветви параллельного процесса значения какого-либо параметра. На на­шем рисунке оператор ЖДАТЬ (Б, В) означает, что процесс Д может начаться, как только закончатся все три процесса —Б, В и Г. Процесс Г в том месте, где стоит оператор ЖДАТЬ (Б, В), не может про­должаться, пока Б и В не выдадут нужных для про­должения Г результатов своей работы. Оператор ЖДАТЬ (В, а), как и оператор ЖДАТЬ (В, b), по­казывает, что в соответствующие моменты ветвь Г не может продолжаться, так как для продолжения процесса по этой ветви требуются знания о значе­ниях параметров а и b, которые вычисляются в вет­ви В.

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

Соседние файлы в папке TURIN