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

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

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

2.5  Аппаратура для параллельных вычислений

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

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

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

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

Первое отразилось на каналах передачи данных от узла к узлу, использовавшие принцип близкодействия (рис. 2.25), т.е. вычислительный узел мог синхронно обмениваться данными по паре каналов лишь с четырьмя соседними вычислительными узлами. Дальнейшее развитие близкодействия породило в аппаратурной части много узловые пространственные структуры с каналами связи типа d-мерного гиперкуба (рис 2.26).

Второе нашло отражение в программном порождении (запуске) множества параллельных процессов с отложенным (задерживаемым) их выполнением до момента готовности данных. Базовыми операторами этих систем служили операторы присваивания Хоара. В дальнейшем обмен между параллельными процессами с этими операторами получил название «рандеву».

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