POSIX Threads & OpenMP Общая память Сергей Петрович Нечаев, Сибирский Суперкомпьютерный центр.

Презентация:



Advertisements
Похожие презентации
Многопоточное программирование в OpenMP Киреев Сергей ИВМиМГ.
Advertisements

POSIX Threads. Общая модель Программа Общая память Поток 1 CPU Поток 2 Поток N Потоки – наборы инструкций, исполняющиеся на CPU. Все потоки одной программы.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 3 Томский политехнический.
Основы OpenMP Nikita Panov
OpenMP. Различие между тредами и процессами ПроцессыТреды.
OpenMPOpenMPРазличие между тредами и процессами ПроцессыТреды.
Разработка параллельных приложений для многоядерных систем С.В. Ковальчук НИИ Наукоемких компьютерных технологий, СПбГУ ИТМО.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Лекция 2 Томский политехнический.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 15 Методы разработки параллельных программ для многопроцессорных систем с общей.
Программирование многоядерных архитектур (слайды для лекции 2013/04/20) Киреев С.Е., Маркова В.П., Остапкевич М.Б., Перепелкин В.А. МО ВВС ИВМиМГ СО РАН.
Многопоточное программирование. Виды параллелизма. Общая память Распределенная память.
Нижегородский государственный университет им. Н.И.Лобачевского Факультет Вычислительной математики и кибернетики Введение в OpenMP Гергель В.П., Сысоев.
Посыпкин М.А. (С) Многопоточное программирование.
Интернет Университет Суперкомпьютерных технологий Конструкции для синхронизации нитей Учебный курс Параллельное программирование с OpenMP Бахтин В.А.,
Е.Ю. Алексеева Механико-математический факультет Южно-Уральского государственного университета.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 16 Методы разработки параллельных программ для многопроцессорных систем с общей.
Параллельное программирование с использованием технологии OpenMP Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Томский политехнический университет.
Другие примитивы синхронизации Программирование с использованием POSIX thread library.
Создание и завершение нитей Программирование с использованием POSIX thread library Иртегов Д.В. Учебное пособие подготовлено по заказу и при.
Технология программирования OpenMP Антонов Александр Сергеевич, к.ф.-м.н., с.н.с. лаборатории Параллельных информационных технологий НИВЦ МГУ.
Транксрипт:

POSIX Threads & OpenMP Общая память Сергей Петрович Нечаев, Сибирский Суперкомпьютерный центр

Что нужно: Создать поток Создать поток Уничтожить поток Уничтожить поток Обеспечить контроль доступа к общей памяти Обеспечить контроль доступа к общей памяти

Создание потока #include #include int pthread_create( pthread_t *thread, pthread_attr_t *attr, void *(*start_routine)(void*), void * arg); thread – адрес, по которому находится переменная типа pthread_t (потока) attr – атрибуты потока. Можно передать NULL start_routine –указатель на функцию, которая будет исполняться потоком. Функция имеет сигнатуру void start_routine(void* param)

Завершение потока void pthread_exit(void* param) – завершить работу текущего потока void pthread_exit(void* param) – завершить работу текущего потока int pthread_join(pthread_t th, void **thread_return); int pthread_join(pthread_t th, void **thread_return); -- дождаться завершения работы потока th.

Мьютексы pthread_mutex_init –создать мьютекс pthread_mutex_init –создать мьютекс pthread_mutex_lock – заблокировать pthread_mutex_lock – заблокировать pthread_mutex_unlock – р а зблокировать pthread_mutex_unlock – р а зблокировать pthread_mutex_trylock pthread_mutex_trylock pthread_mutex_destroy pthread_mutex_destroy подробно –в man подробно –в man

Условия Отличия от мьютексов – мьютексом владеет не более одного потока, условия может ожидать более одного потока Отличия от мьютексов – мьютексом владеет не более одного потока, условия может ожидать более одного потока pthread_cond_init – инициализировать условие pthread_cond_init – инициализировать условие pthread_cond_wait – заблокироваться и ждать выполнения условия pthread_cond_wait – заблокироваться и ждать выполнения условия pthread_cond_broadcast оповестить всех о наступлении условия pthread_cond_broadcast оповестить всех о наступлении условия

OpenMP Существенно проще, чем POSIX Threads, но возможности ограничены Существенно проще, чем POSIX Threads, но возможности ограничены Модель fork/join Модель fork/join

Основное директивы препроцессору директивы препроцессору функции функции переменные окружения переменные окружения Описание стандарта Описание стандарта

Пример программы #include #include int main(int argc, char** argv) { #pragma omp parallel { printf("Hello, OpenMP! I am %d of %d\n", omp_get_thread_num(), omp_get_num_threads()); #include #include int main(int argc, char** argv) { #pragma omp parallel { printf("Hello, OpenMP! I am %d of %d\n", omp_get_thread_num(), omp_get_num_threads()); } return 0; } return 0;}

Разделение работ Распараллеливание итераций цикла Распараллеливание итераций цикла # pragma omp parallel for [clause-list ] new-line for- loop clause:private(list) |reduction(operator: list) |ordered |schedule(kind[, chunk_size]) |nowait # pragma omp parallel for [clause-list ] new-line for- loop clause:private(list) |reduction(operator: list) |ordered |schedule(kind[, chunk_size]) |nowait

Выделение параллельных секций #pragma omp parallel sections { #pragma omp section {... } #pragma omp section {... } } #pragma omp parallel sections { #pragma omp section {... } #pragma omp section {... } }

Это последний слайд Здесь нужно написать что-то типа «спасибо за внимание» или «пожалуйста, вопросы», или «удачи в параллельном мире», а, может быть, «приходите к нам еще», но я так и не определился и решил временно оставить так. Здесь нужно написать что-то типа «спасибо за внимание» или «пожалуйста, вопросы», или «удачи в параллельном мире», а, может быть, «приходите к нам еще», но я так и не определился и решил временно оставить так. И за полгода текст этого слайда не изменился И за полгода текст этого слайда не изменился