🗊Презентация Параллельное программирование в стандарте OpenMP

Нажмите для полного просмотра!
Параллельное программирование в стандарте OpenMP, слайд №1Параллельное программирование в стандарте OpenMP, слайд №2Параллельное программирование в стандарте OpenMP, слайд №3Параллельное программирование в стандарте OpenMP, слайд №4Параллельное программирование в стандарте OpenMP, слайд №5Параллельное программирование в стандарте OpenMP, слайд №6Параллельное программирование в стандарте OpenMP, слайд №7Параллельное программирование в стандарте OpenMP, слайд №8Параллельное программирование в стандарте OpenMP, слайд №9Параллельное программирование в стандарте OpenMP, слайд №10Параллельное программирование в стандарте OpenMP, слайд №11Параллельное программирование в стандарте OpenMP, слайд №12Параллельное программирование в стандарте OpenMP, слайд №13Параллельное программирование в стандарте OpenMP, слайд №14Параллельное программирование в стандарте OpenMP, слайд №15Параллельное программирование в стандарте OpenMP, слайд №16Параллельное программирование в стандарте OpenMP, слайд №17Параллельное программирование в стандарте OpenMP, слайд №18Параллельное программирование в стандарте OpenMP, слайд №19Параллельное программирование в стандарте OpenMP, слайд №20Параллельное программирование в стандарте OpenMP, слайд №21Параллельное программирование в стандарте OpenMP, слайд №22

Содержание

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

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


Слайд 1





Параллельное программирование
в стандарте OpenMP
Описание слайда:
Параллельное программирование в стандарте OpenMP

Слайд 2





Содержание
Модель программирования в общей памяти
Модель FORK-JOIN 
Стандарт OpenMP
Основные понятия и функции OpenMP
Описание слайда:
Содержание Модель программирования в общей памяти Модель FORK-JOIN Стандарт OpenMP Основные понятия и функции OpenMP

Слайд 3





Программирование в общей памяти
Описание слайда:
Программирование в общей памяти

Слайд 4





Модель FORK-JOIN
Современные операционные системы поддерживают полновесные процессы (программы) и легковесные процессы (нити).
Процесс – главная нить. 
Нить может запускать другие нити в рамках процесса. Каждая нить имеет собственный сегмент стека.
Все нити процесса разделяют сегмент данных процесса.
Описание слайда:
Модель FORK-JOIN Современные операционные системы поддерживают полновесные процессы (программы) и легковесные процессы (нити). Процесс – главная нить. Нить может запускать другие нити в рамках процесса. Каждая нить имеет собственный сегмент стека. Все нити процесса разделяют сегмент данных процесса.

Слайд 5





Стандарт OpenMP
OpenMP – стандарт, реализующий модели программирования в общей памяти и Fork-Join.
Стандарт представляет собой набор директив компилятора и спецификаций подпрограмм для на языках C, С++ и FORTRAN.
Стандарт реализуется разработчиками компиляторов для различных аппаратно-программных платформ (кластеры, персональные компьютеры, …, Windows, Unix/Linux, …).
Описание слайда:
Стандарт OpenMP OpenMP – стандарт, реализующий модели программирования в общей памяти и Fork-Join. Стандарт представляет собой набор директив компилятора и спецификаций подпрограмм для на языках C, С++ и FORTRAN. Стандарт реализуется разработчиками компиляторов для различных аппаратно-программных платформ (кластеры, персональные компьютеры, …, Windows, Unix/Linux, …).

Слайд 6





Структура OpenMP-программы
Описание слайда:
Структура OpenMP-программы

Слайд 7





Директивы OpenMP
Директивы OpenMP – директивы C/C++ компилятора  #pragma.
Для использования директив необходимо установить соответствующие параметры компилятора (обычно -openmp).
Синтаксис директив OpenMP:
#pragma omp имя_директивы [параметры]
Примеры:
#pragma omp parallel
#pragma omp for private(i, j) reduction(+: sum)
Описание слайда:
Директивы OpenMP Директивы OpenMP – директивы C/C++ компилятора #pragma. Для использования директив необходимо установить соответствующие параметры компилятора (обычно -openmp). Синтаксис директив OpenMP: #pragma omp имя_директивы [параметры] Примеры: #pragma omp parallel #pragma omp for private(i, j) reduction(+: sum)

Слайд 8





Функции библиотеки OpenMP
Назначение функций библиотеки:
контроль и просмотр параметров OpenMP-программы
omp_get_thread_num() возвращает номер текущей нити
явная синхронизация нитей на базе "замков" 
omp_set_lock() устанавливает "замок"
Для использования функций необходимо подключить библиотеку
#include "omp.h"
Описание слайда:
Функции библиотеки OpenMP Назначение функций библиотеки: контроль и просмотр параметров OpenMP-программы omp_get_thread_num() возвращает номер текущей нити явная синхронизация нитей на базе "замков" omp_set_lock() устанавливает "замок" Для использования функций необходимо подключить библиотеку #include "omp.h"

Слайд 9





Переменные окружения OpenMP
Переменные окружения контролируют поведение приложения.
OMP_NUM_THREADS – количество нитей в параллельном регионе
OMP_DYNAMIC – разрешение или запрет динамического изменения количества нитей. 
OMP_NESTED – разрешение или запрет вложенных  параллельных регионов. 
OMP_SCHEDULE – способ распределения итераций в цикле. 
Функции назначения параметров изменяют значения соответствующих переменных окружения.
Описание слайда:
Переменные окружения OpenMP Переменные окружения контролируют поведение приложения. OMP_NUM_THREADS – количество нитей в параллельном регионе OMP_DYNAMIC – разрешение или запрет динамического изменения количества нитей. OMP_NESTED – разрешение или запрет вложенных параллельных регионов. OMP_SCHEDULE – способ распределения итераций в цикле. Функции назначения параметров изменяют значения соответствующих переменных окружения.

Слайд 10





Директивы определения 
параллельных фрагментов
#pragma omp parallel 
Определяет блок кода, который будет выполнен всеми созданными на входе в этот блок нитями. 
#pragma omp for
Определяет цикл, итерации которого должны выполняться одновременно несколькими нитями. 
#pragma omp section 
Определяет множество блоков кода, каждый из который будет выполняться только одной из созданных на входе в этот блок нитью. 
#pragma omp master 
Определяет блок кода, который будет выполнен только главной нитью.
Описание слайда:
Директивы определения параллельных фрагментов #pragma omp parallel Определяет блок кода, который будет выполнен всеми созданными на входе в этот блок нитями. #pragma omp for Определяет цикл, итерации которого должны выполняться одновременно несколькими нитями. #pragma omp section Определяет множество блоков кода, каждый из который будет выполняться только одной из созданных на входе в этот блок нитью. #pragma omp master Определяет блок кода, который будет выполнен только главной нитью.

Слайд 11





Простая программа на OpenMP
Описание слайда:
Простая программа на OpenMP

Слайд 12





Директива parallel for 
OpenMP поддерживает редукцию вычислительных операций, выполняемых в циклах. Редукция подразумевает определение для каждой нити частной переменной для вычисления "частичного" результата и автоматическое выполнение операции "слияния" частичных результатов.
Описание слайда:
Директива parallel for OpenMP поддерживает редукцию вычислительных операций, выполняемых в циклах. Редукция подразумевает определение для каждой нити частной переменной для вычисления "частичного" результата и автоматическое выполнение операции "слияния" частичных результатов.

Слайд 13





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

Слайд 14





Область видимости переменных
Общая переменная (shared) – доступна для модификации всем нитям.
Частная переменная (private) – доступна для модификации только одной (создавшей ее) нити только на время выполнения этой нити.
Правила видимости переменных:
все переменные, определенные вне параллельной области – общие;
все переменные, определенные внутри параллельной области – частные.
Описание слайда:
Область видимости переменных Общая переменная (shared) – доступна для модификации всем нитям. Частная переменная (private) – доступна для модификации только одной (создавшей ее) нити только на время выполнения этой нити. Правила видимости переменных: все переменные, определенные вне параллельной области – общие; все переменные, определенные внутри параллельной области – частные.

Слайд 15





Общие и частные переменные
Описание слайда:
Общие и частные переменные

Слайд 16





Явное указание области видимости
Для явного указания области видимости используются следующие параметры директив:
shared() – общие переменные
private() – частные переменные
Примеры:
#pragma omp parallel shared(buf)
#pragma omp for private(i, j)
Описание слайда:
Явное указание области видимости Для явного указания области видимости используются следующие параметры директив: shared() – общие переменные private() – частные переменные Примеры: #pragma omp parallel shared(buf) #pragma omp for private(i, j)

Слайд 17





Общие и частные переменные
Описание слайда:
Общие и частные переменные

Слайд 18





Общие и частные переменные
Описание слайда:
Общие и частные переменные

Слайд 19





Общие и частные переменные
Описание слайда:
Общие и частные переменные

Слайд 20





Директивы синхронизации
#pragma omp master 
Определяет блок кода, который будет выполнен только главной нитью. 
#pragma omp critical
Определяет блок кода, который не должен выполняться одновременно двумя или более нитями. 
#pragma omp barrier 
Определяет точку барьерной синхронизации, в которой каждая нить дожидается всех остальных. 
#pragma omp atomic 
Определяет переменную в левой части оператора "атомарного" присваивания, которая должна корректно обновляться несколькими нитями. 
#pragma omp flush 
Явно определяет точку, в которой обеспечивается одинаковый вид памяти для всех нитей.
Описание слайда:
Директивы синхронизации #pragma omp master Определяет блок кода, который будет выполнен только главной нитью. #pragma omp critical Определяет блок кода, который не должен выполняться одновременно двумя или более нитями. #pragma omp barrier Определяет точку барьерной синхронизации, в которой каждая нить дожидается всех остальных. #pragma omp atomic Определяет переменную в левой части оператора "атомарного" присваивания, которая должна корректно обновляться несколькими нитями. #pragma omp flush Явно определяет точку, в которой обеспечивается одинаковый вид памяти для всех нитей.

Слайд 21





#pragma omp master
Определяет блок кода, который будет выполнен только главной нитью. Не подразумевает барьера для других нитей.
Описание слайда:
#pragma omp master Определяет блок кода, который будет выполнен только главной нитью. Не подразумевает барьера для других нитей.

Слайд 22





#pragma omp critical
Определяет блок кода, который не должен выполняться одновременно двумя или более нитями.
Описание слайда:
#pragma omp critical Определяет блок кода, который не должен выполняться одновременно двумя или более нитями.



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