Студенческая исследовательская лаборатория Intel в МГУ ТЕХНОЛОГИИ ИНТЕЛ ДЛЯ РАЗРАБОТКИ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ. Лекция 1. Глазкова Е. А. katrin-elinor@yandex.ru План лекции n n n n n Оптимизация производительности параллельных программ Профилирование Сбор трасс Основные метрики Краткий обзор средств и технологий Интел для параллельного программирования и высокопроизводительных вычислений n n n Компиляторы и анализаторы производительности Высокопроизводительные и многонитевые библиотеки Технологии для кластеров Студенческая исследовательская лаборатория Intel в МГУ 2 Почему нужно анализировать производительность приложений? n В HPC - это высокая стоимость приобретения и содержания суперкомпьютерной системы. n Цели: решать быстрее и точнее n Те же цели преследуют и разработчики приложений для устройств меньшего размера больше, Студенческая исследовательская лаборатория Intel в МГУ 3 Цикл оптимизации производительности программы Студенческая исследовательская лаборатория Intel в МГУ 4 Профилирование n Профилирование – это создание таблиц, которые обобщают поведение программы: n n n n сколько раз была вызвана функция; время выполнения функции; дерево или граф вызовов в программе; значения аппаратных счетчиков и т.п. Студенческая исследовательская лаборатория Intel в МГУ 5 Профилирование n n n Помогает определить "узкие места" и "горячие точки" в программе "Принцип 80/20" - 80% времени выполнения программы соответствует 20% кода Не нужно тратить время на оптимизацию того кода, который незначительно влияет на производительности. n Профилирование имеет низкие накладные расходы со сбором трасс. n Реализуется через: n n Семплирование – периодические прерывания ОС или прерывания по значению аппаратных счетчиков Инструментирование – вставка в программу кода, измеряющего производительность Студенческая исследовательская лаборатория Intel в МГУ 6 Total time и Self time Total time для main: 100 сек. n Self time для main: 100–20–50–20 = 10 сек. n Аналогично для другим метрик: аппаратных счетчиков, объема сообщений и т.п. Студенческая исследовательская лаборатория Intel в МГУ 7 Сбор трасс n Сбор трасс подразумевает запись потока событий: n n n n n n вход/выход в участок кода (функцию, цикл…); взаимодействие процессов (нитей) - приемы/передачи сообщений и т. д. Запись того, где и когда случилось каждое событие. Событие обычно записывается в виде метки, номера процесса (нити), типа события и данных о событии. Трасса позволяет анализировать производительность и корректность программы. Профиль программы может быть восстановлен по ее трассе. Обычно требует инструментирования кода. Студенческая исследовательская лаборатория Intel в МГУ 8 Сбор трасс Студенческая исследовательская лаборатория Intel в МГУ 9 Визуализация трассы Студенческая исследовательская лаборатория Intel в МГУ 10 Средства и технологии Интел для параллельного программирования и высокопроизводительных вычислений n Компиляторы и анализаторы производительности: n n n n Intel C++ Compiler Intel Fortran Compiler Intel VTune Performance Analyzer Высокопроизводительные и многонитевые библиотеки: n n n n Intel Math Kernel Library Intel Integrated Performance Primitives Intel Threading Building Blocks Intel Thread Checker Студенческая исследовательская лаборатория Intel в МГУ 11 Средства и технологии Интел для параллельного программирования и высокопроизводительных вычислений n Технологии для кластеров: n Intel Cluster Toolkit: n n n n n Intel MPI Library Intel MPI Benchmarks Intel Trace Analyzer and Collector Intel Math Kernel Library Intel Cluster Toolkit Compiler Edition: n То же самое + компиляторы, TBB, IPP и отладчик Студенческая исследовательская лаборатория Intel в МГУ 12 Технологии Интел для кластеров Студенческая исследовательская лаборатория Intel в МГУ 13 Intel® Math Kernel Library (Intel® MKL) n Intel® MKL – библиотека потокобезопасных, высоко оптимизированных математических функций для инженерных, научных и финансовых приложений. Студенческая исследовательская лаборатория Intel в МГУ 14 Intel® Math Kernel Library (Intel® MKL) Студенческая исследовательская лаборатория Intel в МГУ 15 Intel® Integrated Performance Primitives (Intel® IPP) n n Intel IPP – библиотека функций для обработки мультимедиа. Содержит несколько сотен высоко оптимизированных функций, которые могут применяться для следующих задач: n n n n n n n n n кодирование и декодирование аудио, видео; машинное зрение; криптография; сжатие данных; обработка изображения; трассировка лучей/визуализация; обработка сигналов; распознавание речи; векторная/матричная математика; Поддерживает расширенные наборы инструкций MMX и SSE. Студенческая исследовательская лаборатория Intel в МГУ 16 Intel MPI Library n Поддерживаются: n n n n n n n –Shared memory –InfiniBand (via DAPL) –Myrinet(via DAPL) –Quadrics (via DAPL) –AmmassoRNIC AmmassoRNIC (via DAPL) –Dolphin Dolphin SCI (via sockets) –Ethernet Ethernet (via sockets and DAPL) Студенческая исследовательская лаборатория Intel в МГУ 17 Intel® Trace Analyzer and Collector n n n Trace Analyzer – сбор трасс Trace Collector – визуализация трасс Поддерживаемые языки: n n Поддерживаются технологии: n n n C/C++, Fortran, Java MPI, OpenMP, MPI+OpenMP ОС: Linux, Microsoft Windows Архитектуры: IA32, Intel64, IPF Студенческая исследовательская лаборатория Intel в МГУ 18 Intel® Trace Analyzer and Collector Студенческая исследовательская лаборатория Intel в МГУ 19 Intel® Trace Analyzer and Collector n Позволяет определять дисбаланс нагрузки в программе. n Можно симулировать поведение программы при различных условиях, например, при очень медленных коммуникациях. n Позволяет определить тупики в MPI-программе и ошибки в использовании MPI типов данных, буферов, коммуникаторов, операций точка-точка и коллективных операций. Студенческая исследовательская лаборатория Intel в МГУ 20 Intel® VTune Performance Analyzer n Intel® VTune - приложение для анализа производительности программ. n Дерево вызовов обеспечивает графическое представление потока исполнения приложения. Поиск «критического пути». Строится на основе инструментирования двоичных исполняемых файлов. Студенческая исследовательская лаборатория Intel в МГУ 21 Intel® VTune Performance Analyzer n Семплирование n Семплирование на основе событий обнаруживает места в программе, где происходят промахи кэши, ошибочные предсказания перехода и т.п. Семплирование на основе событий имеет очень низкие накладные расходы обычно меньше 5%. nРезультаты семплирования отображаются построчно на исходный код. Студенческая исследовательская лаборатория Intel в МГУ 22