поддержка
проекта:
разместите на своей странице нашу кнопку!И мы
разместим на нашей странице Вашу кнопку или ссылку. Заявку прислать на
e-mail
код нашей кнопки:
Параллельное программирование
Обычное программирование направлено на переход от записи алгоритма на
каком-либо исходном языке к записи того же алгоритма на машинном языке,
что обеспечивает выполнение программы на ЭВМ. Классическая структура ЭВМ
реализует вычислительный процесс как последовательное выполнение
машинных команд, из которых состоит программа на машинном языке. Поэтому
классическое программирование стремится использовать жесткую
последовательность шагов.
Развитие архитектуры ЭВМ привело к появлению структур, в которых
вычислительный процесс может протекать по нескольким ветвям параллельно.
Параллелизм возник естественным образом, как средство увеличения
производительности вычислительных машин. Идея параллелизма была
технически реализована в многопроцессорных системах, однородных средах,
локальных вычислительных сетях и в ряде других аппаратных решений.
Появление технических средств, способных организовать параллельное
протекание вычислительного процесса, поставило две задачи. Одна из них -
создание специальных методов решения задач, ориентированных на
параллельную реализацию. Поиски путей решения этой задачи привели к
возникновению нового раздела в вычислительной математике - теории
параллельных вычислений.
Другая задача была связана с созданием специальных программных средств
для записи параллельных процессов в форме, которую может использовать
операционная система вычислительной машины, системы или сети, чтобы
фактически организовать параллельный процесс. Появление этой задачи
породило новое направление в программировании - параллельное
программирование.
В параллельном программировании можно выделить два подхода, связанных с
тем, что является исходным моментом для организации параллельного
течения процесса. При первом подходе в качестве исходной записи имеется
последовательная запись некоторого алгоритма и задача заключается в
распараллеливании этой записи. При втором подходе
используются лишь те методы решения задач, которые автоматически
допускают распараллеливание, и речь идет лишь об организации
взаимодействия параллельно текущих процессов. В этих двух подходах,
однако, есть общие принципиальные моменты, от которых зависит
возможность и эффективность параллельного программирования.
Чтобы организовать параллельный процесс, надо иметь по крайней мере пять
основных операторов, смысл которых для наглядности иллюстрируется рис.
1. Первый оператор НАЧАТЬ (X, Z) соответствует тому, что начинает
выполняться некоторая ветвь параллельного процесса. Для случая,
показанного на рисунке в самом начале, - это только ветвь процесса А.
Поэтому эта программа должна начинаться с оператора НАЧАТЬ (А, ).
Следующий оператор фиксирует завершение некоторой ветви. В нашем случае
этот оператор выглядит как ЗАВЕРШЕНА (А). После этого можно начинать
сразу три ветви. Роль параметра при их включении играет завершение
процесса А. Поэтому эти три оператора имеют вид: НАЧАТЬ (Б, ЗАВЕРШЕНА
А); НАЧАТЬ (В, ЗАВЕРШЕНА А) и НАЧАТЬ (Г, ЗАВЕРШЕНА А). В этих записях
вторая позиция в операторе НАЧАТЬ используется как условие его
активизации. Когда вторая позиция пуста, то оператор НАЧАТЬ может
включаться в работу немедленно.
Оператор ЖДАТЬ используется, когда надо организовать ожидание
окончания некоторой ветви или получения в некоторой ветви параллельного
процесса значения какого-либо параметра. На нашем рисунке оператор ЖДАТЬ
(Б, В) означает, что процесс Д может начаться, как только закончатся все
три процесса - Б, В и Г. Процесс Г в том месте, где стоит оператор ЖДАТЬ
(Б, В), не может продолжаться, пока Б и В не выдадут нужных для
продолжения Г результатов своей работы. Оператор ЖДАТЬ (В, а), как и
оператор ЖДАТЬ (В, Ъ), показывает, что в соответствующие моменты ветвь Г
не может продолжаться, так как для продолжения процесса по этой ветви
требуются знания о значениях параметров а и Ь, которые вычисляются в
ветви В.
В реальных системах параллельного программирования ситуация усложняется
тем, что необходимо учитывать особенности аппаратной реализации
параллельных вычислителей.