Министерство образования и науки РФ Московский физико-технический институт (государственный университет) “УТВЕРЖДАЮ” Проректор по учебной работе ________________ Ю.А. Самарский “___” ________________ 2010 г. ПРОГРАММА Курса: ТЕХНОЛОГИЯ МНОГОПОТОЧНЫХ ВЫЧИСЛЕНИЙ НА ОСНОВЕ OpenMP для направления: 010600 ПРИКЛАДНЫЕ МАТЕМАТИКА И ФИЗИКА факультеты: ВСЕ кафедра: ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ курс: 3-6 семестр: ОСЕННИЙ, ВЕСЕННИЙ лекции: 16 часов Зачет: дифф. практические занятия: 18 часов ВСЕГО ЧАСОВ: 34 (семестровый) Программу составили: А.К. Коньков, Н.И. Хохлов Программа обсуждена на заседании кафедры вычислительной математики Зав. кафедрой «31» августа 2010 г. чл.-корр. РАН А.С. Холодов СОДЕРЖАНИЕ КУРСА Лекция 1. Введение в курс Основные типы современных параллельных вычислительных систем и средства параллельного программирования для них. Вычислительные системы с общей памятью. Стандарт OpenMP. Сравнение со стандартными реализациями потоков (WinAPI и POSIX Threads). Поддержка современными компиляторами. Лекция 2. Основы OpenMP. Схема работы OpenMP – приложения. Директивы PRAGMA и функции исполняющей среды OpenMP. Разбор простого примера «Hello World». Основные принципы программирования в OpenMP. Основные правила применения директив OpenMP, использующихся для описания данных и организации параллельных вычислений. Вопросы видимости данных и корректности доступа к данным. Лекция 3. Параллельное выполнение циклов, параллельные секции, синхронизация потоков. Методы распараллеливания циклов и контроля распределения работы между процессорами. Статическое и динамическое распределение итераций между потоками. Способы балансировки работы процессоров с помощью директив OpenMP. Задание внешних переменных окружения с помощью функций OpenMP. Параллельные секции. Синхронизация параллельных потоков. Лекция 4. Профилирование и отладка параллельных приложений. Средства создания, профилирования и отладки, предоставляемые Intel. Все грани оптимизации. Оптимизация на основе анализа выполнения. Важность профилирования для процессорно-интенсивных приложений (большинство HPC). Создание, профилирование и отладка HPC-приложений в интегрированной среде Intel Parallel Studio. Профессиональные инструменты профилирования и отладки Intel VTune и Threading Tools. Уровни анализа. Системный уровень. Уровень приложения, уровень архитектуры процессора. Лекция 5. Введение в специализированные библиотеки Intel. Специализированные библиотеки Intel. Подключение библиотек. Примеры использования основных составляющих MKL (Math Kernel Library). Многопоточность MKL. Основы IPP (Integrated Performance Primitives): организация функций библиотеки, области применения. Семинар 1. Простейшие программы с использованием OpenMP Компиляция и запуск приложений. Разбор простого примера вычисления числа пи. Тестирование масштабируемости приложения. Написание программы перемножения матриц. Семинар 2. Распараллеливание циклов. Параллельное решение задач с рекурсией. Написание и запуск параллельной программы, реализующей быструю сортировку. Средства синхронизации. Параллельное решение численных алгоритмов, использующих неявную схему. Реализация численного решения задачи Дирихле для уравнения Пуассона. Семинар 3. Создание, профилирование и отладка параллельных приложений средствами Intel Parallel Studio. Основы использования Intel Parallel Studio. Parallel Composer средство для создания параллельных приложений с использованием OpenMP и параллельных библиотек. Поиск ошибок трединга с помощью Parallel Inspector. Анализ и оптимизация работы приложения с помощью Parallel Amplifier. Краткое описание Parallel Advisor. Семинар 4. Профессиональное профилирование и отладка параллельных приложений средствами с помощью Intel VTune и Intel Threading Tools. Intel VTune. Методы профилирования приложений. Концепция углубления в код программы. Ответвление на поток в случае многопоточности. Наблюдение за простаивающими потоками. Поиск критического пути выполнения программы. Отслеживание показателей всей системы. Использование Intel Thread Checker и Thread Analyzer. Семинар 5. Работа со специализированными библиотеками Intel. Работа с Intel MKL. Параллельное перемножение матриц с использованием BLAS различных уровней. Решение системы линейных уравнений с использованием LAPACK. Решение системы с разреженной матрицей с использованием PARDISO. Вычисление числа Pi с помощью метода Монте-Карло и генератора псевдослучайных чисел, встроенного в MKL. Параллельное перемножение матриц с использованием IPP. СПИСОК ЛИТЕРАТУРЫ. 1. Описание стандарта и спецификация: http://openmp.org/ 2. https://computing.llnl.gov/tutorials/openMP/ 3. Intel® Math Kernel Library 10.2 – Documentation: http://software.intel.com/en-us/articles/intel-math-kernel-librarydocumentation/ 4. Intel® Parallel Studio – Documentation: http://software.intel.com/enus/articles/intel-parallel-studio-documentation/ 5. В.П. Гергель. Теория и практика параллельных вычислений. ИНТУИТ, Москва, 2007 г., 424 с. 6. М.П. Левин. Параллельное программирование с использованием OpenMP. ИНТУИТ, Москва, 2008 г., 120 с.