Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!!Экзаменационные вопросы_003.rtf
Скачиваний:
11
Добавлен:
19.09.2019
Размер:
17.62 Mб
Скачать
  1. Модульность в параллельных программах. Виды композиции. Проблема перераспределения данных. Последовательная композиция – spmd. ScaLapack.

Модульность

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

Реал SPMD програмы на СС++ вкл-ет 2 комп-та. 1 н-ся комп иниц-ции. Он создает об-ты “процессор”, где будут выполняться вычисления, и комм структуры (напр, каналы) для обм данными. Комп-т выполнения вып-ет собств вычисления. Он могут быть структ-н двояко. При 1 подх, программа верх ур стр-ся как посл выз п/п, каждая из к-х исп оп-р parfor для создает нитей на каждая ПО. При 2-м подх используется 1 оп-р parfor, создает набор долгожив нитей (по 1 на ПО), каждая из к-х предст посл вызовов, обеспечения посл выч-й. 1 подх дает б простые програмы, но 2 сч-ся б эфф-м.

Проиллюстрирует оба подхода на прим зад вычисления кон разн. В прим 1 комп выполнения пр соб цикл while , сод-й посл комп процессор finite_difference и global_maximum. Параллельность и комм инкапс в этих пп, к-е исп parfor и др параллельных конструкций.

<пример1>

В прим 2 исп 1 parfor, создает по 1 нити на ПО. Нить вып-ет посл выз процессор finite_difference и global_maximum. Рез программа сложнее, чем в 1 прим, но потенц б эфф-на, т.к. искл затр на пост создает и уничт нитей.

  1. Параллельная композиция. Конкурентная композиция. Примеры. Правила применения.

Параллельная композиция.

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

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

Конкурентная композиция.

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

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

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

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

Модуль grid может создавать ряд задач. Аргументы to_reduce from_reduce – это порты, определяющие каналы посылки и получения данных от модуля reduce.

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

Правила:

  1. Модули следует проектировать так, чтобы они обрабатывали различные распределения данных. Это повышает возможность повторного использования.

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

  3. Использовать последовательную композицию при работе с SPMD моделью и языками (HPF).

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

  5. Следует внимательно рассмотреть возможность конкурентной композиции, если комплекты могут выполняться одновременно, велики затраты на коммуникацию и /или возможно перекрытие коммуникаций и вычислений.

  6. Параллельная композиция предпочтительнее, если коммуникаций внутри комплектов больше, чем между комплектами.