Система фрагментированного программирования

advertisement
Система фрагментированного
программирования
Перепелкин В.А.
Всероссийская молодежная школа по параллельному программированию
МО ВВС ИВМиМГ
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 разложения матрицы
Download