Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
36 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
880.44 kB
Просмотров:
69
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![MPI](/documents_6/b6df830025a67bb4b407690faaa55460/img0.jpg)
№2 слайд![Введение Message Passing](/documents_6/b6df830025a67bb4b407690faaa55460/img1.jpg)
Содержание слайда: Введение
Message Passing Interface (MPI, интерфейс передачи сообщений) — программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу.
Первая версия MPI разрабатывалась в 1993—1994 году, и MPI 1 вышла в 1994.
№3 слайд![Стандарты MPI MPI - . MPI . -](/documents_6/b6df830025a67bb4b407690faaa55460/img2.jpg)
Содержание слайда: Стандарты MPI
MPI 1 - 1994.
MPI 1.1 -12 июня 1995 года
MPI 2.0 - 18 июля 1997 года
MPI 2.1 - сентябрь 2008 года
MPI 2.2 - 4 сентября 2009 года
MPI 3.0 - 21 сентября 2012 года
№4 слайд![Реализации MPI MPICH одна из](/documents_6/b6df830025a67bb4b407690faaa55460/img3.jpg)
Содержание слайда: Реализации MPI
MPICH — одна из самых распространенных реализация MPI, работает на UNIX и Windows-системах
Open MPI — ещё одна свободная реализация MPI. Основана на более ранних проектах FT-MPI, LA-MPI, LAM/MPI и PACX-MPI.
MPI/PRO for Windows NT — коммерческая реализация для Windows NT
Intel MPI — коммерческая реализация для Windows / Linux
Microsoft MPI входит в состав Compute Cluster Pack SDK. Основан на MPICH2, но включает дополнительные средства управления заданиями. Поддерживается спецификация MPI-2.
HP-MPI — коммерческая реализация от HP
SGI MPT — платная библиотека MPI от SGI
Mvapich — свободная реализация MPI для Infiniband
Oracle HPC ClusterTools — бесплатная реализация для Solaris SPARC/x86 и Linux на основе Open MPI
MPJ — MPI for Java
MPJ Express — MPI на Java
№5 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img4.jpg)
№6 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img5.jpg)
№7 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img6.jpg)
№8 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img7.jpg)
№9 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img8.jpg)
№10 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img9.jpg)
№11 слайд![Настройка системы](/documents_6/b6df830025a67bb4b407690faaa55460/img10.jpg)
Содержание слайда: Настройка системы
№12 слайд![В настройках проекта](/documents_6/b6df830025a67bb4b407690faaa55460/img11.jpg)
Содержание слайда: В настройках проекта установить:
Дополнительные каталоги включаемых файлов:
$(MSMPI_INC);$(MSMPI_INC)\x86
или
$(MSMPI_INC);$(MSMPI_INC)\x64
№13 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img12.jpg)
№14 слайд![В меню Компоновщик В меню](/documents_6/b6df830025a67bb4b407690faaa55460/img13.jpg)
Содержание слайда: В меню «Компоновщик»:
В меню «Компоновщик»:
Добавить в «Дополнительные зависимости» файл msmpi.lib
Добавить в «Дополнительные каталоги библиотек» ссылку на папку:
$(MSMPI_LIB32)
Или
$(MSMPI_LIB64)
№15 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img14.jpg)
№16 слайд![Если разрядность программы не](/documents_6/b6df830025a67bb4b407690faaa55460/img15.jpg)
Содержание слайда: Если разрядность программы не соответствует разрядности подключенных библиотек, то возникнут такие ошибки:
Если разрядность программы не соответствует разрядности подключенных библиотек, то возникнут такие ошибки:
LNK1120: 5 unresolved externals
LNK2019: unresolved external symbol _MPI_Comm_rank@8 referenced in function _main
LNK2019: unresolved external symbol _MPI_Finalize@0 referenced in function _main
LNK2019: unresolved external symbol _MPI_Init@8 referenced in function _main
LNK2019: unresolved external symbol _MPI_Recv@28 referenced in function _main
№17 слайд![Первое приложение](/documents_6/b6df830025a67bb4b407690faaa55460/img16.jpg)
Содержание слайда: Первое приложение
№18 слайд![Запуск приложения На каждой](/documents_6/b6df830025a67bb4b407690faaa55460/img17.jpg)
Содержание слайда: Запуск приложения
На каждой машине запустить демон:
smpd -d
На управляющем узле выполнить команду запуска программы:
mpiexec -hosts КоличХостов IP1 КолПроц1
IP2 КолПроц2 … IPN КолПроцN -wdir ПутьКПапкеСПрограммой ИмяФайла.exe
№19 слайд![Запуск приложения Пример](/documents_6/b6df830025a67bb4b407690faaa55460/img18.jpg)
Содержание слайда: Запуск приложения
Пример строки запуска программы на 3-х хостах:
mpiexec -hosts 3 192.168.0.2 2 192.168.0.3 2 127.0.0.1 3 -wdir \\192.168.0.1\MPIProgram Example.exe
Результат:
Hello world from processor one, rank 4 out of 7 processors
Hello world from processor one, rank 3 out of 7 processors
Hello world from processor two, rank 6 out of 7 processors
Hello world from processor two, rank 5 out of 7 processors
Hello world from processor quad, rank 2 out of 7 processors
Hello world from processor quad, rank 0 out of 7 processors
Hello world from processor quad, rank 1 out of 7 processors
№20 слайд![Общая схема работы MPICH на](/documents_6/b6df830025a67bb4b407690faaa55460/img19.jpg)
Содержание слайда: Общая схема работы MPICH на кластере
№21 слайд![Первое приложение](/documents_6/b6df830025a67bb4b407690faaa55460/img20.jpg)
Содержание слайда: Первое приложение
№22 слайд![Константы](/documents_6/b6df830025a67bb4b407690faaa55460/img21.jpg)
Содержание слайда: Константы
№23 слайд![Функции и константы MPI COMM](/documents_6/b6df830025a67bb4b407690faaa55460/img22.jpg)
Содержание слайда: Функции и константы
MPI_COMM_WORLD – все процессы (константа)
int MPI_Init( int* argc, char** argv)
int MPI_Finalize()
int MPI_Comm_size( MPI_Comm comm, int* size) – определить количество запущенных процессов:
int size;
MPI_Comm_size(MPI_COMM_WORLD, &size);
int MPI_Comm_rank( MPI_comm comm, int* rank) – определение номера процесса в группе
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
int MPI_Abort(MPI_Comm comm, int errorcode ) – аварийное завершение работы процессов
MPI_Abort(MPI_COMM_WORLD,MPI_ERR_OTHER);
№24 слайд![Функции int MPI Send void](/documents_6/b6df830025a67bb4b407690faaa55460/img23.jpg)
Содержание слайда: Функции
int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int msgtag, MPI_Comm comm) – передача сообщения
buf - адрес начала буфера посылки сообщения
count - число передаваемых элементов в сообщении
datatype - тип передаваемых элементов
dest - номер процесса-получателя
msgtag - метка сообщения
comm - идентификатор группы
#define N 10
…
int rank, buf[N];
…
MPI_Send(buf, N, MPI_INT, 1, 10, MPI_COMM_WORLD);
№25 слайд![Функции int MPI Recv void](/documents_6/b6df830025a67bb4b407690faaa55460/img24.jpg)
Содержание слайда: Функции
int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int msgtag, MPI_comm comm, MPI_Status *status) – прием сообщения (блокирующая функция)
выходной параметр buf - адрес начала буфера приема сообщения
count - максимальное число элементов в принимаемом сообщении
datatype - тип элементов принимаемого сообщения
source - номер процесса-отправителя
msgtag - метка принимаемого сообщения
comm - идентификатор группы
выходной параметр status - параметры принятого сообщения
#define N 10
…
int rank, buf[N];
MPI_Status status;
…
MPI_Recv(buf, N, MPI_INT, 1, 10, MPI_COMM_WORLD, &status);
…
№26 слайд![Функции int MPI Probe int](/documents_6/b6df830025a67bb4b407690faaa55460/img25.jpg)
Содержание слайда: Функции
int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status status) – проверка приемного буфера
source - номер процесса-отправителя
tag - метка сообщения
comm - идентификатор группы
выходной параметр status - параметры принятого сообщения
MPI_Status status;
…
MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
№27 слайд![Структура MPI Status Содержит](/documents_6/b6df830025a67bb4b407690faaa55460/img26.jpg)
Содержание слайда: Структура MPI_Status
Содержит поля:
MPI_SOURCE (источник),
MPI_TAG (метка),
MPI_ERROR (ошибка).
MPI_Status status;
…
MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
№28 слайд![Функции int MPI Get count MPI](/documents_6/b6df830025a67bb4b407690faaa55460/img27.jpg)
Содержание слайда: Функции
int MPI_Get_count(MPI_Status status, MPI_Datatype datatype, int *count ) – определение размера сообщения
status - информация о сообщении
datatype - тип принимаемых элементов
выходной параметр count - число элементов сообщения
MPI_Status status;
int count;
…
MPI_Get_count(&status, MPI_INT, &count);
№29 слайд![Простой пример Простой пример](/documents_6/b6df830025a67bb4b407690faaa55460/img28.jpg)
Содержание слайда: Простой пример
Простой пример
1
№30 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img29.jpg)
№31 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img30.jpg)
№32 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img31.jpg)
№33 слайд![Простой пример Простой пример](/documents_6/b6df830025a67bb4b407690faaa55460/img32.jpg)
Содержание слайда: Простой пример
Простой пример
2
№34 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img33.jpg)
№35 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img34.jpg)
№36 слайд![](/documents_6/b6df830025a67bb4b407690faaa55460/img35.jpg)