Введение в параллельные вычисления. Технология программирования MPI (день пятый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.

Slides:



Advertisements
Similar presentations
1 Introduction to Collective Operations in MPI l Collective operations are called by all processes in a communicator. MPI_BCAST distributes data from one.
Advertisements

Its.unc.edu 1 Collective Communication University of North Carolina - Chapel Hill ITS - Research Computing Instructor: Mark Reed
Мультиплексирование ввода/вывода Программирование с использованием POSIX thread library.
Астрометрические каталоги К.В.Куимов, ГАИШ МГУ. Определение астрометрического каталога Астрометрический каталог – понятие неопределённое. Например, это.
MPI_REDUCE() Philip Madron Eric Remington. Basic Overview MPI_Reduce() simply applies an MPI operation to select local memory values on each process,
Введение в параллельные вычисления. Технология программирования MPI (день шестой) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Модель «Точно вовремя». Понятие «функционального цикла» (ФЦ), или «цикла исполнения заказа», является основным объектом интегрированной логистики. Функциональным.
Системы отбора. Условные обозначения (1) (2) (3) (4) (5) (6) (7) Математическое моделирование процессов отбора2.
Елена Станиславовна Петрова Учитель-логопед высшей категории ГДОУ детский сад №47 комбинированного вида Фрунзенского района г. Санкт-Петербурга 2011 год.
M ULTIMEDIA Solomeshch Natalia. К ОДЕК Н.264 Т ЕРМИНЫ закодированный снимок порядковый номер счетчика снимка ссылочные снимки Макроблоки типа I Макроблоки.
Половинкин А.Н..  Вычисления общего назначения на GPU  Архитектура GPU  Программная модель выполнения на CUDA  Программирование с использованием CUDA.
Некомпенсаторное агрегирование и рейтингование студентов Авторы: Гончаров Алексей Александрович, Чистяков Вячеслав Васильевич. НФ ГУ ВШЭ 2010 год.
Неотрицательное решение задачи Коши. Нередко постановка задачи требует чтобы фазовые переменные принимали лишь неотрицательные значения. Так, в физических.
Определение необходимого уровня запасов на складе.
Учитель математики Кулакова Т.М. МОУ ООШ №15 г.о Новокуйбышевск Самарской области Сентябрь 2011г.
Сохранение суммы фазовых координат. Важный частный случай представляют системы, в которых в течение всего процесса сохраняется постоянной сумма значений.
Скриптовые языки на примере Perl. Языки программирования Скриптовые Программа (или ее бай-код) интерпретируется Зачастую более высокий уровень абстрагирования.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 8 Методы разработки параллельных программ при использования интерфейса передачи.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Особенности Java. Блок static static { } Создание и уничтожение объектов  new – создание объекта  finalyze()
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
Демидов А.В г. Операционные системы Лекция 3 Процессы.
1 Генерация контекстных ограничений для баз данных Выполнил: Жолудев В. Научный руководитель: Терехов А.Н. Рецензент: Иванов А.Н.
Введение в параллельные вычисления. Технология программирования MPI (день седьмой) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Михаил Налётов Активные продажи на сайте. Может ли ваш сайт работать еще эффективнее?
Введение в параллельные вычисления. Технология программирования MPI (день третий) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Основы цифровой обработки речевых сигналов. Общая схема процесса речеобразования x[n] – дискретные отсчеты сигнала возбуждения y[n] – дискретные отсчеты.
Кафедра фотоники и оптоинформатики Санкт-Петербургский государственный университет информационных технологий, механики и оптики А.В.Павлов Обработка информации.
PHP как язык программирования. Типы данных логические величины int, integer – целые числа real, double, float – вещественные числа string – строки array.
Введение в параллельные вычисления. Технология программирования MPI (день второй) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 16 Методы разработки параллельных программ для многопроцессорных систем с общей.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 4 Методы разработки параллельных программ при использования интерфейса передачи.
Формантный синтезатор речи. Часть 1. Полюсы и нули – иное понимание Полюс – это пара чисел (B, F), B – ширина форманты, F – частота форманты Нуль – это.
MPI Collective Communication CS 524 – High-Performance Computing.
Деревья и их представление в STL Презентацию подготовила Чиркова Ольга, 2 подгруппа, группа 271ПИ.
Маршрут, цепь, цикл Маршрутом называют последовательность вершин и ребер, в которой любые два соседних элемента инцидентны (т.е. соединены). Например:
Формы в HTML. Элемент FORM Элемент уровня «блок» Управляющие элементы Просто текст Атрибуты: action – url обработчика method – post или get enctype –
Демидов А.В г. Операционные системы Лекция 4 Работа с файлами.
Collective Communication.  Collective communication is defined as communication that involves a group of processes  More restrictive than point to point.
Message Passing Interface. Message Passing Interface (MPI) Message Passing Interface (MPI) is a specification designed for parallel applications. The.
ВВЕДЕНИЕ В ВЫЧИСЛИТЕЛЬНУЮ МАТЕМАТИКУ Лекция 5 6 октября 2009 ВЫЧИСЛИТЕЛЬНАЯ ЛИНЕЙНАЯ АЛГЕБРА.
9 октября 2004 Поиск статических изображений по содержанию: использование текстового запроса Наталья Васильева
Optimization of applications for Intel* platforms 1 IA64. Архитектура и обзор системы команд Юрий Долгов, Дмитрий Шкурко.
TMG Tel: 8 (495) Fax: 8 (477) Technology Management Group ООО «TMG» PayKeeper.
Классификация, кластеризация и поиск изображений на основе низкоуровневых характеристик Наталья Васильева Руководитель: Новиков Б. А.
XML Схемы XML документов. XML Schema созданая Microsoft позволяет избавиться от DTD блоков. Основа – использование пространств имен и очень точная типизация.
Введение в параллельные вычисления. Технология программирования MPI (день четвертый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Parallel Programming with Java
Parallel Programming and Algorithms – MPI Collective Operations David Monismith CS599 Feb. 10, 2015 Based upon MPI: A Message-Passing Interface Standard.
Summary of MPI commands Luis Basurto. Large scale systems Shared Memory systems – Memory is shared among processors Distributed memory systems – Each.
Алгебра логики это раздел математики, изучающий высказывания, рассматриваемые со стороны их логических значений (истинности или ложности) и логических.
Lecture 6: Message Passing Interface (MPI). Parallel Programming Models Message Passing Model Used on Distributed memory MIMD architectures Multiple processes.
MPI Jakub Yaghob. Literature and references Books Gropp W., Lusk E., Skjellum A.: Using MPI: Portable Parallel Programming with the Message-Passing Interface,
-1.1- MPI Lectured by: Nguyễn Đức Thái Prepared by: Thoại Nam.
MPI Derived Data Types and Collective Communication
‘For and Against’ Essays Useful tips. Plan Introduction - Paragraph 1 (state topic – summary of the topic without giving your opinion) Main Body – Paragraph.
Опыт Технопарка БНТУ по разработке проектной заявки Что скрывает CBHE? Томашевич Наталия Юрьевна Руководитель Центра МНТС Научно-технологический парк БНТУ.
MPI_Alltoall By: Jason Michalske. What is MPI_Alltoall? Each process sends distinct data to each receiver. The Jth block of process I is received by process.
Computer Science Department
Collectives Reduce Scatter Gather Many more.
MPI Jakub Yaghob.
Introduction to MPI Programming
Computer Science Department
Collective Communication with MPI
An Introduction to Parallel Programming with MPI
Точечные взаимодействия
High Performance Parallel Programming
MPI: Message Passing Interface
Решение типовых расчетных задач по формулам. Определение массовой доли элементов Массовая доля элемента ω(Э) % - это отношение массы данного элемента.
Computer Science Department
Presentation transcript:

Введение в параллельные вычисления. Технология программирования MPI (день пятый) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных информационных технологий НИВЦ МГУ

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

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

MPI MPI_BCAST(BUF, COUNT, DATATYPE, ROOT, COMM, IERR) BUF(*) INTEGER COUNT, DATATYPE, ROOT, COMM, IERR Рассылка сообщения от процесса ROOT всем процессам данного коммуникатора. Значения параметров COUNT, DATATYPE, ROOT и COMM должны быть одинаковыми у всех процессов.

MPI данные процесс ы

MPI MPI_GATHER(SBUF, SCOUNT, STYPE, RBUF, RCOUNT, RTYPE, ROOT, COMM, IERR) SBUF(*), RBUF(*) INTEGER SCOUNT, STYPE, RCOUNT, RTYPE, ROOT, COMM, IERR Сборка данных из массивов SBUF со всех процессов в буфере RBUF процесса ROOT. Данные сохраняются в порядке возрастания номеров процессов.

MPI На процессе ROOT существенными являются значения всех параметров, а на остальных процессах — только значения параметров SBUF, SCOUNT, STYPE, ROOT и COMM. Значения параметров ROOT и COMM должны быть одинаковыми у всех процессов. Параметр RCOUNT у процесса ROOT обозначает число элементов типа RTYPE, принимаемых а от каждого процесса.

MPI данные процесс ы

MPI MPI_GATHERV(SBUF, SCOUNT, STYPE, RBUF, RCOUNTS, DISPLS, RTYPE, ROOT, COMM, IERR) SBUF(*), RBUF(*) INTEGER SCOUNT, STYPE, RCOUNTS(*), DISPLS(*), RTYPE, ROOT, COMM, IERR Сборка различного количества данных из массивов SBUF. Порядок расположения задает массив DISPLS.

MPI RCOUNTS – целочисленный массив, содержащий количество элементов, передаваемых от каждого процесса (индекс равен рангу адресата, длина равна числу процессов в коммуникаторе). DISPLS – целочисленный массив, содержащий смещения относительно начала массива RBUF (индекс равен рангу адресата, длина равна числу процессов в коммуникаторе).

MPI MPI_SCATTER(SBUF, SCOUNT, STYPE, RBUF, RCOUNT, RTYPE, ROOT, COMM, IERR) SBUF(*), RBUF(*) INTEGER SCOUNT, STYPE, RCOUNT, RTYPE, ROOT, COMM, IERR Рассыл ка данных из массива SBUF процесса ROOT в массивы RBUF всех процесс ов. Данные рассылаются в порядке возрастания номеров процессов.

MPI На процессе ROOT существенными являются значения всех параметров, а на всех остальных процессах — только значения параметров RBUF, RCOUNT, RTYPE, SOURCE и COMM.. Значения параметров SOURCE и COMM должны быть одинаковыми у всех процессов.

MPI данные процесс ы

MPI real sbuf(SIZE, SIZE), rbuf(SIZE) if(rank.eq. 0) then do 1 i=1,SIZE do 1 j=1,SIZE 1 sbuf(i,j)=... end if if (numtasks.eq. SIZE) then call MPI_SCATTER(sbuf, SIZE, MPI_REAL, & rbuf, SIZE, MPI_REAL, & 0, MPI_COMM_WORLD, ierr) endif

MPI MPI_SCATTERV(SBUF, SCOUNTS, DISPLS, STYPE, RBUF, RCOUNT, RTYPE, ROOT, COMM, IERR) SBUF(*), RBUF(*) INTEGER SCOUNTS(*), DISPLS(*), STYPE, RCOUNT, RTYPE, ROOT, COMM, IERR Рассыл ка различного количества данных из массива SBUF. Начало порций рассылаемых задает массив DISPLS.

MPI SCOUNTS – целочисленный массив, содержащий количество элементов, передаваемых каждому процессу (индекс равен рангу адресата, длина равна числу процессов в коммуникаторе). DISPLS – целочисленный массив, содержащий смещения относительно начала массива SBUF (индекс равен рангу адресата, длина равна числу процессов в коммуникаторе).

MPI MPI_ALLGATHER(SBUF, SCOUNT, STYPE, RBUF, RCOUNT, RTYPE, COMM, IERR) SBUF(*), RBUF(*) INTEGER SCOUNT, STYPE, RCOUNT, RTYPE, COMM, IERR Сборка данных из массивов SBUF со всех процессов в буфере RBUF каждого процесса. Данные сохраняются в порядке возрастания номеров процессов.

MPI данные процесс ы

MPI MPI_ALLGATHERV(SBUF, SCOUNT, STYPE, RBUF, RCOUNTS, DISPLS, RTYPE, COMM, IERR) SBUF(*), RBUF(*) INTEGER SCOUNT, STYPE, RCOUNTS(*), DISPLS(*), RTYPE, COMM, IERR Сборка на всех процессах различного количества данных из SBUF. Порядок расположения задает массив DISPLS.

MPI MPI_ALLTOALL(SBUF, SCOUNT, STYPE, RBUF, RCOUNT, RTYPE, COMM, IERR) SBUF(*), RBUF(*) INTEGER SCOUNT, STYPE, RCOUNT, RTYPE, COMM, IERR Рассылка каждым процессом различных данных всем другим процессам. J-й блок данных i-го процесса попадает в i-й блок j-го процесса.

MPI данные процесс ы

MPI MPI_ALLTOALLV(SBUF, SCOUNTS, SDISPLS, STYPE, RBUF, RCOUNTS, RDISPLS, RTYPE, COMM, IERR) SBUF(*), RBUF(*) INTEGER SCOUNTS(*), SDISPLS(*), STYPE, RCOUNTS(*), RDISPLS(*), RTYPE, COMM, IERR Рассылка со всех процессов различного количества данных всем другим процессам.

MPI MPI_REDUCE(SBUF, RBUF, COUNT, DATATYPE, OP, ROOT, COMM, IERR) SBUF(*), RBUF(*) INTEGER COUNT, DATATYPE, OP, ROOT, COMM, IERR В ыполнение COUNT независимых глобальных операций OP н ад соответствующими элементами массивов SBUF. Результат получается в массиве RBUF процесса ROOT.

MPI Типы предопределенных глобальных операций: MPI_MAX, MPI_MIN – максимальное и минимальное значения; MPI_SUM, MPI_PROD – глобальная сумма и глобальное произведение; MPI_LAND, MPI_LOR, MPI_LXOR – логические “И”, “ИЛИ”, искл. “ИЛИ”; MPI_BAND, MPI_BOR, MPI_BXOR – побитовые “И”, “ИЛИ”, искл. “ИЛИ”

MPI MPI_ALLREDUCE(SBUF, RBUF, COUNT, DATATYPE, OP, COMM, IERR) SBUF(*), RBUF(*) INTEGER COUNT, DATATYPE, OP, COMM, IERR В ыполнение COUNT независимых глобальных операций OP н ад соответствующими элементами массивов SBUF. Результат получается в массиве RBUF каждого процесса.

MPI MPI_REDUCE_SCATTER(SBUF, RBUF, RCOUNTS, DATATYPE, OP, COMM, IERR) SBUF(*), RBUF(*) INTEGER RCOUNTS(*), DATATYPE, OP, COMM, IERR В ыполнение RCOUNTS(i) независимых глобальных операций OP н ад соответствующими элементами массивов SBUF.

MPI Сначала выполняются глобальные операции, затем результат рассылается по процессам. I-й процесс получает RCOUNTS(i) значений результата и помещает в массив RBUF.

MPI MPI_SCAN(SBUF, RBUF, COUNT, DATATYPE, OP, COMM, IERR) SBUF(*), RBUF(*) INTEGER COUNT, DATATYPE, OP, COMM, IERR В ыполнение COUNT независимых частичных глобальных операций OP н ад соответствующими элементами массивов SBUF.

MPI I-й процесс выполняет глобальную операцию над соответствующими элементами массива SBUF процессов 0…I и помещает результат в массив RBUF. Окончательный результат глобальной операции получается в массиве RBUF последнего процесса.

MPI MPI_OP_CREATE(FUNC, COMMUTE, OP, IERR) EXTERNAL FUNCTION LOGICAL COMMUTE INTEGER OP, IERR Создание пользовательской глобальной операции. Если COMMUTE=.TRUE., то операция должна быть коммутативной и ассоциативной. Иначе порядок фиксируется по увеличению номеров процессов.

MPI FUNCTION FUNC(INVEC(*), INOUTVEC(*), LEN, TYPE) INVEC(LEN), INOUTVEC(LEN) INTEGER LEN, TYPE Интерфейс пользовательской функции. MPI_OP_FREE(OP, IERR) INTEGER OP, IERR Уничтожение пользовательской глобальной операции.

MPI do i=1,n s(i)=0.0 end do do i=1,n do j=1,m s(i)=s(i)+a(i,j) end do call MPI_ALLREDUCE(s,r,n,REAL,MPI_SUM, & MPI_COMM_WORLD, IERR)