🗊Презентация Открытый стандарт Open MP

Нажмите для полного просмотра!
Открытый стандарт Open MP, слайд №1Открытый стандарт Open MP, слайд №2Открытый стандарт Open MP, слайд №3Открытый стандарт Open MP, слайд №4Открытый стандарт Open MP, слайд №5Открытый стандарт Open MP, слайд №6Открытый стандарт Open MP, слайд №7Открытый стандарт Open MP, слайд №8Открытый стандарт Open MP, слайд №9Открытый стандарт Open MP, слайд №10Открытый стандарт Open MP, слайд №11Открытый стандарт Open MP, слайд №12Открытый стандарт Open MP, слайд №13Открытый стандарт Open MP, слайд №14Открытый стандарт Open MP, слайд №15Открытый стандарт Open MP, слайд №16Открытый стандарт Open MP, слайд №17Открытый стандарт Open MP, слайд №18Открытый стандарт Open MP, слайд №19Открытый стандарт Open MP, слайд №20Открытый стандарт Open MP, слайд №21Открытый стандарт Open MP, слайд №22Открытый стандарт Open MP, слайд №23Открытый стандарт Open MP, слайд №24Открытый стандарт Open MP, слайд №25Открытый стандарт Open MP, слайд №26Открытый стандарт Open MP, слайд №27Открытый стандарт Open MP, слайд №28Открытый стандарт Open MP, слайд №29Открытый стандарт Open MP, слайд №30Открытый стандарт Open MP, слайд №31Открытый стандарт Open MP, слайд №32

Содержание

Вы можете ознакомиться и скачать презентацию на тему Открытый стандарт Open MP. Доклад-сообщение содержит 32 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Open MP
Описание слайда:
Open MP

Слайд 2





Хотим все, сразу и бесплатно
Программисты всегда мечтали, что в их программы параллелизм проберется сам, незаметно и не отвлекая их от более важных дел.
Описание слайда:
Хотим все, сразу и бесплатно Программисты всегда мечтали, что в их программы параллелизм проберется сам, незаметно и не отвлекая их от более важных дел.

Слайд 3





OpenMP
Открытый стандарт OpenMP Architecture Review Board
Windows, Linux, Mac OS X, Solaris
«Учредители»:
Описание слайда:
OpenMP Открытый стандарт OpenMP Architecture Review Board Windows, Linux, Mac OS X, Solaris «Учредители»:

Слайд 4





Поддержка OpenMP
Microsoft Visual Studio 2005 и 2008 поддерживает OpenMP 2.0 в редакциях Professional и Team System, 2010 - в редакциях Professional, Premium и Ultimate, 2012 - во всех редакциях.
GCC 4.2 поддерживает OpenMP
Intel C++ Compiler поддерживает версию OpenMP 3.0.
Описание слайда:
Поддержка OpenMP Microsoft Visual Studio 2005 и 2008 поддерживает OpenMP 2.0 в редакциях Professional и Team System, 2010 - в редакциях Professional, Premium и Ultimate, 2012 - во всех редакциях. GCC 4.2 поддерживает OpenMP Intel C++ Compiler поддерживает версию OpenMP 3.0.

Слайд 5





Что такое OpenMP?
Стандарт
Библиотека времени выполнения
Поддержка в компиляторе
Описание слайда:
Что такое OpenMP? Стандарт Библиотека времени выполнения Поддержка в компиляторе

Слайд 6





Что такое OpenMP?
OpenMP подразумевает маркировку параллельного кода специальными директивами. Параллелизация происходит «почти автоматически».
Паралелльные участки кода соседствуют с последовательными
1997 г – Fortran, 
1998 г – C++
ЧУДО!!!
Описание слайда:
Что такое OpenMP? OpenMP подразумевает маркировку параллельного кода специальными директивами. Параллелизация происходит «почти автоматически». Паралелльные участки кода соседствуют с последовательными 1997 г – Fortran, 1998 г – C++ ЧУДО!!!

Слайд 7





OpenMP-программа
Типичная схема
Главный поток создает несколько вспомогательных и заставляет их считать задачу параллельно
Описание слайда:
OpenMP-программа Типичная схема Главный поток создает несколько вспомогательных и заставляет их считать задачу параллельно

Слайд 8





Лучше один раз увидеть…
double a[N], b[N], c[N]; int i;
omp_set_dynamic(0);
omp_set_num_threads(10);
#pragma omp parallel shared(a, b, c) private(i)
{
#pragma omp for
    for (i = 0; i < N; i++)
      c[i] = a[i] + b[i];
}
Описание слайда:
Лучше один раз увидеть… double a[N], b[N], c[N]; int i; omp_set_dynamic(0); omp_set_num_threads(10); #pragma omp parallel shared(a, b, c) private(i) { #pragma omp for for (i = 0; i < N; i++) c[i] = a[i] + b[i]; }

Слайд 9





Формат директив
#pragma omp [directive] [clause [clause] …]
[directive] – название директивы
[clause] - условие
Продление – «\» в конце
#pragma omp parallel private (i,  j) \
			shared (a, b, c)
Описание слайда:
Формат директив #pragma omp [directive] [clause [clause] …] [directive] – название директивы [clause] - условие Продление – «\» в конце #pragma omp parallel private (i, j) \ shared (a, b, c)

Слайд 10





Подключение в C++
/openmp – флаг компилятору в VS
Описание слайда:
Подключение в C++ /openmp – флаг компилятору в VS

Слайд 11





Инкрементальный параллелизм
Не нужно выкидывать старую программу и писать новую
Можно постепенно переписывать код на использование параллельных вычислений
Описание слайда:
Инкрементальный параллелизм Не нужно выкидывать старую программу и писать новую Можно постепенно переписывать код на использование параллельных вычислений

Слайд 12





Модель с разделяемой памятью
Все потоки имеют доступ к глобальной разделяемой памяти (метка shared для переменных)
Приватные данные
доступны только 
одному потоку
(метка private для
переменных)
Описание слайда:
Модель с разделяемой памятью Все потоки имеют доступ к глобальной разделяемой памяти (метка shared для переменных) Приватные данные доступны только одному потоку (метка private для переменных)

Слайд 13





По умолчанию
Все переменные shared общие, кроме:
Индексов параллельных циклов
Переменных, объявленных внутри параллельных регионов
Описание слайда:
По умолчанию Все переменные shared общие, кроме: Индексов параллельных циклов Переменных, объявленных внутри параллельных регионов

Слайд 14





Уровни параллельности
SPMD
MPMD
MDMD
Описание слайда:
Уровни параллельности SPMD MPMD MDMD

Слайд 15





Parallel
Начинает параллельное выполнение блока в {}
Создает “команду” потоков
Количество потоков чаще всего равняется количеству процессоров
После окончания блока количество потоков становится 1
Описание слайда:
Parallel Начинает параллельное выполнение блока в {} Создает “команду” потоков Количество потоков чаще всего равняется количеству процессоров После окончания блока количество потоков становится 1

Слайд 16





Параллельный регион
Параллельный регион в OpenMP – блок кода, который исполняется всеми потоками параллельно.
Описание слайда:
Параллельный регион Параллельный регион в OpenMP – блок кода, который исполняется всеми потоками параллельно.

Слайд 17





Условный паралеллизм
Если условие равно 0 параллельность не работает
Описание слайда:
Условный паралеллизм Если условие равно 0 параллельность не работает

Слайд 18





For
Без pragma parallel выполняется в один поток
Описание слайда:
For Без pragma parallel выполняется в один поток

Слайд 19





Parallel for
С pragma parallel выполняется в текущей «команде» потоков
Описание слайда:
Parallel for С pragma parallel выполняется в текущей «команде» потоков

Слайд 20





Num_threads(N)
Определяет количество потоков в «команде»
Описание слайда:
Num_threads(N) Определяет количество потоков в «команде»

Слайд 21





Циклы, которые нельзя распараллелить
Рекурсивные зависимости
for (int i = 1; i <= n; ++i) 
	a[i] = a[i-1] + b[i];
Например, числа Фибоначчи
Описание слайда:
Циклы, которые нельзя распараллелить Рекурсивные зависимости for (int i = 1; i <= n; ++i) a[i] = a[i-1] + b[i]; Например, числа Фибоначчи

Слайд 22





Зависимости
Решение зависимостей:
перегруппировка кода
переписывание алгоритмов
расстановка барьеров
Если зависимости есть, но мы с ними ничего не сделали, компилятор не будет спорить, а программа будет работать неверно
Описание слайда:
Зависимости Решение зависимостей: перегруппировка кода переписывание алгоритмов расстановка барьеров Если зависимости есть, но мы с ними ничего не сделали, компилятор не будет спорить, а программа будет работать неверно

Слайд 23





Sheduling
Static
Dynamic
Guided
Auto
Описание слайда:
Sheduling Static Dynamic Guided Auto

Слайд 24





Ordered
Код внутри ordered выполняется в установленном циклом последовательности
Описание слайда:
Ordered Код внутри ordered выполняется в установленном циклом последовательности

Слайд 25





collapse 
Используется для вложенных циклов
Описание слайда:
collapse Используется для вложенных циклов

Слайд 26





Sections
Определяют, что должно быть параллельным
Work1, Work2 + Work3 and Work4 – выполняются паралелльно, но Work2 + Work3 выполняются последовательно
Описание слайда:
Sections Определяют, что должно быть параллельным Work1, Work2 + Work3 and Work4 – выполняются паралелльно, но Work2 + Work3 выполняются последовательно

Слайд 27





Atomic
Определяет атомарную операцию
Описание слайда:
Atomic Определяет атомарную операцию

Слайд 28





critical 
Гарантирует выполнение участка кода только одним потоком
Описание слайда:
critical Гарантирует выполнение участка кода только одним потоком

Слайд 29





Типы переменных
Private –копия переменной
shared
Описание слайда:
Типы переменных Private –копия переменной shared

Слайд 30





Private, firstprivate
K
kx
Описание слайда:
Private, firstprivate K kx

Слайд 31





reduction
Совмещает private, shared, и atomic
Вначале блока копирует значение shared переменной
В конце блока возвращается в переменную указанным оператором
Описание слайда:
reduction Совмещает private, shared, и atomic Вначале блока копирует значение shared переменной В конце блока возвращается в переменную указанным оператором

Слайд 32






http://bisqwit.iki.fi/story/howto/openmp
Описание слайда:
http://bisqwit.iki.fi/story/howto/openmp



Похожие презентации
Mypresentation.ru
Загрузить презентацию