Помощь в написании студенческих работ
Антистрессовый сервис

Основные сведения о стандартах MPI-1 и MPI-2

РефератПомощь в написанииУзнать стоимостьмоей работы

Важную роль в MPI играет понятие тэга. Тэгом называется целочисленное значение, используемое для установления соответствия внутри потоков сообщений, передаваемых от одной ветви другой. С помощью тэгов решается такая проблема: если ветвь, А асинхронно (без синхронизации) отправляет два (или более) сообщения одинакового размера, адресованных ветви В, то в общем случае нет гарантии, что сообщение… Читать ещё >

Основные сведения о стандартах MPI-1 и MPI-2 (реферат, курсовая, диплом, контрольная)

Отличительная особенность программ, написанных с использованием стандарта MPI-1, состоит в том, что в них допускается только статическое распараллеливание, т. е. количество параллельных процессов (ветвей) во время запуска и исполнения программы фиксировано.

Стандарт MPI-1 включает в себя следующие группы функций.

  • 1. Инициализации, завершения, определения окружения.
  • 2. Передача сообщений типа «точка-точка».
  • 3. Коллективные операции взаимодействия.
  • 4. Создание и использование производных типов данных.
  • 5. Управление группами ветвей и коммуникаторами.
  • 6. Управление виртуальными топологиями.

Стандарт MPI-2 помимо функциональности стандарта МР1−1 включает в себя следующие дополнительные группы операций.

  • 1. Улучшенный внешний интерфейс для разработчика.
  • 2. Динамическое порождение ветвей.
  • 3. Удаленный доступ к памяти (односторонних взаимодействий).
  • 4. Расширенные коллективные операции.
  • 5. Параллельный ввод/вывод.

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

Коммуникатором называется указатель (дескриптор) на внутреннюю структуру библиотеки МР1, хранящую сведения о коллективе параллельных ветвей. В MPI понятия коллектива ветвей и группы ветвей различаются. Группа ветвей как объект может существовать самостоятельно, коллектив — это всегда коммуникатор. Имена коммуникаторов обычно начинаются с префикса МР1_СОММ_.

Коммуникатор коллектива, который включает в себя все ветви приложения, создастся автоматически при инициализации библиотеки и называется MPI COMM WORLD. В этот момент создаются также:

  • — коммуникатор MPICOMMSELF. В этот коллектив входит единственная ветвь, вызвавшая функцию инициализации;
  • — пустой коммуникатор MPICOMMNULL, не содержащий ни одной ветви. Использование этого коммуникатора в любой функции MPI приведет к аварийному завершению ветви, вызвавшей функцию, и аварийному завершению всего приложения.

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

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

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

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

Перечень базовых (предопределенных) типов данных MPI:

Тип данных MPI.

Тип данных языка С.

Тип данных языка C++.

Тип данных языка Fortran.

MPI CIIAR.

signed char.

signed char.

Character (1).

MPIWCHAR.

wchart.

wchart.

Character I).

MPISHORT.

signed short int.

signed short int.

Integer * 2.

Тип данных MPI.

Тип данных языка С.

Тип данных языка C++.

Тип данных языка Fortran.

MPIJNT.

signed int.

signed int.

Integer * 4.

MPILONG.

signed long int.

signed long int.

Integer * 4.

MPIUNSIGNEDCHAR.

unsigned char.

unsigned char.

Character.

MPIUNSIGNEDSHORT.

unsigned short int.

unsigned short int.

Integer * 2.

MPIUNSIGNED.

unsigned int.

unsigned int.

Integer * 4.

MPI UNSIGNED LONG.

unsigned long int.

unsigned long int.

Integer * 4.

MPI BOOL (MPI LOGICAL).

signed int.

bool.

Logical.

MPI FLOAT.

float.

float.

Real * 4.

MPIDOUBLE.

double.

double.

Double precision (Real * 8).

MPILONGDOUBLE.

long double.

long double.

Double precision (Real * 8).

MPICOMPLEX.

;

Complcx.

Complex.

MPIDOUBLECOMPLEX.

;

Coniplex.

c>

Double.

complex.

MPI LONG DOUBLE CO MPLEX.

;

Complex.

double>

;

MPI_BYTE (8-битный байт).

;

;

;

MPI PACKED.

;

;

;

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

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

Рекомендуется тэги объявлять с помощью оператора препроцессора #dcfinc, выбирая семантически значимые имена для целочисленных констант, например:

#define FIRST_VECTOR 100define COLUMN 101.

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

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

Далее рассматриваются основные группы функций и их краткое описание.

Показать весь текст
Заполнить форму текущей работой