Технология Фрагментированного Программирования Летняя школа по параллельному программированию Отдел МО ВВС ИВМиМГ СО РАН 2009 г.
ФП – технология параллельного программирования Вопрос: зачем нужна ещё одна технология параллельного программирования? Ответ: Существующие технологии не справляются со своей задачей
Что мы хотим от технологии ПП? Хотим писать программы с минимумом усилий, а в результате получать эффективную программу Такого не бывает!
Синтез программ Идея: синтезировать программу из готовых программ Вопрос: почему до сих пор никто такого не сделал? Ответ: программы плохо совместимы друг с другом!
Плохая совместимость программ Вопрос: Что делать? Различные задачи Различные архитектуры
Разделение обязанностей Различные задачи Различные архитектуры
Представление алгоритма Явный параллелизм Структура данных и вычислений Гибкая параметризация Возможность сборки Использование обычных подпрограмм Рекомендации по способу исполнения Задачи Исполнительной Системы Настройка на аппаратные ресурсы Управление вычислениями и коммуникациями Динамическая балансировка загрузки Run-time оптимизация
Исполнительная система Фрагментированная программа Обычная параллельная программа (MPI и т.п.)
Последовательное программирование Входные данные Выходные данные Программа
Декомпозиция вычислений Входные данные Выходные данные Программа
Параллельное исполнение на мультипроцессоре Входные данные Выходные данные Программы
Синхронизация потоков исполнения Входные данные Выходные данные Программы
Синхронизация потоков исполнения Входные данные Выходные данные Программы + Код синхронизации
Декомпозиция данных Входные данные Выходные данные Программы + Код синхронизации
Дополнительные данные и код работы с ними Входные данные Выходные данные Программы Код синхронизации Код работы с данными
Динамическая передача данных Входные данные Выходные данные Программы Код синхронизации Код работы с данными Код передачи данных
Динамическая балансировка нагрузки Входные данные Выходные данные Программы Код синхронизации Код работы с данными Код передачи данных Код балансировки
Накладные расходы в параллельных задачах
Последовательное программирование Входные данные Выходные данные Программа
Фрагментированная программа Фрагментированные входные данные Фрагментированные выходные данные Фрагментированная Программа и промежуточные данные
Сборка программы из фрагментов Программа собирается из готовых фрагментов одним из допустимых способов
Фрагментированная программа в процессе исполнения Фрагменты, готовые к вычислениям Фрагменты, не готовые к вычислениям
Фрагментированная программа в процессе исполнения Выполненные фрагменты Вычисленные значения Фрагменты, не готовые к вычислениям Фрагменты, готовые к вычислениям
Фрагментированная программа в процессе исполнения Выполненные фрагменты Вычисленные значения Ненужные более данные Фрагменты, не готовые к вычислениям Фрагменты, готовые к вычислениям
Исполнительная система
Последовательная ИС
Мультипроцессорная ИС Слой многопоточной обработки
Мультикомпьютерная ИС
Балансировка нагрузки
Особенности фрагментированного программирования Явный параллелизм Исполнительная система Планировка вычислений Балансировка нагрузки Коммуникации на фоне счета Накопление параллельных решений Высокоуровневое описание алгоритма
Модель: Фрагментированная программа Фрагменты вычислений и данных Формальные и фактические фрагменты Структура данных и вычислений Управление: прямое, потоковое Переменные программы vs алгоритма Способ исполнения: какие бывают рекомендации
Разный порядок исполнения
Структурная составляющая
Система Фрагментированного Программирования Визуальная среда разработки Промежуточное представление программы Исполнительное окружение Компилятор Параллельная библиотека
Жизненный цикл фрагментированной программы
Промежуточное представление фрагментированной программы
Обзор проекта ФП Языки высокого уровня Текстовый Визуальный Язык машинного представления Исполнительные системы Для мультипроцессоров Для мультикомпьютеров Для спецвычислителей (Cell BE, GPGPU) Библиотеки подпрограмм
Технология Фрагментированного Программирования Конец