- •Технологии решения сложных задач на кластерных вычислительных системах с использованием средств MPI
- •Программа обучения
- •Введение: Моделирование как методология
- •Введение: Языки программирования
- •Основные понятия вычислительной математики
- •Параллелизм в задачах
- •Параллельное программирование
- •Параллельное программирование
- •Параллельное программирование
- •Параллельное программирование
- •Параллельное программирование
- •Параллельное программирование
- •Ускорение
- •Закон Амдала
Технологии решения сложных задач на кластерных вычислительных системах с использованием средств MPI
6/25/19 |
Москва, МЭИ |
1 |
Программа обучения
Решение инженерных задач на вычислительных системах
Основные понятия вычислительной математики
Основные концепции и инструменты программирования Введение в C/С++
Параллельные технологии решения сложных задач
Понятие параллелизма в программировании и формы его представления.
Использование MPI
Стандарт MPI и его реализации.
Компиляция и запуск MPI программ в Linux и Windows. Синхронные и асинхронные операции обмена сообщениями MPI. Коллективные операции MPI обмена сообщениями. Определяемые пользователем типы данных.
Использование топологий в MPI программах. Многопоточное программирование в MPI
Вычислительные задачи и их реализация на MPI Отладка, оптимизация MPI программ
Вспомогательные инструменты при работе с MPI
–Jump shot
–Intel Trace Analyzer
Общие подходы к оптимизации программ.
6/25/19 |
Москва, МЭИ |
2 |
Введение: Моделирование как методология
• |
Подход «cut-and-try» устарел |
|
|
|
• |
Современная наука: |
|
|
|
|
Система д/у, |
|
|
|
|
представляющая |
|
|
|
|
непрерывную |
Численны |
Гб данных |
Анализ |
|
аппроксимацию |
й |
|
|
|
микроскопической |
экспериме |
|
|
системы или дискретная |
нт |
|
модель |
|
|
|
|
|
1.Построить модель (выбрать представление) |
|
|
|
2. Разработать алгоритм |
|
|
3. Эффективно выполнить вычисления |
|
|
4. Оценить погрешность |
|
|
|
5. Выполнить визуализацию |
• Появляются дисциплины, продвижение в которых возможно только лишь с помощью моделирования и
|
|
Вычисли |
Compute |
использования масштабных вычислений:- |
|
||
|
|
тельная |
science |
– |
Нанотехнологии |
математи |
|
ка |
|
||
– |
Микробиология: поиск новых лекарств |
Моделир |
|
– |
Науки о материалах |
ование |
6/25/19 |
Москва, МЭИ |
3 |
Введение: Языки программирования
• Сила 0 и 1
c = a + b
asm
Точность
0101100101000100011101010
1000100
0101100101110010001010010
1000011
0011101010100010011101010
0100101 Абстракции
0101110101010101010101000C#
0111101 Java
C++
C |
Pasc VB |
|
al |
||
Fortran |
Просто
та
6/25/19 |
Москва, МЭИ |
4 |
Основные понятия вычислительной математики
• Вектор aT=(a1,a2,…,an)
•Матрица A (m x n), A[i,j]
•Функция
•O(f(n))
Округление!
Системы счисления
12610= 1 × 102 + 2 × 101 + 6 × 100
Двоичная система:
011111102 = 0× 27 + 1 × 26 + 1 × 25 + 1 × 24 + 1× 23 + 1 × 22 + 1 × 21 + 0 × 20
Числа с плавающей точкой:
+ .126 × 103
знак мантисса показатель
6/25/19 |
Москва, МЭИ |
5 |
Параллелизм в задачах
Четыре шага при создании параллельных программ:
1.Разделение
•Разделение данных и задач на фрагменты
2.Взаимодействие
•Распределение данных между задачами и установление зависимостей
3.Агломерация
•Задачи группируются для повышения эффективности использования ресурсов
4.Распределение
•Распределение задач по «вычислителям»
«Designing and Building Parallel Programs», Ян Фостер
6/25/19 |
Москва, МЭИ |
6 |
6 |
|
Параллельное программирование
CPU |
CPU |
Memory |
Memory |
Network
CPU |
CPU |
|
|
Memory |
Memory |
|
Модель передачи сообщений
•Множество процессов
•Распределение данных с помощью посылки
сообщений (MPI)
CPU |
|
CP |
|
CPU |
|
CP |
|
|
U |
|
|
|
U |
|
|
|
|
|
|
|
Bus
Memory
Потоки (Threads)
•Один процесс
–Конкурентное
выполнение
•Разделяемые данные и ресурсы (Потоки ОС, OpenMP)
6/25/19 |
Москва, МЭИ |
7 |
Параллельное программирование
•Разделение
–Разделить задачу на фрагменты (подзадачи)
•Взаимодействие
–Определить тип и способ взаимодействия
•Агломерация
–Группировать фрагменты задачи
•Распределение
–Распределить группы задач по процессорам
Задача
Подзадачи
Связи
Группировка
подзадач
Параллельная
программа
6/25/19 |
Москва, МЭИ |
8 |
Параллельное программирование
Разделение.
Выделить как можно больше параллельных фрагментов
•Независимые вычисления и/или данные
•Количество элементарных действий должно быть максимальным
Методы декомпозиции:
•Функциональная декомпозиция
•Декомпозиция по данным
Где нет параллелизма?
Подпрограммы, обрабатывающие объекты, имеющие «состояние»
•Выделение памяти
•Ввод-вывод из файлов Циклы с зависимостями по данным
•Переменная записывается в одной итерации, а считывается в другой – простой проверкой может быть инвертирование цикла
6/25/19 |
Москва, МЭИ |
9 |
Параллельное программирование
Функциональная
декомпозиция
– Анализируется процесс вычислений
Atmosphere Model
Hydrology Ocean
Model Model
Land Surface
Model
Декомпозиция по данным
–Анализируются массивные или часто используемые данные
–Одна и та же операция применяется ко всем данным
6/25/19 |
Москва, МЭИ |
10 |