Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VOPROSY_Kolesnikov.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
613.39 Кб
Скачать
  1. Визначення загального числа паралельних процесів у групі та визначення номера процесу в групі у mpi програмах?

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

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

MPI_COMM_GROUP(COMM, GROUP, IERR) INTEGER COMM, GROUP, IERR

Получение группы GROUP, соответствующей коммуникатору сомм. В языке Си параметр GROUP имеет предопределенный тип MPi_Group. Поскольку изначально существует единственный нетривиальный коммуникатор MPI_COMM_WORLD, сначала нужно получить соответствующую ему группу процессов. Это можно сделать при помощи следующего вызова:

call MPI_COMM_GROUP(MPI_COMM_WORLD, group, ierr)

MPI_GROUP_INCL(GROUP, N, RANKS, NEWGROUP, IERR) INTEGER GROUP,

N, RANKS(*), NEWGROUP, IERR

Создание группы NEWGROUP из N процессов прежней группы GROUP с рангами RANKS (l),...,RANKS (N) , причем рангу RANKS (I) в старой группе соответствуетранг i-l в новой группе. При N=0 создается пустая группа MPI_GROUP_EMPTY. Возможно использование этой процедуры для задания нового порядка процессов в группе.

MPI_GROUP_EXCL(GROUP, N, RANKS, NEWGROUP, IERR) INTEGER GROUP,

N, RANKS(*), NEWGROUP, IERR

Создание группы NEWGROUP ИЗ процессов группы GROUP, исключая процессы с рангами RANKS (1),...,RANKS (N) , причем порядок оставшихся процессов в новой группе соответствует порядку процессов в старой группе. При N=0 создается группа, идентичная старой группе.

  1. Моделі паралельних обчислень

В модели передачи сообщений параллельная программа представляет собой множество процессов, каждый из которых имеет собственное локальное адресное пространство. Взаимодействие процессов - обмен данными и синхронизация - осуществляется посредством передачи сообщений. Обобщение и стандартизация различных библиотек передачи сообщений привели в 1993 году к разработке стандарта MPI (Message Passing Interface). Его широкое внедрение в последующие годы обеспечило коренной перелом в решении проблемы переносимости параллельных программ, разрабатываемых в рамках разных подходов, использующих модель передачи сообщений в качестве модели выполнения.

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

  • Возможность использования в языках Фортран, Си, Си++;

  • Предоставление возможностей для совмещения обменов сообщениями и вычислений;

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

  • Широкий набор коллективных операций (например, широковещательная рассылка информации, сбор информации с разных процессоров), допускающих гораздо более эффективную реализацию, чем использование соответствующей последовательности пересылок точка-точка;

  • Широкий набор редукционных операций (например, суммирование расположенных на разных процессорах данных, или нахождение их максимальных или минимальных значений), не только упрощающих работу программиста, но и допускающих гораздо более эффективную реализацию, чем это может сделать прикладной программист, не имеющий информации о характеристиках коммуникационной системы;

  • Удобные средства именования адресатов сообщений, упрощающие разработку стандартных программ или разделение программы на функциональные блоки;

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

Модель параллелизма по управлению. OpenMP.

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

Программа начинает свое выполнение как один процесс, называемый главной нитью. Главная нить выполняется последовательно, пока не встретится первая параллельная область программы. Параллельная область определяется парой директив PARALLEL и END PARALLEL. При входе в параллельную область главная нить порождает некоторое число подчиненных ей нитей, которые вместе с ней образуют текущую группу нитей. Все операторы программы, находящиеся в параллельной конструкции, включая и вызываемые изнутри нее процедуры, выполняются всеми нитями текущей группы параллельно, пока не произойдет выход из параллельной области или встретится одна из конструкций распределения работы - DO, SECTIONS или SINGLE.

Конструкция DO служит для распределения витков цикла между нитями, конструкция SECTIONS – для распределения между нитями указанных секций программы, а конструкция SINGLE указывает секцию, которая должна быть выполнена только одной нитью.

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]