1 Система автоматизации распараллеливания. Отображение на SMP-кластер. Автор: Картавец Евгений Олегович Научные руководители: д.ф.-м.н. Крюков Виктор Алексеевич к.ф.-м.н. Бахтин Владимир Александрович
2 Система Автоматизации Распараллеливания ФОРТРАН программ (САПФОР). Отображение на кластер. Последовательная Fortran-программа Диалоговая оболочка Генератор База данных Параллельная программа на языке Fortran-DVM DVM-Эксперт Система САПФОР Анализатор
3 Система Автоматизации Распараллеливания ФОРТРАН программ (САПФОР). Отображение на SMP-кластер. Последовательная программа Диалоговая оболочка Генератор База данных Параллельная программа на языке Fortran- DVM/OpenMP Параллельная программа на языке Fortran- DVM/OpenMP DVM/OpenMP -Эксперт Система САПФОР Анализатор
4 Цели дипломной работы 1. Разработка алгоритма преобразования последовательной программы на языке Fortran в параллельную программу на языке Fortran-DVM/OpenMP. 2. Программная реализация DVM/OpenMP- эксперта на основе DVM-эксперта
5 Модель параллелизма DVM/OpenMP
6 DO J = 1, L DO I = 1, L A(I, J) = 0. ENDDO CDVM$ DISTRIBUTE (BLOCK,BLOCK) :: a CDVM$ PARALLEL (j,i) ON a(i,j) !$OMP PARALLEL PRIVATE(j, i) !$OMP DO SCHEDULE (STATIC) !$OMP END DO !$OMP END PARALLEL OpenMP- директивы DVM- директивы
7 Принцип работы DVM-эксперта Наилучший DVM-вариант Наилучший DVM-вариант Выбор наилучшего варианта Генерация вариантов DVM-вариант... DVM-вариант База данных
8 DVM-вариант... Наилучший DVM/OpenMP -вариант Наилучший DVM/OpenMP -вариант DVM-вариант... DVM/OpenMP- вариант DVM/OpenMP- вариант DVM/OpenMP- вариант DVM/OpenMP- вариант DVM/OpenMP- вариант DVM/OpenMP- вариант... База данных Шаг 1. Распараллеливание DVM-вариантов на OpenMP Принцип работы DVM/OpenMP-эксперта
9 Шаг 1. Распараллеливание DVM- вариантов на OpenMP Шаг 1.1 Формирование вариантов распараллеливания гнезда циклов, Шаг 1.2 Оценка времени выполнения каждого построенного варианта, Шаг 1.3 Выбор наилучшего варианта из построенных, Шаг 1.4 Добавление для него OpenMP-директивы в DVM-вариант. Распараллеливаем каждый DVM-вариант. Для каждого гнезда циклов, распараллеленного на DVM, выполняем следующие шаги:
10 Шаг 1. Распараллеливание DVM-вариантов на OpenMP CDVM$ PARALLEL … ON … Шаг 1.1 Формирование вариантов распараллеливания гнезда циклов... DO ITm = 1, Nm ENDDO... DO IT2 = 1, N2 ENDDO DO IT1 = 1, N1 ENDDO DO IT1 = 1, N1 ENDDO DO IT2 = 1, N2 ENDDO DO ITm = 1, Nm ENDDO
11 Шаг 1. Распараллеливание DVM-вариантов на OpenMP Случай 1: витки i-го цикла могут выполняться независимо: DO ITi = 1, Nm... ENDDO CDVM$ PARALLEL … ON … DO IT1 = 1, N1 DO IT2 = 1, N ENDDO Шаг 1.1 Формирование вариантов распараллеливания гнезда циклов
12 Шаг 1. Распараллеливание DVM-вариантов на OpenMP CDVM$ PARALLEL … ON … DO IT1 = 1, N1 DO IT2 = 1, N ENDDO !$OMP PARALLEL !$OMP DO SCHEDULE (STATIC) !$OMP END DO !$OMP END PARALLEL Случай 1: витки i-го цикла могут выполняться независимо: ENDDO DO ITi = 1, Nm... ENDDO DO ITi = 1, Nm PRIVATE(ITi) Шаг 1.1 Формирование вариантов распараллеливания гнезда циклов
13 Шаг 1. Распараллеливание DVM-вариантов на OpenMP CDVM$ PARALLEL … ON … DO IT1 = 1, N1 DO IT2 = 1, N ENDDO !$OMP PARALLEL !$OMP DO SCHEDULE (STATIC) !$OMP END DO !$OMP END PARALLEL Случай 1: витки i-го цикла могут выполняться независимо: ENDDO DO ITi = 1, Nm Sum = Sum + A(ITi) !$OMP PARALLEL !$OMP DO SCHEDULE (STATIC) !$OMP END DO !$OMP END PARALLEL !$OMP PARALLEL !$OMP DO SCHEDULE (STATIC) !$OMP END DO !$OMP END PARALLEL REDUCTION(+:sum)... PRIVATE(ITi) Шаг 1.1 Формирование вариантов распараллеливания гнезда циклов
14 Шаг 1. Распараллеливание DVM-вариантов на OpenMP Алгоритм конвейерной обработки с использованием синхронизационного массива Случай 2: i-й цикл содержит регулярную зависимость: Шаг 1.1 Формирование вариантов распараллеливания гнезда циклов
15 DVM-вариант... Наилучший DVM/OpenMP -вариант Наилучший DVM/OpenMP -вариант DVM-вариант... DVM/OpenMP- вариант DVM/OpenMP- вариант DVM/OpenMP- вариант DVM/OpenMP- вариант DVM/OpenMP- вариант DVM/OpenMP- вариант Практическая реализация Принцип работы DVM/OpenMP-эксперта... База данных Шаг 1. Распараллеливание DVM-вариантов на OpenMP Шаг 2. Выбор наилучшего варианта распараллеливания
16 Практическая реализация Выбор наилучшего варианта в DVM-эксперте DVM-варианты Характеристики DVM-вариантов Наилучший DVM-вариант Наилучший DVM-вариант Выбор наилучшего варианта в DVM/OpenMP-эксперте DVM/OpenMP- варианты Характеристики DVM-вариантов Характеристики DVM/OpenMP - вариантов Наилучший DVM/OpenMP -вариант Наилучший DVM/OpenMP -вариант Шаг 2. Выбор наилучшего варианта распараллеливания :
17 Шаг 2. Выбор наилучшего варианта распараллеливания Характеристики DVM-вариантов Характеристики DVM/OpenMP - вариантов Время вычислений в параллельном цикле Время вычислений в параллельном цикле := * Количество итераций, выполняющихся на одном узле Количество итераций, выполняющихся на одном ядре
18 Результаты работы IBM eServer pSeries 690 (Regatta)
19 Результаты Разработан алгоритм построения DVM/OpenMP-вариантов распараллеливания программ Разработан алгоритм оценки характеристик эффективности DVM/OpenMP-вариантов распараллеливания программ Алгоритмы были программно реализованы в DVM/OpenMP-эксперте, осуществляющим автоматическое преобразование последовательных программ на языке Fortran в параллельные программы для SMP- кластеров Работа системы была протестирована на Fortran-программах, а также проверена при помощи Intel Thread Checker.