Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 4 Методы разработки параллельных программ при использования интерфейса передачи.

Slides:



Advertisements
Similar presentations
CS 140: Models of parallel programming: Distributed memory and MPI.
Advertisements

MPI Fundamentals—A Quick Overview Shantanu Dutt ECE Dept., UIC.
Introduction MPI Mengxia Zhu Fall An Introduction to MPI Parallel Programming with the Message Passing Interface.
Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
CS 240A: Models of parallel programming: Distributed memory and MPI.
Введение в параллельные вычисления. Технология программирования MPI (день второй) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Deino MPI Installation The famous “cpi.c” Profiling
Distributed Memory Programming with MPI. What is MPI? Message Passing Interface (MPI) is an industry standard message passing system designed to be both.
Parallel Programming in C with MPI and OpenMP
S an D IEGO S UPERCOMPUTER C ENTER N ATIONAL P ARTNERSHIP FOR A DVANCED C OMPUTATIONAL I NFRASTRUCTURE Message Passing Interface (MPI) Part I NPACI Parallel.
1 Message Passing Programming (MPI). 2 What is MPI? A message-passing library specification extended message-passing model not a language or compiler.
EECC756 - Shaaban #1 lec # 7 Spring Message Passing Interface (MPI) MPI, the Message Passing Interface, is a library, and a software standard.
02/13/2007CS267 Lecture 71 CS 267: Distributed Memory Machines and Programming Jonathan Carter
Введение в параллельные вычисления. Технология программирования MPI (день пятый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Message Passing Interface. Message Passing Interface (MPI) Message Passing Interface (MPI) is a specification designed for parallel applications. The.
Введение в параллельные вычисления. Технология программирования MPI (день четвертый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
1 An Introduction to MPI Parallel Programming with the Message Passing Interface Originally by William Gropp and Ewing Lusk Adapted by Anda Iamnitchi.
1 An Introduction to MPI Parallel Programming with the Message Passing Interface William Gropp Ewing Lusk Argonne National Laboratory Presenter: Mike Slavik.
Parallel Processing1 Parallel Processing (CS 676) Lecture 7: Message Passing using MPI * Jeremy R. Johnson *Parts of this lecture was derived from chapters.
2a.1 Message-Passing Computing More MPI routines: Collective routines Synchronous routines Non-blocking routines ITCS 4/5145 Parallel Computing, UNC-Charlotte,
1 MPI: Message-Passing Interface Chapter 2. 2 MPI - (Message Passing Interface) Message passing library standard (MPI) is developed by group of academics.
Part I MPI from scratch. Part I By: Camilo A. SilvaBIOinformatics Summer 2008 PIRE :: REU :: Cyberbridges.
1 Review –6 Basic MPI Calls –Data Types –Wildcards –Using Status Probing Asynchronous Communication Collective Communications Advanced Topics –"V" operations.
CS 484. Message Passing Based on multi-processor Set of independent processors Connected via some communication net All communication between processes.
Parallel Programming with MPI Prof. Sivarama Dandamudi School of Computer Science Carleton University.
CS 838: Pervasive Parallelism Introduction to MPI Copyright 2005 Mark D. Hill University of Wisconsin-Madison Slides are derived from an online tutorial.
Message Passing Programming Model AMANO, Hideharu Textbook pp. 140-147.
Summary of MPI commands Luis Basurto. Large scale systems Shared Memory systems – Memory is shared among processors Distributed memory systems – Each.
Message Passing Interface (MPI) 1 Amit Majumdar Scientific Computing Applications Group San Diego Supercomputer Center Tim Kaiser (now at Colorado School.
MPI Introduction to MPI Commands. Basics – Send and Receive MPI is a message passing environment. The processors’ method of sharing information is NOT.
Cluster Computing The research in heterogeneous supercomputing led to the development of: 1- high- speed system area networks and 2- portable message passing.
Distributed-Memory (Message-Passing) Paradigm FDI 2004 Track M Day 2 – Morning Session #1 C. J. Ribbens.
Lecture 6: Message Passing Interface (MPI). Parallel Programming Models Message Passing Model Used on Distributed memory MIMD architectures Multiple processes.
An Introduction to MPI Parallel Programming with the Message Passing Interface Prof S. Ramachandram.
CSCI-455/522 Introduction to High Performance Computing Lecture 4.
Oct. 23, 2002Parallel Processing1 Parallel Processing (CS 730) Lecture 6: Message Passing using MPI * Jeremy R. Johnson *Parts of this lecture was derived.
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Message-passing Model.
1 Introduction to Parallel Programming with Single and Multiple GPUs Frank Mueller
1 PDS Lectures 6 & 7 An Introduction to MPI Originally by William Gropp and Ewing Lusk Argonne National Laboratory Adapted by Anda Iamnitchi.
CSE 160 – Lecture 16 MPI Concepts, Topology and Synchronization.
Message Passing Interface (MPI) 2 Amit Majumdar Scientific Computing Applications Group San Diego Supercomputer Center Tim Kaiser (now at Colorado School.
Timing in MPI Tarik Booker MPI Presentation May 7, 2003.
S an D IEGO S UPERCOMPUTER C ENTER N ATIONAL P ARTNERSHIP FOR A DVANCED C OMPUTATIONAL I NFRASTRUCTURE MPI 2 Part II NPACI Parallel Computing Institute.
-1.1- MPI Lectured by: Nguyễn Đức Thái Prepared by: Thoại Nam.
1 Parallel and Distributed Processing Lecture 5: Message-Passing Computing Chapter 2, Wilkinson & Allen, “Parallel Programming”, 2 nd Ed.
Message Passing Interface Using resources from
Lecture 3 Point-to-Point Communications Dr. Muhammad Hanif Durad Department of Computer and Information Sciences Pakistan Institute Engineering and Applied.
COMP7330/7336 Advanced Parallel and Distributed Computing MPI Programming - Exercises Dr. Xiao Qin Auburn University
COMP7330/7336 Advanced Parallel and Distributed Computing MPI Programming: 1. Collective Operations 2. Overlapping Communication with Computation Dr. Xiao.
1 MPI: Message Passing Interface Prabhaker Mateti Wright State University.
Distributed Processing with MPI International Summer School 2015 Tomsk Polytechnic University Assistant Professor Dr. Sergey Axyonov.
Outline Background Basics of MPI message passing
Introduction to parallel computing concepts and technics
Introduction to MPI.
CS 668: Lecture 3 An Introduction to MPI
Send and Receive.
CS 584.
An Introduction to Parallel Programming with MPI
Send and Receive.
Точечные взаимодействия
Lecture 14: Inter-process Communication
MPI: Message Passing Interface
Message-Passing Computing More MPI routines: Collective routines Synchronous routines Non-blocking routines ITCS 4/5145 Parallel Computing, UNC-Charlotte,
Introduction to Parallel Programming with Single and Multiple GPUs
Message-Passing Computing Message Passing Interface (MPI)
Hello, world in MPI #include <stdio.h> #include "mpi.h"
Spring’19 Recitation: Introduction to MPI
Hello, world in MPI #include <stdio.h> #include "mpi.h"
MPI Message Passing Interface
Presentation transcript:

Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 4 Методы разработки параллельных программ при использования интерфейса передачи сообщений MPI Нижегородский Государственный Университет им. Н.И. Лобачевского

4.2 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Содержание Основы подхода История Основы MPIОсновы MPI Основные операции Оценка времени выполнения Коллективные операции Режимы передачи сообщений Проверка завершения операций Буферизация сообщений Пример 1 Пример 2

4.3 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основы подхода… 1. Организация взаимодействия независимо- выполняемых вычислений на процессорах с распределенной памятью

4.4 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основы подхода… 2. Организация параллельных вычислений путем запуска одной и той же программы на нескольких процессоров (модель SPMD – single program multiple data). Различие вычислений обеспечиваются при помощи анализа номера процессора (процесса).

4.5 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основы подхода… 3. Способы организации передачи сообщений Process S: P = 10; s1: send P to R; s2: P = 20; Process R: Q = 0; r1: receive Q from S; r2: T = Q + 1; Синхронный (synchronous) – завершение send/receive после окончания передачи (T==11) Блокирующий (blocking) – send завершается после копирования сообщения в промежуточный буфер, receive ждет окончания приема (T==11) Неблокирующий (nonblocking) – send /receive только инициируют начало операции передачи (T==1,11,21)

4.6 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основы подхода… 4. Библиотеки программ для организации передачи сообщений PVM – Parallel Virtual Machine MPI – Message Passing Interface и др. ! Библиотеки MPI основываются на стандарте MPI, разработанном международным консорциумом MPI Forum

4.7 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. История 1992 г. Начало работ над стандартом библиотеки передачи сообщений (Oak Ridge National Laboratory, Rice University). Ноябрь 1992 г. Объявление рабочего варианта стандарта MPI1. Ноябрь 1993 г. Обсуждение стандарта на конференции Supercomputing'93. 5 мая 1994 г. Окончательный вариант стандарта MPI Июня 1995 г. Новая версия стандарта - MPI Июля 1997 г. Опубликован стандарт MPI-2: Extensions to the Message-Passing Interface.

4.8 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основы MPI… В основу MPI положены четыре основные концепции: Тип операции передачи сообщения Тип данных, пересылаемых в сообщении Понятие коммуникатора (группы процессов) Понятие виртуальной топологии

4.9 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основы MPI… 1. Операции передачи сообщений MPI включает в состав большое количество процедур передачи данных (125). Минимально-необходимый набор – 6 функций. 2. Тип данных В силу возможной неоднородности вычислительной системы при передачи сообщения необходимо указывать тип передаваемых данных. В MPI имеется набор стандартных типов (MPI_INT, MPI_DOUBLE,..), возможным является конструирование новых типов данных.

4.10 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основы MPI… 3. Понятие коммуникатора На одном компьютере может быть запущено несколько копий (процессов) исходной программы. Все процессы могут быть распределены на группы (коммуникаторы). Группа процессов может отличаться контекстом (значениями параметров, выбранной топологией и др.). В составе коммуникатора процесс идентифицируется уникальным номером (рангом). Предопределенный коммуникатор, объединяющий все имеющиеся процессы, MPI_COMM_WORLD

4.11 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основные операции… 1. Структура программы (начало/завершение) #include “mpi.h” main(int argc, char *argv[]){... MPI_Init(&argc, &argv); /* место, где допустим вызов MPI-функций */ MPI_Finalize();... }

4.12 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основные операции… 2. Определение количества и ранга процессов int n, rank; MPI_Comm_size(MPI_COMM_WORLD, &n); MPI_Comm_rank(MPI_COMM_WORLD, &rank); Предопределенный коммуникатор, объединяющий все имеющиеся процессы Общее количество процессов Ранг (номер) процесса

4.13 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основные операции… 3. Передача сообщения (синхронная) MPI_Send(Buf, Count, DataType, Dest, Tag, Comm) (Buf,Count,Datatype) – пересылаемое сообщение –Buf - адрес буфера памяти с сообщением, –Count - количество элементов данных в сообщении, –Datatype – тип элементов данных Dest – ранг (номер) процесса-адресата Tag – номер сообщения Comm – коммуникатор

4.14 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Основные операции… 4. Прием сообщения (синхронный) MPI_Recv(Buf, Count, DataType, Source, Tag, Comm, Status) Source – номер процесса-отправителя –MPI_ANY_SOURCE – любой источник Tag – номер принимаемого сообщения –MPI_ANY_TAG – любое сообщение Status – результат операции (MPI_Status Status;) –Status.MPI_Source – номер источника –Status.MPI_Tag – номер принятого сообщения –MPI_Get_count( &status, DataType, &count) – длина сообщения

4.15 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Пример1: Параллельный "Hello, world" int main(int argc, char* argv[]){ return 0; } MPI_Init(&argc, &argv); MPI_Finalize(); int rank, n, i, message; MPI_Comm_size(MPI_COMM_WORLD, &n); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (rank == 0){ /* Process 0 will output data */ } else MPI_Send(&rank, 1, MPI_INT, 0, 111, MPI_COMM_WORLD); MPI_Status status; printf ("\n Hello from process %3d", rank); for (i=1; i<n; i++){ MPI_Recv(&message, 1, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status); printf("\n Hello from process %3d", message); }

4.16 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Оценка времени выполнения Необходимо измерение скорости исполнения параллельной программы Функция MPI_Wtime() дает время в секундах в виде числа двойной точности – Формат: double MPI_Wtime(); Разрешение выдаваемых функцией значений не специфицируется Функция MPI_Wtick() выдает число секунд между двумя ближайшими последовательными “тиками” часов – Формат: double MPI_Wtick();

4.17 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Коллективные операции… 1. Синхронизация вычислений (согласование времени нахождения исполняемых процессов в необходимых точках параллельного метода решения задачи) Формат: int MPI_Barrier( MPI_Comm comm ); ! Вызов MPI_Barrier должен осуществляться в каждом процессе Process S: … MPI_Barrier(comm); … Process Q: … MPI_Barrier(comm); …

4.18 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Коллективные операции… 2. Рассылка сообщений всем процессам int MPI_Bcast(&Buf, Count, Type, Root, &Comm); Root – ранг процесса, источника рассылки ! Вызов MPI_Bcast должен осуществляться в каждом процессе Process S: … MPI_Bcast(&n,1,MPI_INT,0, &Comm); … Process Q: … MPI_Bcast(&n,1,MPI_INT,0, &Comm); …

4.19 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Коллективные операции… 3. Прием сообщения от всех процессов с выполнением стандартной операции обработки int MPI_Reduce(&Sbuf, &Rbuf, Count, DataType, Operation, Root, &Comm); - Sbuf – буфер отправляемого сообщения, - Rbuf – буфер для приема сообщения, - Root – ранг процесса для приема сообщения, - Operation – операция обработки (MPI_SUM,…) ! Вызов MPI_Reduce должен осуществляться в каждом процессе

4.20 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Коллективные операции… Операции функции MPI_Reduce MPI_MAX и MPI_MIN ищут поэлементные максимум и минимум; MPI_SUM вычисляет сумму векторов; MPI_PROD вычисляет поэлементное произведение векторов; MPI_LAND, MPI_BAND, MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR - логические и двоичные операции И, ИЛИ, исключающее ИЛИ; MPI_MAXLOC, MPI_MINLOC - поиск индексированного минимума/максимума - здесь не рассматриваются.

4.21 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Коллективные операции Иллюстрация операции MPI_Reduce

4.22 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Пример 2: Вычисление числа  … Значение числа  может быть получено при помощи интеграла Для численного интегрирования применим метод прямоугольников

4.23 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Пример 2: Вычисление числа  … Распределим вычисления между p процессорами Получаемые на отдельных процессорах частные суммы должны быть просуммированы

4.24 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Пример 2: Вычисление числа  … #include "mpi.h" #include double f(double a) { return (4.0 / (1.0 + a*a)); } int main(int argc, char *argv) { int done = 0, n, myid, numprocs, i, rc; double PI25DT = ; double mypi, pi, h, sum, x, a; double startwtime, endwtime; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid);

4.25 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Пример 2: Вычисление числа  … n = 0; while (!done) { if (myid == 0) { printf("Enter the number of intervals: "); scanf("%d",&n); startwtime = MPI_Wtime(); } MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) done = 1; else { h = 1.0 / (double) n; sum = 0.0;

4.26 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Пример 2: Вычисление числа  … for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i ­ 0.5); sum += f(x); } mypi = h * sum; MPI_Reduce(&mypi,&pi,1,MPI_DOUBLE,MPI_SUM,0, MPI_COMM_WORLD); if (myid == 0) { printf("pi is approximately %.16f, Error is %.16f\n",pi, fabs(pi ­ PI25DT)); endwtime = MPI_Wtime(); printf("wall clock time = %f\n", endwtime­startwtime); } MPI_Finalize(); }

4.27 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Пример 2: Вычисление числа  … program main include 'mpif.h' double precision PI25DT parameter (PI25DT = d0) double precision mypi, pi, h, sum, x, f, a integer n, myid, numprocs, i, rc c function to integrate f(a) = 4.d0 / (1.d0 + a*a) call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD,myid,ierr ) call MPI_COMM_SIZE( MPI_COMM_WORLD,numprocs,ierr) print *, "Process ", myid, " of ", numprocs 10 if ( myid.eq. 0 ) then write(6,98) 98 format('Enter the number of intervals: ') read(5,99) n 99 format(i10) endif

4.28 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Пример 2: Вычисление числа  … sizetype = 1 sumtype = 2 call MPI_BCAST(n,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr) c check for quit signal if ( n.le. 0 ) goto 30 c calculate the interval size h = 1.0d0/n sum = 0.0d0 do 20 i = myid+1, n, numprocs x = h * (dble(i) ­ 0.5d0) sum = sum + f(x) 20 continue mypi = h * sum

4.29 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Пример 2: Вычисление числа  … c collect all the partial sums call MPI_REDUCE(mypi,pi,1,MPI_DOUBLE_PRECISION, $ MPI_SUM,0,MPI_COMM_WORLD,ierr) c node 0 prints the answer if (myid.eq. 0) then write(6, 97) pi, abs(pi ­ PI25DT) 97 format(' pi is approximately: ', F18.16, $ ' Error is: ', F18.16) endif goto call MPI_FINALIZE(rc) stop end

4.30 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Режимы передачи сообщений… Синхронный (synchronous) – send не возвращает управление, пока не начат receive Буферизуемый (buffered) - send возвращает управление после копирования сообщения в буфер передачи (работа с буфером MPI_Buffer_attatch, MPI_Buffer_detatch ) Стандартный (standard) – режим по умолчанию (синхронный или буферизуемый) По готовности (Ready) – может применяться для передачи данных при гарантированности, что операция приема уже активна (иначе send выдаст сообщение об ошибке)

4.31 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Режимы передачи сообщений… Для операции передачи возможны 8 различных вариантов 4 режима передачи 2 способа блокировки Для операции приема возможны 2 различных варианта 1 режим передачи (standard) 2 способа блокировки

4.32 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Режимы передачи сообщений… Система обозначений функций

4.33 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Проверка завершения операций… Блокирующая проверка int MPI_Wait( MPI_Request *request, MPI_Status *status); при завершении MPI_Wait -для MPI_Isend сообщение переслано или скопировано в буфер, -для MPI_Irecv сообщение скопировано в буфер процесса -request == MPI_REQUST_NULL -status такой же, как и в MPI_Irecv

4.34 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Проверка завершения операций Неблокирующая проверка int MPI_Test( MPI_Request *request, int *flag, MPI_Status *status); при завершении MPI_Test для незавершенной операции пересылки flag == 0

4.35 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Буферизация сообщений

4.36 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Самостоятельное задание. Скалярное умножение векторов Условия: Даны: вектор x, вектор y, p процессов Пусть длина векторов нацело делится на p Схема алгоритма: Ввод данных осуществляет процесс 0 Каждый процесс получает оба вектора Каждый процесс выполняет расчет над своей частью векторов, вычисляемой по рангу (x, y) =  x i y i =   x pi y pi Суммирование промежуточных результатов осуществляет нулевой процесс

4.37 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Вопросы для обсуждения Сложность параллельных программ, разработанных с использованием MPI Проблема отладки

4.38 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Заключение Технология разработки параллельных программ на основе интерфейса передачи данных Стандарт MPI как средство обеспечения мобильности параллельных программ Основные операции передачи сообщений

4.39 ННГУ, Н.Новгород, 2001 Параллельные Гергель В.П. Следующая тема Модели вычислений и методы анализа эффективности - 2