Система фрагментированного программирования Перепелкин В.А. Всероссийская молодежная школа по параллельному программированию МО ВВС ИВМиМГ 2009 г. План • Модель фрагментированной программы • Динамические свойства • Система фрагментированного программирования Модель фрагментированной программы < WHILE (…) • Множество фрагментов данных • Множество фрагментов вычислений • Управление ( <, run, for, while ) • Отношение соседства • Начальное распределение • Способ балансировки загрузки • Шаблон исполнения FOR (…) RUN Фрагментированный алгоритм и фрагментированная программа Отношение соседства и балансировка загрузки ПРОЦЕССОР 1 ПРОЦЕССОР 2 Шаблоны исполнения • Слишком большая непроцедурность программы влечет сложности исполнения • В таких случаях используется исполнение по шаблону – – – – – Fork / Join Конвейер Разделяй и властвуй Массовые вычисления … Фрагментированное умножение матриц Aij Fijk Cij Bij Fijk: Cij = Cij + Aik × Bkj Дополнительное управление B A Дополнительное управление B A PIC метод и привязка к модели • Множество модельных частиц • Частицы взаимодействуют с полем • Поле представляется пространственной сеткой значений • Частицы распределены по ячейкам Требуемые динамические свойства • Масштабируемость • Балансировка загрузки • Настройка на аппаратные ресурсы – Коммуникации одновременно с вычислениями • Переносимость • Учет поведения модели Масштабируемость B A • Масштабируемость алгоритма – забота пользователя • Масштабируемость исполнения программы – забота исполняющего окружения Балансировка загрузки • Причины дисбаланса: – Скопления частиц и разреженные области – Динамический временной шаг – Адаптивные сетки • Балансировка загрузки осуществляется путем перераспределения фрагментов данных и вычислений Система фрагментированного программирования • Язык представления фрагментов и фрагментированных программ – Ориентированный на человека, визуальный • Компилятор • Исполнительная система – Разные системы для разных классов компьютеров • Библиотека фрагментов и фрагментированных подпрограмм • Профилировщик • Средства разработки и отладки Система Фрагментированного Программирования Визуальная среда разработки Компилятор Параллельная библиотека Исполняемый фрагментированный код Компилятор Исполнительное окружение Язык представления фрагментированных программ • Запрограммировать алгоритм • Задать рекомендации: – Распределение данных и отношение соседства – Способ балансировки загрузки – Шаблон исполнения – Динамика поведения модели –… Компилятор • Статический анализ и оптимизация программы • Подстановка подходящих фрагментов и процедур из библиотеки • Генерация исполняемого фрагментированного кода • Создание плана исполнения фрагментированной программы Исполнительная система • Инкапсулирует системную составляющую исполнения программы в соответствии со спецификой аппаратного обеспечения • Исполняет фрагментированную программу – Порождение фрагментов вычислений и данных по мере необходимости – Перемещение фрагментов между процессорами – Запуск вычислений в соответствии с управлением – Обеспечение и синхронизация доступа к данным – Балансировка загрузки • Переносимость программ достигается реализацией ИС для различных архитектур Настройка на ресурсы • Архитектурные особенности: – Производительность процессоров – Объемы оперативной и кэш-памяти – Расширения и спец. вычислители – Пропускная способность и топология сети – Размер буфера отправки сообщений – ... • Настройку осуществляет исполнительная система Библиотека • Набор оптимизированных и отлаженных – Фрагментов – Подпрограмм • Различные реализации для разных случаев Профилировщик • Исследование характеристик исполнения программы • Подстройка параметров на основе профиля исполнения – – – – – – Размер и количество фрагментов Набор процедур и подпрограмм Шаблоны исполнения Распределение данных Способ балансировки … Жизненный цикл программы Пользователь Программа Компилятор Рекомендации Программа Данные Исполнительная система Профиль Резюме • Представление программы параллельное – фрагмент – «гранула» параллелизма • Фрагментированность программы сохраняется во время исполнения – Возможны манипуляции с программой во время исполнения • Системная составляющая программы сконцентрирована в исполнительной системе – Не требуется специализированных знаний в программировании • Круг задач ограничен численным моделированием – Используются регулярности в данных и вычислениях для эффективного исполнения • Используются (интегрируются) существующие библиотеки и технологии Спасибо за внимание! Промежуточное представление фрагментированной программы Исполнительная система 1 Язык ФП Исполнительная система 2 Другой Язык ФП Промежуточное представление Система Фрагментированного Программирования Визуальная среда разработки Компилятор Параллельная библиотека Исполняемый фрагментированный код Компилятор Исполнительное окружение Разный порядок исполнения в задаче LU разложения матрицы