SlideShare une entreprise Scribd logo
1  sur  33
Основы разработки высокопроизводительных параллельных приложений.  Практикум. Департамент стратегических технологий,  Microsoft.
Содержание
Инфраструктура Туалеты Перерывы Эвакуация !=  Тренеры Денис Котляров, Microsoft Василий Маланин, Microsoft Андрей Паринов, Независимый эксперт Группа поддержки
Часть 1. Введение в параллелизм. Многопоточное программирование.
Введение ,[object Object]
Типы параллелизма.
Ускорение->ЭффективностьvsПереносимость
Распараллеливание = Инструменты &&     (Предметные области || Задачи)
Описание предметной области
Описание предметной области 800 600
Описание предметной области
n = количество проц. Tпаралл.= {(1-P) + P/n}Tпослед Закон Амдала P Ускорение= Tпослед/ Tпаралл. P/2 Послед. T P/∞ (1-P) (1-P) Описывает верхний предел ускорения от параллельного выполнения Последовательный код ограничивает ускорение
Проведение вычислений на локальной машине Для проведения эксперимента необходимо открыть в   в VS 2008 проект из папки SolutionsequentialeqContrastStretchbr />Необходимо выбрать архитектуру процессора, на которому будут провиодиться вычисления. Для проведение вычислений на кластере необходимо выбрать  64-х битную архитектуру процессора.
Проведение вычислений на локальной машине
Постановка задач для кластера в HPCS Адрес MSU кластера IKI кластера	HN.PRACTICUM.CS.MSU.SU  193.232.2.150 Имя головного узла (head node)hn.practicumn.cluster.local Имя вычислительных узлов 		cn1,cn2…cn1.cluster.local,cn2.cluster.local… Сетевая папка доступная всем hn.practicumpps    hn.cluster.localpps вычислительным узлам	 Сетевая папка на каждом 	cn1pps, cn2pps...  cn1.cluster.localpps вычилительном узле (физический расположенная в C:pps) Для доступа к  IKI кластеру необходимо включить VPN соединение, указав  User name: <user_ name> Password: < password> Domain: Cluster
WHPCS
Постановка задач для кластера в HPCS
Постановка задач для кластера в HPCS
Постановка задач для кластера в HPCS
Постановка задач для кластера в HPCS 	Для последовательных и OpenMPпрограмм: app.exe  argument1  argument2 ... Для программы MPI: mpiexec  mpiapp.exe  argument1  argument2 ...
Постановка задач для кластера в HPCS 6) После сохранения задачи, нажмите кнопку «Submit». Должно появится окно подтверждения прав для постановки задачи. Необходимо ввести имя пользователя и пароль. Например, если имя пользователя “domainpcuser”, то окно будет иметь вид
Постановка задач для кластера в HPCS
Постановка задач для кластера в HPCS Для просмотра загруженности вычислительных узлов при выполнении задачи, необходимо открыть вкладку Heat Map в Windows HPC Server. Например, вид окна должен быть таким:
Постановка задач для кластера в HPCS Консоли : > job submit /scheduler:headnode /jobname:MyJob /numprocessors:1-1 /exclusive:true /workdir:headnodeublicrJoe /stdout:_OUT.txt /stderr:_ERR.txt /user:domainpcuser  SeqContrastStretch.exe Sunset.bmp result.bmp 75 1 Windows PowerShell : > $job = new-hpcjob  –scheduler "headnode"  –name "MyJob"  –numprocessors "1-1"  –exclusive 1 > add-hpctask  –scheduler "headnode"  –job $job  –workdir "headnodeublicrJoe"  –stdout "_OUT.txt"  –stderr "_ERR.txt"  –command "SeqContrastStretch.exe Sunset.bmp result.bmp 75 1" > submit-hpcjob  –scheduler "headnode"  –job $job  –credential "domainpcuser"
Последовательно о многопоточном.
Процессы и потоки Stack Сегмент кода Сегмент данных Stack Stack thread thread … Преимущества потоков: Быстрое переключение между потоками (переключение между процессами очень ресурсоемкая операция) Простая организация взаимодействия – общая память Недостатки потоков: Некорректное использование данных одним потоком отражается на всех других Необходимость в синхронизации при доступе к общим данным Используемые библиотеки должны поддерживать многопоточность thread main()
Средства создания многопоточных программ Ручные: Библиотеки потоков Posix Threads Windows Threads … Полуавтоматические: OpenMP Автоматические: Распараллеливающие компиляторы Неявный параллелизм (F#)
Синхронизация потоков Необходима при: Совместном использовании ресурса (атомарные операции) Уведомлении потоков о некотором событии
n = количество проц. Tпаралл.= {(1-P) + P/n}Tпослед Закон Амдала P Ускорение= Tпослед/ Tпаралл. P/2 Послед. T P/∞ (1-P) (1-P) Описывает верхний предел ускорения от параллельного выполнения Последовательный код ограничивает ускорение
29 Parallel Programming Models Functional Decomposition Task parallelism Divide the computation, then associate the data Independent tasks of the same problem Data Decomposition Same operation performed on different data Divide data into pieces, then associate computation
Просто OpenMP Главный поток Параллельные регионы Параллелизм Fork-join:  ,[object Object]

Contenu connexe

Tendances

C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...corehard_by
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castRoman Orlov
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
 
Вечный вопрос измерения времени
Вечный вопрос измерения времениВечный вопрос измерения времени
Вечный вопрос измерения времениTatyanazaxarova
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...Alexey Paznikov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
Лекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIЛекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIAlexey Paznikov
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Alexey Paznikov
 
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Sergey Platonov
 
Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.
Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.
Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.Roman Orlov
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаSergey Platonov
 
инструменты параллельного программирования
инструменты параллельного программированияинструменты параллельного программирования
инструменты параллельного программированияAlexander Petrov
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Mikhail Kurnosov
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммыPlatonov Sergey
 
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...Alexey Paznikov
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияAlexey Paznikov
 

Tendances (20)

C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
C++ CoreHard Autumn 2018. Что не умеет оптимизировать компилятор - Александр ...
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_cast
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
 
Вечный вопрос измерения времени
Вечный вопрос измерения времениВечный вопрос измерения времени
Вечный вопрос измерения времени
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
 
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
ПВТ - весна 2015 - Лекция 8. Многопоточное программирование без использования...
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Лекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIЛекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPI
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
 
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
 
Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.
Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.
Метапрограммирование в C++11/14 и C++17. Новые инструменты - новые проблемы.
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладка
 
инструменты параллельного программирования
инструменты параллельного программированияинструменты параллельного программирования
инструменты параллельного программирования
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммы
 
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
 

Similaire à 20090720 hpc exercise1

Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Mikhail Kurnosov
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
трасировка Mpi приложений
трасировка Mpi приложенийтрасировка Mpi приложений
трасировка Mpi приложенийMichael Karpov
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.Igor Shkulipa
 
32 подводных камня OpenMP при программировании на Си++
32 подводных камня OpenMP при программировании на Си++32 подводных камня OpenMP при программировании на Си++
32 подводных камня OpenMP при программировании на Си++Tatyanazaxarova
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) it-people
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesPlatonov Sergey
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Mikhail Kurnosov
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 
Solit 2014, Минусы ООП на примере языка PHP, Соловей Василий
Solit 2014, Минусы ООП на примере языка PHP, Соловей ВасилийSolit 2014, Минусы ООП на примере языка PHP, Соловей Василий
Solit 2014, Минусы ООП на примере языка PHP, Соловей Василийsolit
 
вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмыЕлена Ключева
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
 
отладка Mpi приложений
отладка Mpi приложенийотладка Mpi приложений
отладка Mpi приложенийMichael Karpov
 
лабораторная работа №3
лабораторная работа №3лабораторная работа №3
лабораторная работа №3Gulnaz Shakirova
 

Similaire à 20090720 hpc exercise1 (20)

Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
 
трасировка Mpi приложений
трасировка Mpi приложенийтрасировка Mpi приложений
трасировка Mpi приложений
 
C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.C++ Базовый. Занятие 04.
C++ Базовый. Занятие 04.
 
32 подводных камня OpenMP при программировании на Си++
32 подводных камня OpenMP при программировании на Си++32 подводных камня OpenMP при программировании на Си++
32 подводных камня OpenMP при программировании на Си++
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Оптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Solit 2014, Минусы ООП на примере языка PHP, Соловей Василий
Solit 2014, Минусы ООП на примере языка PHP, Соловей ВасилийSolit 2014, Минусы ООП на примере языка PHP, Соловей Василий
Solit 2014, Минусы ООП на примере языка PHP, Соловей Василий
 
лекция 2
лекция 2лекция 2
лекция 2
 
вспомогательные алгоритмы
вспомогательные алгоритмывспомогательные алгоритмы
вспомогательные алгоритмы
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
отладка Mpi приложений
отладка Mpi приложенийотладка Mpi приложений
отладка Mpi приложений
 
лабораторная работа №3
лабораторная работа №3лабораторная работа №3
лабораторная работа №3
 
лабораторная работа №3
лабораторная работа №3лабораторная работа №3
лабораторная работа №3
 
лабораторная работа №3
лабораторная работа №3лабораторная работа №3
лабораторная работа №3
 
лабораторная работа №3
лабораторная работа №3лабораторная работа №3
лабораторная работа №3
 

Plus de Michael Karpov

EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...Michael Karpov
 
Movement to business goals: Data, Team, Users (4C Conference)
Movement to business goals: Data, Team, Users (4C Conference)Movement to business goals: Data, Team, Users (4C Conference)
Movement to business goals: Data, Team, Users (4C Conference)Michael Karpov
 
Save Africa: NASA hackathon 2016
Save Africa: NASA hackathon 2016 Save Africa: NASA hackathon 2016
Save Africa: NASA hackathon 2016 Michael Karpov
 
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014) Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014) Michael Karpov
 
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...Michael Karpov
 
Поговорим про ошибки (Sumit)
Поговорим про ошибки (Sumit)Поговорим про ошибки (Sumit)
Поговорим про ошибки (Sumit)Michael Karpov
 
(2niversity) проектная работа tips&tricks
(2niversity) проектная работа   tips&tricks(2niversity) проектная работа   tips&tricks
(2niversity) проектная работа tips&tricksMichael Karpov
 
"Пользователи: сигнал из космоса". CodeFest mini 2012
"Пользователи: сигнал из космоса". CodeFest mini 2012"Пользователи: сигнал из космоса". CodeFest mini 2012
"Пользователи: сигнал из космоса". CodeFest mini 2012Michael Karpov
 
(Analyst days2012) Как мы готовим продукты - вклад аналитиков
(Analyst days2012) Как мы готовим продукты - вклад аналитиков(Analyst days2012) Как мы готовим продукты - вклад аналитиков
(Analyst days2012) Как мы готовим продукты - вклад аналитиковMichael Karpov
 
Как сделать команде приятное - Михаил Карпов (Яндекс)
Как сделать команде приятное - Михаил Карпов (Яндекс)Как сделать команде приятное - Михаил Карпов (Яндекс)
Как сделать команде приятное - Михаил Карпов (Яндекс)Michael Karpov
 
Как мы готовим продукты
Как мы готовим продуктыКак мы готовим продукты
Как мы готовим продуктыMichael Karpov
 
Hpc Visualization with WebGL
Hpc Visualization with WebGLHpc Visualization with WebGL
Hpc Visualization with WebGLMichael Karpov
 
Hpc Visualization with X3D (Michail Karpov)
Hpc Visualization with X3D (Michail Karpov)Hpc Visualization with X3D (Michail Karpov)
Hpc Visualization with X3D (Michail Karpov)Michael Karpov
 
сбор требований с помощью Innovation games
сбор требований с помощью Innovation gamesсбор требований с помощью Innovation games
сбор требований с помощью Innovation gamesMichael Karpov
 
Зачем нам Это? или Как продать agile команде
Зачем нам Это? или Как продать agile командеЗачем нам Это? или Как продать agile команде
Зачем нам Это? или Как продать agile командеMichael Karpov
 
"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile командеMichael Karpov
 
"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile командеMichael Karpov
 
Высоконагруженая команда - AgileDays 2010
Высоконагруженая команда - AgileDays 2010Высоконагруженая команда - AgileDays 2010
Высоконагруженая команда - AgileDays 2010Michael Karpov
 

Plus de Michael Karpov (20)

EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
EdCrunch 2018 - Skyeng - EdTech product scaling: How to influence key growth ...
 
Movement to business goals: Data, Team, Users (4C Conference)
Movement to business goals: Data, Team, Users (4C Conference)Movement to business goals: Data, Team, Users (4C Conference)
Movement to business goals: Data, Team, Users (4C Conference)
 
Save Africa: NASA hackathon 2016
Save Africa: NASA hackathon 2016 Save Africa: NASA hackathon 2016
Save Africa: NASA hackathon 2016
 
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014) Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
Из третьего мира - в первый: ошибки в развивающихся продуктах (AgileDays 2014)
 
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
Один день из жизни менеджера. Тактика: хорошие практики, скрытые опасности и ...
 
Поговорим про ошибки (Sumit)
Поговорим про ошибки (Sumit)Поговорим про ошибки (Sumit)
Поговорим про ошибки (Sumit)
 
(2niversity) проектная работа tips&tricks
(2niversity) проектная работа   tips&tricks(2niversity) проектная работа   tips&tricks
(2niversity) проектная работа tips&tricks
 
"Пользователи: сигнал из космоса". CodeFest mini 2012
"Пользователи: сигнал из космоса". CodeFest mini 2012"Пользователи: сигнал из космоса". CodeFest mini 2012
"Пользователи: сигнал из космоса". CodeFest mini 2012
 
(Analyst days2012) Как мы готовим продукты - вклад аналитиков
(Analyst days2012) Как мы готовим продукты - вклад аналитиков(Analyst days2012) Как мы готовим продукты - вклад аналитиков
(Analyst days2012) Как мы готовим продукты - вклад аналитиков
 
Как сделать команде приятное - Михаил Карпов (Яндекс)
Как сделать команде приятное - Михаил Карпов (Яндекс)Как сделать команде приятное - Михаил Карпов (Яндекс)
Как сделать команде приятное - Михаил Карпов (Яндекс)
 
Как мы готовим продукты
Как мы готовим продуктыКак мы готовим продукты
Как мы готовим продукты
 
Hpc Visualization with WebGL
Hpc Visualization with WebGLHpc Visualization with WebGL
Hpc Visualization with WebGL
 
Hpc Visualization with X3D (Michail Karpov)
Hpc Visualization with X3D (Michail Karpov)Hpc Visualization with X3D (Michail Karpov)
Hpc Visualization with X3D (Michail Karpov)
 
сбор требований с помощью Innovation games
сбор требований с помощью Innovation gamesсбор требований с помощью Innovation games
сбор требований с помощью Innovation games
 
Зачем нам Это? или Как продать agile команде
Зачем нам Это? или Как продать agile командеЗачем нам Это? или Как продать agile команде
Зачем нам Это? или Как продать agile команде
 
"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде
 
"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде"Зачем нам Это?" или как продать Agile команде
"Зачем нам Это?" или как продать Agile команде
 
HPC Visualization
HPC VisualizationHPC Visualization
HPC Visualization
 
Hpc Visualization
Hpc VisualizationHpc Visualization
Hpc Visualization
 
Высоконагруженая команда - AgileDays 2010
Высоконагруженая команда - AgileDays 2010Высоконагруженая команда - AgileDays 2010
Высоконагруженая команда - AgileDays 2010
 

Dernier (9)

ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 

20090720 hpc exercise1

  • 1. Основы разработки высокопроизводительных параллельных приложений. Практикум. Департамент стратегических технологий, Microsoft.
  • 3. Инфраструктура Туалеты Перерывы Эвакуация !=  Тренеры Денис Котляров, Microsoft Василий Маланин, Microsoft Андрей Паринов, Независимый эксперт Группа поддержки
  • 4.
  • 5.
  • 6. Часть 1. Введение в параллелизм. Многопоточное программирование.
  • 7.
  • 10. Распараллеливание = Инструменты && (Предметные области || Задачи)
  • 14. n = количество проц. Tпаралл.= {(1-P) + P/n}Tпослед Закон Амдала P Ускорение= Tпослед/ Tпаралл. P/2 Послед. T P/∞ (1-P) (1-P) Описывает верхний предел ускорения от параллельного выполнения Последовательный код ограничивает ускорение
  • 15. Проведение вычислений на локальной машине Для проведения эксперимента необходимо открыть в в VS 2008 проект из папки SolutionsequentialeqContrastStretchbr />Необходимо выбрать архитектуру процессора, на которому будут провиодиться вычисления. Для проведение вычислений на кластере необходимо выбрать 64-х битную архитектуру процессора.
  • 16. Проведение вычислений на локальной машине
  • 17. Постановка задач для кластера в HPCS Адрес MSU кластера IKI кластера HN.PRACTICUM.CS.MSU.SU 193.232.2.150 Имя головного узла (head node)hn.practicumn.cluster.local Имя вычислительных узлов cn1,cn2…cn1.cluster.local,cn2.cluster.local… Сетевая папка доступная всем hn.practicumpps hn.cluster.localpps вычислительным узлам Сетевая папка на каждом cn1pps, cn2pps... cn1.cluster.localpps вычилительном узле (физический расположенная в C:pps) Для доступа к IKI кластеру необходимо включить VPN соединение, указав User name: <user_ name> Password: < password> Domain: Cluster
  • 18. WHPCS
  • 19. Постановка задач для кластера в HPCS
  • 20. Постановка задач для кластера в HPCS
  • 21. Постановка задач для кластера в HPCS
  • 22. Постановка задач для кластера в HPCS Для последовательных и OpenMPпрограмм: app.exe argument1 argument2 ... Для программы MPI: mpiexec mpiapp.exe argument1 argument2 ...
  • 23. Постановка задач для кластера в HPCS 6) После сохранения задачи, нажмите кнопку «Submit». Должно появится окно подтверждения прав для постановки задачи. Необходимо ввести имя пользователя и пароль. Например, если имя пользователя “domainpcuser”, то окно будет иметь вид
  • 24. Постановка задач для кластера в HPCS
  • 25. Постановка задач для кластера в HPCS Для просмотра загруженности вычислительных узлов при выполнении задачи, необходимо открыть вкладку Heat Map в Windows HPC Server. Например, вид окна должен быть таким:
  • 26. Постановка задач для кластера в HPCS Консоли : > job submit /scheduler:headnode /jobname:MyJob /numprocessors:1-1 /exclusive:true /workdir:headnodeublicrJoe /stdout:_OUT.txt /stderr:_ERR.txt /user:domainpcuser SeqContrastStretch.exe Sunset.bmp result.bmp 75 1 Windows PowerShell : > $job = new-hpcjob –scheduler "headnode" –name "MyJob" –numprocessors "1-1" –exclusive 1 > add-hpctask –scheduler "headnode" –job $job –workdir "headnodeublicrJoe" –stdout "_OUT.txt" –stderr "_ERR.txt" –command "SeqContrastStretch.exe Sunset.bmp result.bmp 75 1" > submit-hpcjob –scheduler "headnode" –job $job –credential "domainpcuser"
  • 28. Процессы и потоки Stack Сегмент кода Сегмент данных Stack Stack thread thread … Преимущества потоков: Быстрое переключение между потоками (переключение между процессами очень ресурсоемкая операция) Простая организация взаимодействия – общая память Недостатки потоков: Некорректное использование данных одним потоком отражается на всех других Необходимость в синхронизации при доступе к общим данным Используемые библиотеки должны поддерживать многопоточность thread main()
  • 29. Средства создания многопоточных программ Ручные: Библиотеки потоков Posix Threads Windows Threads … Полуавтоматические: OpenMP Автоматические: Распараллеливающие компиляторы Неявный параллелизм (F#)
  • 30. Синхронизация потоков Необходима при: Совместном использовании ресурса (атомарные операции) Уведомлении потоков о некотором событии
  • 31. n = количество проц. Tпаралл.= {(1-P) + P/n}Tпослед Закон Амдала P Ускорение= Tпослед/ Tпаралл. P/2 Послед. T P/∞ (1-P) (1-P) Описывает верхний предел ускорения от параллельного выполнения Последовательный код ограничивает ускорение
  • 32. 29 Parallel Programming Models Functional Decomposition Task parallelism Divide the computation, then associate the data Independent tasks of the same problem Data Decomposition Same operation performed on different data Divide data into pieces, then associate computation
  • 33.
  • 35.
  • 36. Примитивы OpenMPподразделяются на категории: Функции времени выполнения/переменные среды окружения Параллельные регионы Распределение работ Синхронизация Принципиально OpenMPне зависит от компилятора или языка, например Fortran и C/C++ Просто OpenMP
  • 37. Примитивы среды окружения: Изменить/проверить количество потоков omp_set_num_threads() omp_get_num_threads() omp_get_thread_num() omp_get_max_threads() Мы в параллельном регионе? omp_in_parallel() Сколько процессоров в системе? omp_num_procs() Функции
  • 38. Чтобы установить количество потоков Установить количество потоков равное количеству процессоров #include <omp.h>void main(){ intnum_threads;omp_set_num_threads(omp_num_procs());#pragmaomp parallel { int id=omp_get_thread_num();#pragmaomp single num_threads = omp_get_num_threads(); do_lots_of_stuff(id); }} Глоб. Переменная. Операция выполняется в одном потоке. Функции
  • 39. Переменные среды коружения Установить количество потоков, порождаемых по умолчанию OMP_NUM_THREADS int_literal Установить способ распределения нагрузки по умолчанию OMP_SCHEDULE “schedule[, chunk_size]”
  • 40. Правила разделения переменных Неявное правило 1: Все переменные, определенныевнеomp parallel,являются глобальнымидля всех потоков Неявное правило 2:Все переменные, определенныевнутриomp parallel,являются локальнымидля каждого потока Неявное исключение:В прагмеomp for, счетчик циклавсегдалокалендля каждого потока Явное правило 1: Переменные, приведенные вshared(),являются глобальнымидля всех потоков Явное правило 2:Переменные, приведенные вprivate(),являются локальнымидля каждого потока
  • 41. Какие переменные локальные, а какие глобальные? void func() { int a, i; #pragmaomp parallel for br /> shared(c) private(d, e) for (i = 0; i < N; i++) { int b, c, d, e; a = a + b; c = c + d * e; } }
  • 42. Прагмы синхронизации #pragmaompsingle – исполняет следующую команду толькос помощью одного (случайного) потока #pragmaompbarrier – удерживает потоки в этом месте, пока все потоки не дойдут дотуда #pragmaompatomic– атомарно исполняет следующую операцию доступа к памяти (т.е. без прерывания от других ветвей) #pragmaompcritical [имя потока] – позволяет только одному потоку перейти к исполнению следующей команды int a[N], sum = 0; #pragmaomp parallel for for (inti = 0; i < N; i++) { #pragmaomp critical sum += a[i]; // one thread at a time }
  • 43. Реализация параллельного алгоритма с использованием OpenMP Применяется OpenMP с помощью указания директив. Например : #pragmaomp parallel for for (inti = 0; i < N; i++) PerformSomeComputation(i);
  • 44. Выполнение упражнения 1. В папке Exercises2 OpenMPpenMPContrastStretchаходится копия последовательной программы. Выберите необходимую архитектуру процессора ( Win32 или 64) и включите поддержку OpenMP. Измените файл “app.h” добавив строку #Include <omp.h>. Измените главную фунцию добавив строки, выводящие информацию о среде выполнения: cout << " Processors: " << omp_get_num_procs() << endl; cout << " Threads: " << omp_get_max_threads() << endl; Откройте ContrastStretch.cpp и вставьте директивы OpenMPв цикл while while (!converged && step < steps) {   #pragmaomp parallel for schedule(static) for (int row = 1; row < rows-1; row++) for (intcol = 1; col < cols-1; col++) …  #pragmaomp parallel for schedule(static) for (int row = 1; row < rows-1; row++) for (intcol = 1; col < cols-1; col++) ... }
  • 45. Реализация параллельного алгоритма с использованием OpenMP Поддержка OpenMP включается в Visual Studio 2005 и Visual Studio 2008. Project ->Properties->Configuration Properties-> C/C++-> Language-> OpenMP Support
  • 46. Ошибка(!) Гонки данных. Взаимоблокировки.
  • 47. Реализация параллельного алгоритма с использованием OpenMP Важно помнить про ситуацию (race conditions), которая возникает при одновременном доступе к общим переменным. #pragmaomp parallel for schedule(static) for (inti = 0; i < N; i++) PerformSomeComputation(i); Пусть функция PerformSomeComputation изменяет значение глобальной переменной int global = 0;   void PerformSomeComputation(inti) { global += i; } .
  • 48. Реализация параллельного алгоритма с использованием OpenMP Избежать ситуацию возникновения гонки за ресурсами. Позволяет использование критических секций: void PerformSomeComputation(inti) { #pragmaomp critical { global += i; } }
  • 49. Выполнение упражнения #pragmaomp parallel for schedule(static) reduction(+:diffs) for (int row = 1; row < rows-1; row++)

Notes de l'éditeur

  1. Типы:Функциональный и поданным.Явный/явный.Крапнозернистый.мелкозернистый.Ускорение –&gt; то ради чего все делается, главный параметр для определения глубины распараллеливания.Инструменты. Распараллеливание –&gt; Автоматическое, Полуавтоматическое, Ручное. Вся суть параллелизма с точки дрения инструментов – обеспечение параллельной обработки данных, в средах с обще памятью, распределенных, смешанных, гомогенных, гетерогенных (грид системы).
  2. Открываем код.Внимательно рассказать структуре данных, методах ContrastStretch, median и StretchColor.Последовательная программа алгоритма изменения контрастности находится в папке SolutionsSequentialSeqContrastStretch. Проект состоит из файлов с кодом:Bitmap.cpp исходный код для чтения записи .bmp файловContrastStretch.cpp код реализующий преобразование графических файловMain.cpp главная часть программы (запуск, обработка входных аргументов, чтениезапись файлов и преобразования над ними)
  3. Запускаем на кластере, замеряем время, то три запуска, считаем ускорение.
  4. Три вида распараллеливания – ручное, полуручное, машинное. OpenMP пример полуручного распараллеливания.В основе OpenMPлежит идея взаимодействия процессов под названием fork-join. Идея fork-joinзаключается в том, что в начале программы существуют только один основной процесс. Когда программы достигает раздела кода, который должен выполнятся параллельно, основной процесс разбивается на 2 или более процессов и выполняется на предписанном для него вычислительном узле. Когда каждый процесс выполняет все вычисления, он ждет когда другие закончат вычисления. Когда все процессы заканчивают вычисления, они собираются обратно в один процессOpenMP - это открытый стандарт для описания взаимодействия процессов при использовании машин с общей памятью. Более подробную информацию можно найти по адресу http://www.openmp.org