Технологии решения сложных задач с использованием MPI

Содержание

Слайд 2

Программа обучения Решение инженерных задач на вычислительных системах Основные понятия вычислительной

Программа обучения

Решение инженерных задач на вычислительных системах
Основные понятия вычислительной математики
Основные концепции

и инструменты программирования
Введение в C/С++
Параллельные технологии решения сложных задач
Понятие параллелизма в программировании и формы его представления.
Использование MPI
Стандарт MPI и его реализации.
Компиляция и запуск MPI программ в Linux и Windows.
Синхронные и асинхронные операции обмена сообщениями MPI.
Коллективные операции MPI обмена сообщениями.
Определяемые пользователем типы данных.
Использование топологий в MPI программах.
Многопоточное программирование в MPI
Вычислительные задачи и их реализация на MPI
Отладка, оптимизация MPI программ
Вспомогательные инструменты при работе с MPI
Jump shot
Intel Trace Analyzer
Общие подходы к оптимизации программ.

14 января 2013 г.

Москва, МЭИ

Слайд 3

Подход «cut-and-try» устарел Современная наука: Появляются дисциплины, продвижение в которых возможно

Подход «cut-and-try» устарел
Современная наука:
Появляются дисциплины, продвижение в которых возможно только лишь

с помощью моделирования и использования масштабных вычислений:
Нанотехнологии
Микробиология: поиск новых лекарств
Науки о материалах

14 января 2013 г.

Москва, МЭИ

Система д/у, представляющая непрерывную аппроксимацию микроскопической системы или дискретная модель

Численный эксперимент

Гб данных

Анализ

1.Построить модель (выбрать представление)
2. Разработать алгоритм
3. Эффективно выполнить вычисления
4. Оценить погрешность
5. Выполнить визуализацию

Моделирование

Computer science

Вычисли-тельная математика

Введение: Моделирование как методология

Слайд 4

Сила 0 и 1 c = a + b ? 14

Сила 0 и 1
c = a + b ?

14 января 2013

г.

Москва, МЭИ

01011001010001000111010101000100
01011001011100100010100101000011
00111010101000100111010100100101
01011101010101010101010000111101

Точность

Простота

asm

C

VB

Pascal

C++

Java

C#

Fortran

Абстракции

Введение: Языки программирования

Слайд 5

Вектор aT=(a1,a2,…,an) Матрица A (m x n), A[i,j] Функция O(f(n)) Округление!

Вектор 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
знак мантисса показатель

14 января 2013 г.

Москва, МЭИ

Основные понятия вычислительной математики

Слайд 6

14 января 2013 г. Москва, МЭИ Параллелизм в задачах Четыре шага

14 января 2013 г.

Москва, МЭИ

Параллелизм в задачах

Четыре шага при создании параллельных

программ:
Разделение
Разделение данных и задач на фрагменты
Взаимодействие
Распределение данных между задачами и установление зависимостей
Агломерация
Задачи группируются для повышения эффективности использования ресурсов
Распределение
Распределение задач по «вычислителям»
«Designing and Building Parallel Programs», Ян Фостер
Слайд 7

14 января 2013 г. Москва, МЭИ Параллельное программирование Модель передачи сообщений

14 января 2013 г.

Москва, МЭИ

Параллельное программирование

Модель передачи сообщений
Множество процессов
Распределение данных с

помощью посылки сообщений (MPI)

Потоки (Threads)
Один процесс
Конкурентное выполнение
Разделяемые данные и ресурсы (Потоки ОС, OpenMP)

Memory

Network

Слайд 8

14 января 2013 г. Москва, МЭИ Параллельное программирование Разделение Разделить задачу

14 января 2013 г.

Москва, МЭИ

Параллельное программирование

Разделение
Разделить задачу на фрагменты (подзадачи)
Взаимодействие
Определить тип

и способ взаимодействия
Агломерация
Группировать фрагменты задачи
Распределение
Распределить группы задач по процессорам
Слайд 9

14 января 2013 г. Москва, МЭИ Параллельное программирование Разделение. Выделить как

14 января 2013 г.

Москва, МЭИ

Параллельное программирование

Разделение.
Выделить как можно больше параллельных фрагментов
Независимые

вычисления и/или данные
Количество элементарных действий должно быть максимальным
Методы декомпозиции:
Функциональная декомпозиция
Декомпозиция по данным
Где нет параллелизма?
Подпрограммы, обрабатывающие объекты, имеющие «состояние»
Выделение памяти
Ввод-вывод из файлов
Циклы с зависимостями по данным
Переменная записывается в одной итерации, а считывается в другой – простой проверкой может быть инвертирование цикла
Слайд 10

14 января 2013 г. Москва, МЭИ Параллельное программирование Функциональная декомпозиция Анализируется

14 января 2013 г.

Москва, МЭИ

Параллельное программирование

Функциональная декомпозиция
Анализируется процесс вычислений

Декомпозиция по данным
Анализируются

массивные или часто используемые данные
Одна и та же операция применяется ко всем данным
Слайд 11

14 января 2013 г. Москва, МЭИ Параллельное программирование Взаимодействие Определить тип

14 января 2013 г.

Москва, МЭИ

Параллельное программирование

Взаимодействие
Определить тип и способ взаимодействия подзадач,

определить, какие данные должны быть разделяемыми.
Точка-точка
одна подзадача передает данные другой
Коллективное использование
группа подзадач работает с одной копией данных
Агломерация
Группировка элементарных действий производится для того, чтобы:
повысить производительность и зернистость
локализовать связи
сохранить масштабируемость
упростить программирование
Слайд 12

14 января 2013 г. Москва, МЭИ Параллельное программирование ГОНКИ ДАННЫХ! Обычно

14 января 2013 г.

Москва, МЭИ

Параллельное программирование

ГОНКИ ДАННЫХ!
Обычно проявляют себя в случаях,

когда множество параллельно выполняющихся задач обращаются к общим данным.
Порядок выполнения мог подразумеваться программистом, но не гарантируется в ходе вычислений.
Сложно предугадать
Недетерминированное выполнение
В процессе отладки могут не проявляться
Слайд 13

Коэффициент ускорения при параллельном выполнении программ при ее выполнении на N

Коэффициент ускорения при параллельном выполнении программ при ее выполнении на N

процессорах определяется следующим образом:
В этой формуле
α – участок программы, выполняющийся полностью последовательно
1 – α - полностью параллельный участок программы
N – количество «вычислителей»
Ясно, что при N → ∞, K → 1 / α

14 января 2013 г.

Москва, МЭИ

Ускорение