Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Введение в MPI. Параллельное программирование

Содержание

План.MPI: основные понятия и определенияВведение в MPIИнициализация и завершение MPI программОпределение количества и ранга процессовПрием и передача сообщенийОпределение времени выполнения MPI программыПример: первая программа с использованием MPI
Параллельное программированиедоцент М.А. СокольскаяЛекция 7 Введение в MPI План.MPI: основные понятия и определенияВведение в MPIИнициализация и завершение MPI программОпределение количества Понятие MPIMPI используется в вычислительных системах с распределенной памятью, в которых процессоры Стандарт MPI1993 г. – объединение нескольких групп в MPI Forum для создания Стандарт MPI1997 г – стандарт MPI 2.0Возможности, заложенные в стандарт превышают возможности В рамках MPI для решения задачи разрабатывается одна программа, она запускается на В MPI существует множество операций передачи данных:обеспечиваются разные способы пересылки данных;реализованы практически Библиотека MPIСуществует для двух языков:FortranC/C++Представляет собой реализацию общих положений стандарта под тот Работа на кластереНеобходимое ПО устанавливается (как правило) на кластерных системах. Доступ к Использование Putty Использование WinSCP MPI: основные понятия и определения…Понятие параллельной программыПод параллельной программой в рамках MPI MPI: основные понятия и определения…Количество процессов определяется в момент запуска параллельной программы MPI: основные понятия и определения…В основу MPI положены четыре основных понятия:Тип операции MPI: основные понятия и определения…Операции передачи данныхОснову MPI составляют операции передачи сообщений.Среди MPI: основные понятия и определения…Понятие коммуникаторовОпределение:Коммуникатор в MPI - специально создаваемый служебный MPI: основные понятия и определения…В ходе вычислений могут создаваться новые и удаляться Типы данных MPIПри выполнении операций передачи сообщений для определения передаваемых или получаемых Инициализация и завершение MPI программПервой вызываемой функцией MPI должна быть функция:int MPI_Init Инициализация и завершение MPI программСтруктура параллельной программы, разработанная с использованием MPI, должна Определение количества и ранга процессовОпределение количества процессов в выполняемой параллельной программе осуществляется Определение количества и ранга процессов…Как правило, вызов функций MPI_Comm_size и MPI_Comm_rank выполняется Определение количества и ранга процессовКоммуникатор MPI_COMM_WORLD создается по умолчанию и представляет все Работа функции MPI_Comm_rank() Парная передача сообщенийДля передачи сообщения процесс-отправитель должен выполнить функцию:int MPI_Send(void *buf, int Передача сообщений…Отправляемое сообщение определяется через указание блока памяти (буфера), в котором это Типы данных для передачи и приёма сообщенийБазовые типы данных MPI для языка C/С++ Прием сообщенийДля приема сообщения процесс-получатель должен выполнить функцию:int MPI_Recv(void *buf, int count, Прием сообщений…Буфер памяти должен быть достаточным для приема сообщения, а тип элементов Прием сообщений…Параметр status позволяет определить ряд характеристик принятого сообщения:status.MPI_SOURCE – ранг процесса-отправителя Прием сообщений…Функция MPI_Recv является блокирующей для процесса-получателя, т.е. его выполнение приостанавливается до Парные функции приема-передачи сообщений Первая параллельная программа с использованием MPI: “Hello, world!!!”#include MPI_Recv(&RecvRank, 1, MPI_INT,   	MPI_ANY_SOURCE, MPI_ANY_TAG, 	MPI_COMM_WORLD, &Status); Первая параллельная программа с использованием MPI…Каждый процесс определяет свой ранг, после чего Первая параллельная программа с использованием MPI…Порядок приема сообщений заранее не определен и ИтогиМы рассмотрели:Основные определения и понятия MPI, основные функции MPI и их применение.
Слайды презентации

Слайд 2 План.
MPI: основные понятия и определения
Введение в MPI
Инициализация и

План.MPI: основные понятия и определенияВведение в MPIИнициализация и завершение MPI программОпределение

завершение MPI программ
Определение количества и ранга процессов
Прием и передача

сообщений
Определение времени выполнения MPI программы
Пример: первая программа с использованием MPI

Слайд 3 Понятие MPI
MPI используется в вычислительных системах с распределенной

Понятие MPIMPI используется в вычислительных системах с распределенной памятью, в которых

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

организации параллельных вычислений в таких системах необходимо уметь:

распределять вычислительную нагрузку,
организовать информационное взаимодействие (передачу данных) между процессорами.
Решение всех перечисленных вопросов обеспечивает MPI - интерфейс передачи данных (message passing interface)


Слайд 4 Стандарт MPI
1993 г. – объединение нескольких групп в

Стандарт MPI1993 г. – объединение нескольких групп в MPI Forum для

MPI Forum для создания единых требований к средствам программирования

многопроцессорных систем с распределённой памятью .
Результат – стандарт MPI 1.0 в 1994 г.
Основные положения стандарта:
Реализации стандарта должны быть через подключаемые библиотеки или модули, без создания новых компиляторов или языков.
Библиотеки должны реализовывать все возможные типы обменов данными между процессорами (вычислительными узлами)


Слайд 5 Стандарт MPI
1997 г – стандарт MPI 2.0
Возможности, заложенные

Стандарт MPI1997 г – стандарт MPI 2.0Возможности, заложенные в стандарт превышают

в стандарт превышают возможности самих машин, поэтому версия 2.0

широко применяется только сейчас.

Слайд 6
В рамках MPI для решения задачи разрабатывается одна

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

программа, она запускается на выполнение одновременно на всех имеющихся

процессорах
Для организации различных вычислений на разных процессорах:
Есть возможность подставлять разные данные для программы на разных процессорах,
Имеются средства для идентификации процессора, на котором выполняется программа

Такой способ организации параллельных вычислений обычно именуется как модель "одна программа множество процессов" (single program multiple processes or SPMP)

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

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

способы пересылки данных;
реализованы практически все основные коммуникационные операции.

Эти

возможности являются наиболее сильной стороной MPI (об этом, в частности, свидетельствует и само название MPI)

Слайд 8 Библиотека MPI
Существует для двух языков:
Fortran
C/C++
Представляет собой реализацию общих

Библиотека MPIСуществует для двух языков:FortranC/C++Представляет собой реализацию общих положений стандарта под

положений стандарта под тот или иной язык.
Мы рассматриваем реализацию

mpi.h для C/C++

Слайд 9 Работа на кластере
Необходимое ПО устанавливается (как правило) на

Работа на кластереНеобходимое ПО устанавливается (как правило) на кластерных системах. Доступ

кластерных системах. Доступ к кластеру КГПУ осуществляется удалённо.
Программы (для

ОС Windows):
putty: для доступа к кластеру, запуска и компиляции программ;
WinSCP: для обмена файлами между кластером и удалённой машиной.
Для ОС Linux – доступ на кластер с командной строки

Слайд 10 Использование Putty

Использование Putty

Слайд 13 Использование WinSCP

Использование WinSCP

Слайд 15 MPI: основные понятия и определения…
Понятие параллельной программы
Под параллельной

MPI: основные понятия и определения…Понятие параллельной программыПод параллельной программой в рамках

программой в рамках MPI понимается множество одновременно выполняемых процессов:


процессы могут выполняться на разных процессорах; вместе с этим, на одном процессоре могут располагаться несколько процессов,
Каждый процесс параллельной программы порождается на основе копии одного и того же программного кода (модель SPMP).

Слайд 16 MPI: основные понятия и определения…
Количество процессов определяется в

MPI: основные понятия и определения…Количество процессов определяется в момент запуска параллельной

момент запуска параллельной программы средствами среды исполнения MPI программ.


Все процессы программы последовательно перенумерованы.

Определение:
Номер процесса именуется рангом процесса.


Слайд 17 MPI: основные понятия и определения…
В основу MPI положены

MPI: основные понятия и определения…В основу MPI положены четыре основных понятия:Тип

четыре основных понятия:
Тип операции передачи сообщения
Тип данных, пересылаемых в

сообщении
Понятие коммуникатора (группы процессов)
Понятие виртуальной топологии

Слайд 18 MPI: основные понятия и определения…
Операции передачи данных
Основу MPI

MPI: основные понятия и определения…Операции передачи данныхОснову MPI составляют операции передачи

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

различаются:
парные (point-to-point) операции между двумя процессами,
коллективные (collective) операции для одновременного взаимодействия нескольких процессов.

Слайд 19 MPI: основные понятия и определения…
Понятие коммуникаторов
Определение:
Коммуникатор в MPI

MPI: основные понятия и определения…Понятие коммуникаторовОпределение:Коммуникатор в MPI - специально создаваемый

- специально создаваемый служебный объект, объединяющий в своем составе

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

Слайд 20 MPI: основные понятия и определения…
В ходе вычислений могут

MPI: основные понятия и определения…В ходе вычислений могут создаваться новые и

создаваться новые и удаляться существующие коммуникаторы.
Один и тот

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

Слайд 21 Типы данных MPI
При выполнении операций передачи сообщений для

Типы данных MPIПри выполнении операций передачи сообщений для определения передаваемых или

определения передаваемых или получаемых данных в функциях MPI необходимо

указывать тип пересылаемых данных.

MPI содержит большой набор базовых типов данных, во многом совпадающих с типами данных в языках C/С++ и Fortran.
В MPI можно создавать новые производные типы данных для более точного и краткого описания содержимого пересылаемых сообщений.

Слайд 22 Инициализация и завершение MPI программ
Первой вызываемой функцией MPI

Инициализация и завершение MPI программПервой вызываемой функцией MPI должна быть функция:int

должна быть функция:
int MPI_Init ( int *argc, char ***argv

);
(служит для инициализации среды выполнения MPI программы; параметрами функции являются количество аргументов в командной строке ОС и текст самой командной строки.)
Последней вызываемой функцией MPI обязательно должна являться функция:
int MPI_Finalize (void);

Слайд 23 Инициализация и завершение MPI программ
Структура параллельной программы, разработанная

Инициализация и завершение MPI программСтруктура параллельной программы, разработанная с использованием MPI,

с использованием MPI, должна иметь следующий вид:
#include "mpi.h"
int main

( int argc, char *argv[] ) {
<программный код без использования MPI функций>
MPI_Init ( &agrc, &argv );
<программный код с использованием MPI функций >
MPI_Finalize();
<программный код без использования MPI функций >
return 0;
}

Слайд 24 Определение количества и ранга процессов
Определение количества процессов в

Определение количества и ранга процессовОпределение количества процессов в выполняемой параллельной программе

выполняемой параллельной программе осуществляется при помощи функции:
int MPI_Comm_size (

MPI_Comm comm, int *size );

Для определения ранга процесса используется функция:
int MPI_Comm_rank ( MPI_Comm comm, int *rank );

Слайд 25 Определение количества и ранга процессов…
Как правило, вызов функций

Определение количества и ранга процессов…Как правило, вызов функций MPI_Comm_size и MPI_Comm_rank

MPI_Comm_size и MPI_Comm_rank выполняется сразу после MPI_Init:

#include "mpi.h"
int main

( int argc, char *argv[] ) {
int ProcNum, ProcRank;
<программный код без использования MPI функций>
MPI_Init (&agrc, &argv);
MPI_Comm_size (MPI_COMM_WORLD, &ProcNum);
MPI_Comm_rank (MPI_COMM_WORLD, &ProcRank);
<программный код с использованием MPI функций >
MPI_Finalize();
<программный код без использования MPI функций >
return 0;
}

Слайд 26 Определение количества и ранга процессов
Коммуникатор MPI_COMM_WORLD создается по

Определение количества и ранга процессовКоммуникатор MPI_COMM_WORLD создается по умолчанию и представляет

умолчанию и представляет все процессы выполняемой параллельной программы;
Ранг, получаемый

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

Слайд 27 Работа функции MPI_Comm_rank()

Работа функции MPI_Comm_rank()

Слайд 28 Парная передача сообщений
Для передачи сообщения процесс-отправитель должен выполнить

Парная передача сообщенийДля передачи сообщения процесс-отправитель должен выполнить функцию:int MPI_Send(void *buf,

функцию:
int MPI_Send(void *buf, int count, MPI_Datatype type, int dest,

int tag, MPI_Comm comm);
где:
buf – адрес буфера памяти, в котором располагаются данные отправляемого сообщения,
count – количество элементов данных в сообщении,
type - тип элементов данных пересылаемого сообщения,
dest - ранг процесса, которому отправляется сообщение,
tag - значение-тег, используемое для идентификации сообщений,
comm - коммуникатор, в рамках которого выполняется передача данных.

Слайд 29 Передача сообщений…
Отправляемое сообщение определяется через указание блока памяти

Передача сообщений…Отправляемое сообщение определяется через указание блока памяти (буфера), в котором

(буфера), в котором это сообщение располагается. Используемая для указания

буфера триада (buf, count, type) входит в состав параметров практически всех функций передачи данных,
Процессы, между которыми выполняется передача данных, обязательно должны принадлежать коммуникатору, указываемому в функции MPI_Send,
Параметр tag используется только если нужно различать передаваемые сообщения, в противном случае в качестве значения параметра может быть использовано произвольное целое число.

Слайд 30 Типы данных для передачи и приёма сообщений
Базовые типы

Типы данных для передачи и приёма сообщенийБазовые типы данных MPI для языка C/С++

данных MPI для языка C/С++


Слайд 31 Прием сообщений
Для приема сообщения процесс-получатель должен выполнить функцию:
int

Прием сообщенийДля приема сообщения процесс-получатель должен выполнить функцию:int MPI_Recv(void *buf, int

MPI_Recv(void *buf, int count, MPI_Datatype type, int source,int tag,

MPI_Comm comm, MPI_Status *status);
где
- buf, count, type – буфер памяти для приема сообщения
- source - ранг процесса, от которого должен быть выполнен прием сообщения,
- tag - тег сообщения, которое должно быть принято для процесса,
- comm - коммуникатор, в рамках которого выполняется передача данных,
- status – указатель на структуру данных с информацией о результате выполнения операции приема данных.

Слайд 32 Прием сообщений…
Буфер памяти должен быть достаточным для приема

Прием сообщений…Буфер памяти должен быть достаточным для приема сообщения, а тип

сообщения, а тип элементов передаваемого и принимаемого сообщения должны

совпадать; при нехватке памяти часть сообщения будет потеряна и в коде завершения функции будет зафиксирована ошибка переполнения,
При приеме сообщения от любого процесса-отправителя для параметра source может быть указано значение MPI_ANY_SOURCE,
При приеме сообщения с любым тегом для параметра tag может быть указано значение MPI_ANY_TAG,

Слайд 33 Прием сообщений…
Параметр status позволяет определить ряд характеристик принятого

Прием сообщений…Параметр status позволяет определить ряд характеристик принятого сообщения:status.MPI_SOURCE – ранг

сообщения:
status.MPI_SOURCE – ранг процесса-отправителя принятого сообщения,
status.MPI_TAG - тег принятого

сообщения.
Функция
MPI_Get_count(MPI_Status *status, MPI_Datatype type, int *count )
возвращает в переменной count количество элементов типа type в принятом сообщении.

Слайд 34 Прием сообщений…
Функция MPI_Recv является блокирующей для процесса-получателя, т.е.

Прием сообщений…Функция MPI_Recv является блокирующей для процесса-получателя, т.е. его выполнение приостанавливается

его выполнение приостанавливается до завершения работы функции.
Таким образом,

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

Слайд 35 Парные функции приема-передачи сообщений

Парные функции приема-передачи сообщений

Слайд 36 Первая параллельная программа с использованием MPI: “Hello, world!!!”
#include

Первая параллельная программа с использованием MPI: “Hello, world!!!”#include

" mpi.h"
int main(int argc, char* argv[])
{

int ProcNum, ProcRank, RecvRank;
MPI_Status Status;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &ProcNum);
MPI_Comm_rank(MPI_COMM_WORLD, &ProcRank);
if ( ProcRank == 0 )
{ // Действия для процесса 0
printf ("\n Hello from process %3d", ProcRank);
for ( int i=1; i < ProcNum; i++ )
{


Слайд 37
MPI_Recv(&RecvRank, 1, MPI_INT,

MPI_Recv(&RecvRank, 1, MPI_INT,  	MPI_ANY_SOURCE, MPI_ANY_TAG, 	MPI_COMM_WORLD, &Status);

MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &Status);
printf("\n Hello

from process %d", RecvRank);
}
}
else // Действия для всех остальных процессов
MPI_Send(&ProcRank,1,MPI_INT,0,0,MPI_COMM_WORLD);
MPI_Finalize(); // Завершение работы
return 0;
}

Слайд 38 Первая параллельная программа с использованием MPI…
Каждый процесс определяет

Первая параллельная программа с использованием MPI…Каждый процесс определяет свой ранг, после

свой ранг, после чего действия в программе разделяются (разные

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

Слайд 39 Первая параллельная программа с использованием MPI…
Порядок приема сообщений

Первая параллельная программа с использованием MPI…Порядок приема сообщений заранее не определен

заранее не определен и зависит от условий выполнения параллельной

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

  • Имя файла: vvedenie-v-mpi-parallelnoe-programmirovanie.pptx
  • Количество просмотров: 106
  • Количество скачиваний: 0