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

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

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

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

·  передача данных через общую для процессов область памяти;

·  перемещение данных из области памяти одного процесса в область памяти другого процесса.

В обоих случаях нужны средства описания и реализации связи.

1.5  Механизмы связи параллельных процессов

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

·  процессы открыты в пределах одной вычислительной машины;

·  процессы открыты на разных вычислительных машинах.

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

Самым узким местом коммуникационной среды при параллельных вычислениях являются области размещения общих данных нескольких процессов. Возникает вопрос: в памяти какой вычислительной машины должны находиться общие данные? Если в какой-то одной, то из-за асинхронности параллельно выполняемых процессов обеспечить детерминированное (синфазное, синхронизированное по фазе) воздействие на общие данные обеспечить крайне затруднительно, особенно для длительных процессов. Если в каждой машине хранить по копии одних и тех же общих данных, то возникает проблема поддержания когерентности (согласованности) этих данных для всех взаимодействующих процессов. С каждой даже незначительной модификацией общих данных все копии набора этих данных немедленно должны быть обновлены во всех запоминающих устройствах вычислительных машин. Задача не из быстро выполняемых! [6]

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

·  локальная сеть типа общей шины, в которой обмен данными между удаленными процессами может происходить только поочередно;

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

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

1.6  Ускорение при параллельных вычислениях