Параллельное программирование для ресурсоёмких задач численного моделирования в физике. Лекция 3 презентация
Содержание
- 2. Лекция № 3
- 3. Физический факультет МГУ им М.В.Ломоносова Содержание лекции Структура, области применения, этапы разработки и характеристики производительности параллельной
- 4. Параллельная программа Физический факультет МГУ им М.В.Ломоносова процесс Последовательная программа один поток управления несколько потоков управления
- 5. Взаимодействие процессов Физический факультет МГУ им М.В.Ломоносова Разделяемые переменные один процесс осуществляет запись в переменную, считываемую
- 6. Классы приложений Физический факультет МГУ им М.В.Ломоносова Многопоточные системы Распределенные системы Синхронные параллельные вычисления
- 7. Многопоточные системы Физический факультет МГУ им М.В.Ломоносова Примеры приложений оконные системы на персональных компьютерах или рабочих
- 8. Распределенные системы Физический факультет МГУ им М.В.Ломоносова Примеры приложений файловые серверы в сети системы баз данных
- 9. Синхронные параллельные вычисления Физический факультет МГУ им М.В.Ломоносова Примеры приложений научные вычисления, которые моделируют и имитируют
- 10. Основные классы научных приложений Сеточные вычисления для приближенных решений дифференциальных уравнений в частных производных Точечные вычисления
- 11. Этапы разработки параллельной программы Последовательная программа выбор наилучшего алгоритма оптимизация Параллельная программа коррекция алгоритма (наилучший параллельный
- 12. Закон Амдала – время выполнения последовательной программы – время выполнения параллельной программы на n процессорах –
- 13. Закон Амдала Физический факультет МГУ им М.В.Ломоносова
- 14. Сетевой закон Амдала – время затрачиваемое на создание процессов и их диспетчеризацию взаимодействие процессов синхронизацию –
- 15. OpenMP Физический факультет МГУ им М.В.Ломоносова
- 16. SMP – архитектура SMP ccNUMA – архитектура Обмен данными между процессами через обмен сообщениями (Message Passing
- 17. Основные принципы OpenMP OpenMP – это интерфейс прикладного программирования для создания многопоточных приложений в вычислительных системах
- 18. Стандарт OpenMP директивы процедуры переменные среды OpenMP ARB (ARchitecture Board) www.openmp.org для языков Fortran и C/C++
- 19. Стандарт OpenMP Версии 1.0-2.5 (1997 – 2005) внедрение и развитие потокового распараллеливания циклов Версии 3.0, 3.1
- 20. Достоинства OpenMP инкрементальное распараллеливание гибкость контроля и единственность разрабатываемого кода эффективность стандартизованность Single Program Multiple Data
- 21. Модель с разделяемой (общей) памятью Физический факультет МГУ им М.В.Ломоносова
- 22. Начала программирования в OpenMP В моделях с общей памятью для обмена данными между потоками следует использовать
- 23. Структура параллельной программы Набор директив компилятора определение параллельной области разделение работы синхронизация Библиотека функций Набор переменных
- 24. Формат записи директив Формат C/C++ #pragma omp имя_директивы [clause,…] FORTRAN c$omp имя_директивы [clause,…] !$omp имя_директивы [clause,…]
- 25. Основные конструкции OpenMP Большинство директив OpenMP применяется к структурным блокам. Структурные блоки – это последовательность операторов
- 26. Порождение нитей PARALLEL [clause,…] ... END PARALLEL (основная директива OpenMP) создается набор (team) из N потоков
- 27. Порождение нитей FORTRAN C/C++ Физический факультет МГУ им М.В.Ломоносова
- 28. Определение параллельной области Количество потоков определяется переменной окружения OMP_NUM_THREADS функцией omp_set_num_threads() Каждый поток имеет свой номер
- 29. Модель выполнения Физический факультет МГУ им М.В.Ломоносова
- 30. Определение параллельной области Режимы выполнения (Execution Mode) параллельных блоков динамический (Dynamic Mode) – количество потоков определяется
- 31. Модель памяти Физический факультет МГУ им М.В.Ломоносова *Технология параллельного программирования OpenMP. © Бахтин В.А
- 32. Директивные предложения (clauses) OpenMP shared(var1, var2, …) переменные var1,… являются общими для всех потоков и относятся
- 33. Примеры реализации предложений Каждый поток имеет свою собственную копию переменных “x” и “myid” Значение “x” будет
- 34. Пример реализации предложения firstprivate В каждом параллельном потоке используется своя переменная “c”, но значение этой переменной
- 35. Пример реализации предложения lastprivate В этом случае переменная “i” определена для каждого потока в параллельном блоке
- 36. Пример реализации предложения if В этом примере цикл распараллеливается только в том случае ( n>2000 ),
- 37. Разделение работы (work-sharing constructs) Do/for - распараллеливание циклов (параллелизм данных) Sections - функциональное распараллеливание Single -
- 38. Конструкции разделения работы to be continued Физический факультет МГУ им М.В.Ломоносова
- 39. Переменные окружения OpenMP OMP_NUM_THREADS - определяет число нитей для исполнения параллельных областей приложения. OMP_SCHEDULE - определяет
- 40. Некоторые функции OpenMP (void) omp_set_num_threads(int num_threads) – задает число потоков в области параллельных вычислений int omp_get_num_threads()
- 41. Пример разделения работы Физический факультет МГУ им М.В.Ломоносова int sum_openmp (int *data, int n) { int
- 43. Скачать презентацию