- Введение в параллельное программирование

Презентация "Введение в параллельное программирование" по информатике – проект, доклад

Слайд 1
Слайд 2
Слайд 3
Слайд 4
Слайд 5
Слайд 6
Слайд 7
Слайд 8
Слайд 9
Слайд 10
Слайд 11
Слайд 12
Слайд 13
Слайд 14
Слайд 15
Слайд 16
Слайд 17
Слайд 18
Слайд 19
Слайд 20
Слайд 21
Слайд 22
Слайд 23
Слайд 24
Слайд 25
Слайд 26
Слайд 27
Слайд 28
Слайд 29
Слайд 30
Слайд 31

Презентацию на тему "Введение в параллельное программирование" можно скачать абсолютно бесплатно на нашем сайте. Предмет проекта: Информатика. Красочные слайды и иллюстрации помогут вам заинтересовать своих одноклассников или аудиторию. Для просмотра содержимого воспользуйтесь плеером, или если вы хотите скачать доклад - нажмите на соответствующий текст под плеером. Презентация содержит 31 слайд(ов).

Слайды презентации

Введение в параллельное программирование. Максим Городничев Летняя школа отдела МО ВВС ИВМиМГ СО РАН http://ssd.sscc.ru
Слайд 1

Введение в параллельное программирование

Максим Городничев Летняя школа отдела МО ВВС ИВМиМГ СО РАН http://ssd.sscc.ru

Содержание лекции. Формальный подход к определению параллельной программы Меры качества параллельных программ Предел ускорения вычислений при распараллеливании Реализация параллельных программ в модели общей памяти и в модели распределенной памяти Программирование в распределенной памяти: MPI Пример
Слайд 2

Содержание лекции

Формальный подход к определению параллельной программы Меры качества параллельных программ Предел ускорения вычислений при распараллеливании Реализация параллельных программ в модели общей памяти и в модели распределенной памяти Программирование в распределенной памяти: MPI Пример задачи: численное решение уравнения Пуассона Работа на вычислительных системах Сибирского суперкомпьютерного центра По ходу лекции: комментарии об ошибках, характерных для параллельного программирования (дедлоки, несогласованный доступ к данным)

Последовательное и параллельное. Задача: a = b*c+d*e; Последовательная программа: Load r1,b Load r2, c Mul r1, r1, r2 Load r2, d Load r3, d Mul r2, r2, r3 Sum r1, r1, r2 Store a, r1. Алгоритм задает необходимый частичный порядок (потоковое управление):
Слайд 3

Последовательное и параллельное

Задача: a = b*c+d*e; Последовательная программа: Load r1,b Load r2, c Mul r1, r1, r2 Load r2, d Load r3, d Mul r2, r2, r3 Sum r1, r1, r2 Store a, r1

Алгоритм задает необходимый частичный порядок (потоковое управление):

Представление алгоритма A, вычисляющего функцию F. Представление алгоритма A – это набор S = (X, F, C, M), где X – конечное множество переменных F – конечное множество операций С – управление (множество ограничений на порядок операций) = потоковое управление + прямое управление М – функция, задающая
Слайд 4

Представление алгоритма A, вычисляющего функцию F

Представление алгоритма A – это набор S = (X, F, C, M), где X – конечное множество переменных F – конечное множество операций С – управление (множество ограничений на порядок операций) = потоковое управление + прямое управление М – функция, задающая отображение множеств X и F в физические устройства параллельной вычислительной машины

Реализация алгоритма A, представленного в форме S. – это выполнение операций в некотором порядке, не противоречащим управлению C Представление корректно, если любая реализация вычисляет функцию F, т.е. С содержит потоковое управление.
Слайд 5

Реализация алгоритма A, представленного в форме S

– это выполнение операций в некотором порядке, не противоречащим управлению C Представление корректно, если любая реализация вычисляет функцию F, т.е. С содержит потоковое управление.

Последовательное и параллельное: резюме. Если множество реализаций алгоритма A, представленного в форме S содержит более одной реализации, то представление S называется параллельным. Если это множество одноэлементно, то представление S назвается последовательным.
Слайд 6

Последовательное и параллельное: резюме

Если множество реализаций алгоритма A, представленного в форме S содержит более одной реализации, то представление S называется параллельным. Если это множество одноэлементно, то представление S назвается последовательным.

Меры качества параллельной реализации. Ускорение параллельной реализации относительно последовательной: S = Ts/Tp, где Ts – время выполнения последовательной программы, Tp – параллельной Эффективность использования N процессоров относительно одного E = Ts/(N*TN), где TN – время выполнения параллельн
Слайд 7

Меры качества параллельной реализации

Ускорение параллельной реализации относительно последовательной: S = Ts/Tp, где Ts – время выполнения последовательной программы, Tp – параллельной Эффективность использования N процессоров относительно одного E = Ts/(N*TN), где TN – время выполнения параллельной программы на N процессорах

Предел ускорения: Закон Амдала. Если P – это доля вычислений, которые могут быть выполнены параллельно, а 1-P – доля последовательной части, то максимальное ускорение, которое можно получить на N процессорах равно 1 ((1-P)+(P/N))
Слайд 8

Предел ускорения: Закон Амдала

Если P – это доля вычислений, которые могут быть выполнены параллельно, а 1-P – доля последовательной части, то максимальное ускорение, которое можно получить на N процессорах равно 1 ((1-P)+(P/N))

Закон Амдала: диаграмма. Изображение из Википедии
Слайд 9

Закон Амдала: диаграмма

Изображение из Википедии

Иерархия параллельных вычислительных систем. Микропроцессоры SMP-узлы: объединения микропроцессоров над общим полем памяти Мультикомпьютеры: SMP-узлы, связанные выделенной сетью передачи данных Grid: объединение произвольных ресурсов
Слайд 10

Иерархия параллельных вычислительных систем

Микропроцессоры SMP-узлы: объединения микропроцессоров над общим полем памяти Мультикомпьютеры: SMP-узлы, связанные выделенной сетью передачи данных Grid: объединение произвольных ресурсов

От алгоритма к программе: взаимодействующие процессы. Программа часто задается как множество взаимодействующих процессов. Системы программирования отличаются средствами задания взаимодействия.
Слайд 11

От алгоритма к программе: взаимодействующие процессы

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

Модель программирования в общей памяти
Слайд 12

Модель программирования в общей памяти

Модель программирования в разделенной памяти: обмен сообщениями
Слайд 13

Модель программирования в разделенной памяти: обмен сообщениями

Пример параллельной программы в модели общей памяти: OpenMP. #include  int main() {  #pragma omp parallel shared(a, b, c) private(i) { #pragma omp for for (i = 0; i  }
Слайд 14

Пример параллельной программы в модели общей памяти: OpenMP

#include int main() { #pragma omp parallel shared(a, b, c) private(i) { #pragma omp for for (i = 0; i }

Параллельное программирование в модели разделенной памяти: Message Passing Interface
Слайд 15

Параллельное программирование в модели разделенной памяти: Message Passing Interface

Первый пример: идентификация процессов. #include  #include  #include  int main(int argc, char** argv) { int rank, size; char hostname[50]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); gethostname(hostname, 50); std::cerr
Слайд 16

Первый пример: идентификация процессов

#include #include #include int main(int argc, char** argv) { int rank, size; char hostname[50]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); gethostname(hostname, 50); std::cerr

Взаимодействия точка-точка: MPI_Send, MPI_Recv. if(size!=2){ std::cerr
Слайд 17

Взаимодействия точка-точка: MPI_Send, MPI_Recv

if(size!=2){ std::cerr

MPI_Sendrecv. intBuff = 1234; std::cerr
Слайд 18

MPI_Sendrecv

intBuff = 1234; std::cerr

Групповые взаимодействия: MPI_Bcast, MPI_Barrier. int intBuff = rank; std::cerr
Слайд 19

Групповые взаимодействия: MPI_Bcast, MPI_Barrier

int intBuff = rank; std::cerr

MPI_Reduce, MPI_Allreduce. int intBuff = 0; std::cerr
Слайд 20

MPI_Reduce, MPI_Allreduce

int intBuff = 0; std::cerr

Асинхронные взаимодействия точка-точка: MPI_Isend, MPI_Iresv. int intBuff = rank; MPI_Request rq; MPI_Isend(&intBuff, 1, MPI_INT, !rank, 0, MPI_COMM_WORLD, &rq); for(int i = 0; i
Слайд 21

Асинхронные взаимодействия точка-точка: MPI_Isend, MPI_Iresv

int intBuff = rank; MPI_Request rq; MPI_Isend(&intBuff, 1, MPI_INT, !rank, 0, MPI_COMM_WORLD, &rq); for(int i = 0; i

Другие функции. Сбор распределенных векторов: MPI_Gather, MPI_Allgather Распределение вектора: MPI_Scatter и т.д.
Слайд 22

Другие функции

Сбор распределенных векторов: MPI_Gather, MPI_Allgather Распределение вектора: MPI_Scatter и т.д.

“The standard includes:” (Section 1.7 of MPI 2.1 Standard). Point-to-point communication Datatypes Collective operations Process groups Communication contexts Process topologies Environmental Management and inquiry The info object Process creation and management One-sided communication External inte
Слайд 23

“The standard includes:” (Section 1.7 of MPI 2.1 Standard)

Point-to-point communication Datatypes Collective operations Process groups Communication contexts Process topologies Environmental Management and inquiry The info object Process creation and management One-sided communication External interfaces Parallel file I/O Language Bindings for Fortran, C and C++ Profiling interface

Пример решения уравнения Пуассона явным методом. Двумерное уравнение: d2u/dx2+d2u/dy2-a*u=f Дискретизация: (u(i+1)j-2uij+u(i-1)j)/h2+ (ui(j+1)-2uij+ui(j-1))/h2-a*uij = fij Итеративный метод: un+1ij = 0.25(un(i+1)j+un(i-1)j+uni(j+1)+uni(j-1)-h2fij)
Слайд 24

Пример решения уравнения Пуассона явным методом

Двумерное уравнение: d2u/dx2+d2u/dy2-a*u=f Дискретизация: (u(i+1)j-2uij+u(i-1)j)/h2+ (ui(j+1)-2uij+ui(j-1))/h2-a*uij = fij Итеративный метод: un+1ij = 0.25(un(i+1)j+un(i-1)j+uni(j+1)+uni(j-1)-h2fij)

Декомпозиция задачи. Как организовать коммуникации на разрезе?
Слайд 25

Декомпозиция задачи

Как организовать коммуникации на разрезе?

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

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

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

О кластере НКС-30T nks-30t.sscc.ru. 32 двойных блейд-серверов HP BL2x220c, в каждом узле два 4-х ядерных процессора Intel Xeon Е5450 (Intel(R) Xeon(R) CPU E5450 @ 3.00GHz) = 512 ядер Пиковая производительнось: ~6 ТФлопс. Операционная система: RedHat Linux (RHEL 5u2) Очередь заданий / система пакетно
Слайд 27

О кластере НКС-30T nks-30t.sscc.ru

32 двойных блейд-серверов HP BL2x220c, в каждом узле два 4-х ядерных процессора Intel Xeon Е5450 (Intel(R) Xeon(R) CPU E5450 @ 3.00GHz) = 512 ядер Пиковая производительнось: ~6 ТФлопс. Операционная система: RedHat Linux (RHEL 5u2) Очередь заданий / система пакетной обработки: PBS Pro 10.0 Компиляторы: Intel C/C++ и Fortran 11.0.081 Professional Edition, включают в себя Intel MKL, Intel IPP ... Intel MPI 3.2.0.011 и Intel TraceAnalyzer&Collector 7.2.0.011

Работа на кластере НКС-30T. 1 Вход с помощью программы putty.exe: 1.1Имя сервера: nks-30t.sscc.ru 1.2 Логин: 1.3 Пароль: 2. Панельный файловый менеджер: mc 3. Создать в домашней директории папку для своей работы 4. Скопировать себе примеры (содержимое папки ~/examples) 5. Запустить пример: qsub run.
Слайд 28

Работа на кластере НКС-30T

1 Вход с помощью программы putty.exe: 1.1Имя сервера: nks-30t.sscc.ru 1.2 Логин: 1.3 Пароль: 2. Панельный файловый менеджер: mc 3. Создать в домашней директории папку для своей работы 4. Скопировать себе примеры (содержимое папки ~/examples) 5. Запустить пример: qsub run.sh 6. Смотреть очередь: qstat 7. Удалить задачу из очереди: qdel 8. Компиляция программы mpiexample.cpp: mpiicpc –o mpiexample.exe mpiexample.cpp 9. Компиляция программы mpiexample.c: mpiicc –o mpiexample.exe mpiexample.c

Схема устройства кластера. Головной узел. Высокоскоростная сеть «Медленная» сеть для управления и устройства общей файловой системы. Internet. Вычислительные узлы. Машина пользователя
Слайд 29

Схема устройства кластера

Головной узел

Высокоскоростная сеть «Медленная» сеть для управления и устройства общей файловой системы

Internet

Вычислительные узлы

Машина пользователя

Устройство скрипта запуска задачи run.sh. #!/bin/bash #PBS -V #PBS -r n #PBS -l nodes=:ppn=,cput=00:10:00,walltime=15:00 #PBS -k oe #PBS -N name_of_the_job #PBS -j oe date cd $PBS_O_WORKDIR pwd mpirun -r ssh -genv I_MPI_DEVICE rdma -genv I_MPI_RDMA_TRANSLATION_CACHE disable -n   date
Слайд 30

Устройство скрипта запуска задачи run.sh

#!/bin/bash #PBS -V #PBS -r n #PBS -l nodes=:ppn=,cput=00:10:00,walltime=15:00 #PBS -k oe #PBS -N name_of_the_job #PBS -j oe date cd $PBS_O_WORKDIR pwd mpirun -r ssh -genv I_MPI_DEVICE rdma -genv I_MPI_RDMA_TRANSLATION_CACHE disable -n date

Где найти информацию? MPI: http://www.mpi-forum.org/
Слайд 31

Где найти информацию?

MPI: http://www.mpi-forum.org/

Список похожих презентаций

Введение в программирование Turbo Pascal

Введение в программирование Turbo Pascal

Тема 1: Введение в программирование. Какой язык понимает процессор? Процессор понимает язык электрических сигналов. Он не различает сильный или слабый ...
Введение в программирование на Java

Введение в программирование на Java

Курс – Объектно-ориентированное программирование Время изучения - 4 курс, 7 семестр Направление подготовки - "230105 - Программное обеспечение вычислительной ...
Введение в программирование

Введение в программирование

Основные понятия. Программирование – это раздел информатики, занимающийся вопросами разработки программ управления компьютером. Язык программирования ...
Введение в программирование

Введение в программирование

Тема 1: Введение в программирование. Какой язык понимает процессор? Процессор понимает язык электрических сигналов. Он не различает сильный или слабый ...
Введение в программирование

Введение в программирование

«Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно.». «Кодируй так, как будто человек, ...
Линейная структура программы. Введение в программирование

Линейная структура программы. Введение в программирование

Программа имеет линейную структуру, если все операторы (команды) выполняются последовательно друг за другом. . Задача. Рассмотрим для примера программу ...
Параллельное программирование WinAPI и OpenMP 7

Параллельное программирование WinAPI и OpenMP 7

Литература. 1. И. Одинцов Профессиональное программирование. Системный подход. – «БХВ-Петербург» - 2004. – 610 с. 2. Джин Бэкон, Тим Харрис Операционные ...
Введение в объектно-ориентированное программирование

Введение в объектно-ориентированное программирование

X, Y – координаты центра круга;. Draw R – радиус круга; Color – цвет круга. 1 способ. Draw1: R=10; x=5; y=10; color=3; Draw2: R=45; x=15; y=3; color=2;. ...
Введение в MSC

Введение в MSC

MSC.MVISION – база данных, содержащая свойства материалов. Поставщики информации о материалах. Потребители информации о материалах. Контроль соответствия ...
Введение в алгебру логики

Введение в алгебру логики

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

Динамическое программирование

Основные определения (подробно). Многие задачи практического программирования являются задачами на перебор вариантов и выбор среди этих вариантов ...
Введение в язык программирования Паскаль

Введение в язык программирования Паскаль

Введение. Центральным понятием программирования является алгоритм. С него начинается работа над программой, а от качества алгоритма зависит ее успешное ...
Алгоритмизация и программирование в Pascal

Алгоритмизация и программирование в Pascal

Вводная часть. Процесс решения задачи на ПК – это совместная деятельность человека и машины. Его условно можно разделить на несколько этапов. Человеку ...
Введение в информатику

Введение в информатику

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

Введение в информатику

Понятие об информации. Информация – это сведения о предметах, событиях, явлениях и процессах окружающего мира, представления, суждения и фантазии ...
Введение в информатику

Введение в информатику

Введение в информатику. Информатика-это комплексная наука об информации и информационных процессах, аппаратных и программных средствах информатизации ...
Введение в информатику

Введение в информатику

Давайте посмотрим вокруг себя и попробуем ответить на вопрос: с чем нам приходится иметь дело в повседневной жизни? Во-первых, это множество материальных ...
Введение в информатику

Введение в информатику

Термин «информация». Происходит от латинского слова informatio , что означает разъяснение, осведомление, изложение. Информация — сведения об объектах ...
Введение в Интернет

Введение в Интернет

Логически взаимосвязана пространством глобальных уникальных адресов, основанных на Интернет-протоколе (IP) или на последующих расширениях или преемниках ...

Конспекты

Структурное, модульное, объектно-ориентированное программирование, облачные технологии

Структурное, модульное, объектно-ориентированное программирование, облачные технологии

УРОК 5. Класс:. 10. Дата проведения:. . Тема урока:. . Структурное, модульное, объектно-ориентированное программирование, облачные технологии. ...
Линейное программирование на языке TurboPascal

Линейное программирование на языке TurboPascal

Интегрированный урок информатика и экология 7 классе. Тема урока : Линейное программирование на языке TurboPascal. Цель:.  . Сформировать навыки ...
Введение в предмет ИНФОРМАТИКА И ИКТ

Введение в предмет ИНФОРМАТИКА И ИКТ

Тема урока:. Введение в предмет ИНФОРМАТИКА И ИКТ. . Предмет:. Информатика и ИКТ. . Автор:. Гущенко Светлана Александровна. Цели и задачи ...
Введение в предмет Вводный инструктаж по технике безопасности при работе на ПК

Введение в предмет Вводный инструктаж по технике безопасности при работе на ПК

Тема урока: Введение в предмет. . Вводный инструктаж по технике безопасности при работе на ПК. . . Цели урока:. . познакомить учащихся с ...
Введение в HTML

Введение в HTML

Введение в HTML. Зачем вам вообще нужно делать страницу. Бобчинский: Я прошу вас покорнейше, как поедете в Петербург, скажите всем там вельможам ...
WEB- программирование

WEB- программирование

Коммунальное Государственное Учреждение. «Первомайский комплекс «Общеобразовательная средняя школа – детский сад имени Д.М. Карбышева» отдела образования ...

Советы как сделать хороший доклад презентации или проекта

  1. Постарайтесь вовлечь аудиторию в рассказ, настройте взаимодействие с аудиторией с помощью наводящих вопросов, игровой части, не бойтесь пошутить и искренне улыбнуться (где это уместно).
  2. Старайтесь объяснять слайд своими словами, добавлять дополнительные интересные факты, не нужно просто читать информацию со слайдов, ее аудитория может прочитать и сама.
  3. Не нужно перегружать слайды Вашего проекта текстовыми блоками, больше иллюстраций и минимум текста позволят лучше донести информацию и привлечь внимание. На слайде должна быть только ключевая информация, остальное лучше рассказать слушателям устно.
  4. Текст должен быть хорошо читаемым, иначе аудитория не сможет увидеть подаваемую информацию, будет сильно отвлекаться от рассказа, пытаясь хоть что-то разобрать, или вовсе утратит весь интерес. Для этого нужно правильно подобрать шрифт, учитывая, где и как будет происходить трансляция презентации, а также правильно подобрать сочетание фона и текста.
  5. Важно провести репетицию Вашего доклада, продумать, как Вы поздороваетесь с аудиторией, что скажете первым, как закончите презентацию. Все приходит с опытом.
  6. Правильно подберите наряд, т.к. одежда докладчика также играет большую роль в восприятии его выступления.
  7. Старайтесь говорить уверенно, плавно и связно.
  8. Старайтесь получить удовольствие от выступления, тогда Вы сможете быть более непринужденным и будете меньше волноваться.

Информация о презентации

Ваша оценка: Оцените презентацию по шкале от 1 до 5 баллов
Дата добавления:16 февраля 2019
Категория:Информатика
Содержит:31 слайд(ов)
Поделись с друзьями:
Скачать презентацию
Смотреть советы по подготовке презентации