ПВТ - осень 2014 - лекция 1 - Введение в параллельные...

38
Лекция 1. Введение в параллельные вычисления Пазников Алексей Александрович Кафедра вычислительных систем СибГУТИ Сайт курса: http://cpct.sibsutis.ru/~apaznikov/teaching/ Вопросы: https://piazza.com/sibsutis.ru/fall2014/pct14/home Параллельные вычислительные технологии Осень 2014 (Parallel Computing Technologies, PCT 14)

Upload: alexey-paznikov

Post on 23-Jul-2015

707 views

Category:

Education


0 download

TRANSCRIPT

Page 1: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Лекция 1. Введение в параллельные вычисления

Пазников Алексей АлександровичКафедра вычислительных систем СибГУТИ

Сайт курса: http://cpct.sibsutis.ru/~apaznikov/teaching/Вопросы: https://piazza.com/sibsutis.ru/fall2014/pct14/home

Параллельные вычислительные технологииОсень 2014 (Parallel Computing Technologies, PCT 14)

Page 2: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Мощность суперкомпьютеров

Page 3: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Мощность суперкомпьютеров: Top500

Page 4: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Список Top500

Site System CoresRmax (TFlop/s)

Rpeak (TFlop/s)

Power (kW)

1 National University of Defense TechnologyChina

Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster, Intel Xeon E5-2692 12C 2.200GHz, TH Express-2, Intel Xeon Phi 31S1P NUDT

3,120,000

33,862.7 54,902.4 17,808

2 DOE/SC/Oak Ridge National LaboratoryUnited States

Titan - Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x Cray Inc.

560,640 17,590.0 27,112.5 8,209

3 DOE/NNSA/LLNLUnited States

Sequoia - BlueGene/Q, Power BQC 16C 1.60 GHz, Custom IBM

1,572,864

17,173.2 20,132.7 7,890

4 RIKEN Advanced Institute for Computational Science (AICS)Japan

K computer, SPARC64 VIIIfx 2.0GHz, Tofu interconnectFujitsu

705,024 10,510.0 11,280.4 12,660

Page 5: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Список Top500

Page 6: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Мощность суперкомпьютеров: экспоненциальный рост

Источник: http://karmak.org/archive/2003/01/art0134.html

Page 7: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Области применения ПВТ - наука

▪ Биология (расшифровка генов)

▪ Теоретическая физика (решение уравнений квантовой физики)

▪ Химия (получение новых материалов)

▪ Метеорология (составление прогнозов погоды)

▪ Геология (разведка полезных ископаемых)

▪ ...

Page 8: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Области применения ПВТ - коммерция

▪ Создание новых автомобилей (аэродинамика поверхностей, моделирование столкновений), самолётов (выбор оптимальной поверхности крыла)

▪ Фармакология (поиск новых лекарств, вакцин)

▪ Финансовое моделирование (поведение биржи, глобальные экономические процессы)

▪ Сырьевой сектор (поиск новых месторождений, моделирование движения газа, нефти)

▪ ...

Page 9: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Плотность мощности процессора

Источник: Intel

Page 10: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Структура современных суперкомпьютеров (Blue Gene)

Page 11: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Структура современных суперкомпьютеров

Page 12: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Структура современных суперкомпьютеров

Page 13: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Структура современных суперкомпьютеров

AMD FusionIntel MIC

Nvidia Echelon Tilera Tile-Gx

Page 14: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Эволюция распределённых ВС

• Моделирование процессов магнетизма

• Моделирование сверхпроводимости

• Задачи гидродинамики

1 ГФЛОПС – 1988: Cray Y-MP; 8 процессоров

1 ТФЛОПС – 1998: Cray T3E; 1 024 процессоров

1 ПФЛОПС – 2008: Cray XT5; 150 000 процессоров

• ???

1 ЭФЛОПС – 2018: _______; ~10 000 000 процессоров

Page 15: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Эволюция распределённых ВС

• Моделирование процессов магнетизма• Fortran + MPI (Message Passing Interface)

• Моделирование сверхпроводимости• C/C++/Fortran + MPI + векторизация

• Задачи гидродинамики• Fortran77 + векторизация

1 ГФЛОПС – 1988: Cray Y-MP; 8 процессоров

1 ТФЛОПС – 1998: Cray T3E; 1 024 процессоров

1 ПФЛОПС – 2008: Cray XT5; 150 000 процессоров

• ???• C/C++/Fortran + MPI + CUDA/OpenCL/OpenMP/OpenACC

1 ЭФЛОПС – 2018: _______; ~10 000 000 процессоровИли, может быть,

что-то совершенно иное?

Page 16: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Эволюция распределённых ВС

▪ Много разнообразных параллельных архитектур▪ Отсутствие какого-либо единого соглашения или

единой модели по разработке параллельных алгоритмов и программ

▪ Множество программных моделей, различные способы разработки параллельных программ (языки, среды разработки, интерфейсы)

Page 17: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Сложность параллельного программирования

Алгоритм Программа (на языке C, C++, Java, Fortran, Ruby, Python)

Архитектура

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

Алгоритм в модели А Программа в

различных парадигмах(MPI, OpenMP, CUDA, TBB, OpenCL, Cilk)

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

Алгоритм в модели B

Алгоритм в модели C

Архитектура А

Архитектура В

Архитектура С

Page 18: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Сложность параллельного программирования

Алгоритм в модели А Программа в

различных парадигмах(MPI, OpenMP, CUDA, TBB, OpenCL, Cilk)

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

Алгоритм в модели B

Алгоритм в модели C

Архитектура А

Архитектура В

Архитектура С

▪ Алгоритм: не все задачи могут быть распараллелены на конкретной архитектуре

▪ Переносимость: поддержка одного языка/интерфейса на разных архитектурах (например, MPI или OpenCL)

▪ Алгоритмическая задача: обнаружить параллелизм

▪ Лингвистическая задача: выразить параллелизм

▪ Практическая задача: корректность, производительность

Page 19: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Почему нужно изучать параллельное программирование

▪ Это неизбежно: мультиядерные процессоры, графические ускорители и т.д.

▪ Интересно, познавательно и очень непросто▪ Одна из основных дициплин компьютерных наук

▪ ПВТ распространены повсеместно (конвейнеры, ILP, TLP, языки, операционные системы, программное обеспечение)

▪ Полезно: большие, очень сложные задачи, которые востребованы в мировой науке

▪ ...

Page 20: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Parallel и Concurrent

Процесс

Процесс

Процесс

Процесс

CPU

Ресурс

Память, мьютексы, семафоры,

устройства, ...Concurrent - координация доступа и использования общих ресурсов.

Page 21: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Parallel и Concurrent

Под-задача

Под-задача

Под-задача

CPU

Parallel computing - решение задачи путём разбиения её на подзадачи и решения этих подзадач на различных процессорах.

CPU

CPU

Задача

Page 22: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Анализ параллельных алгоритмов

Page 23: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Ускорение параллельных вычислений

p - число процессоров, n - размер задачи.

T1(n) - время, необходимое одному процессору для решения задачи размера nTp(n) - время для решения p процессорами задачи размера n

χ = T1(n) / Tp(n)

- ускорение параллельных вычислений, определяет “выгоду” от распараллеливания задачи данного размера n

Page 24: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Пример

for (i = 0; i < n; i++) { a[i] = b[i] + c[i];}

Подзадачасумма n / p элементов

Подзадача сумма n / p элементов

Подзадача сумма n / p элементов

Задача:посчитать сумму двух n-элементных векторов

Идеальное распараллеливание:

▪ вычисления равномерно распределяются между p процессорами,

▪ нет накладных расходов

Ускорение:

χ = p

Page 25: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Идеальное распараллеливание

1

1

время

T1

2

p

3

...

Идеальное распараллеливание:

▪ вычисления равномерно распределяются между p процессорами,

▪ нет накладных расходов

Tp(n) = T1(n) / p

Ускорение:

χ = p

Tp(n)

Page 26: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Идеальное распараллеливание

1

1

время

T1

2

p

3

...

Идеальное распараллеливание:

▪ вычисления равномерно распределяются между p процессорами,

▪ нет накладных расходов

Tp(n) = T1(n) / p

Ускорение:

χ = p

На практике редко

Tp(n)

Page 27: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Распараллеливание на практике

1

1

время

T1

2

p

3

...

В реальном мире:

▪ дисбаланс загрузки: последовательные вычисления неравномерно распределяются между процессорами,

Tp(n) = max{T1, i (n)}

Ускорение:

χ ≤ p

Tp(n)T1, i(n)

Page 28: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Распараллеливание на практике

1

1

время

2

p

3

...

W(n) = ΣTi(n) - работа параллельного алгоритма - суммарное число инструкций

С(n) = p × Tp(n) - “цена” параллельного алгоритма: суммарное время, в течение которого p процессоров заняты

Tp(n)Ti(n)

С(n)

1 2 3 p W(n)

Page 29: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Закон Амдала

Пусть программа содержит часть r, которая может быть распараллелена идеально (ускорение равно p) и полностью последовательную часть s = 1 - r, которая вообще не может быть распараллелена. Для каждого фиксированного n, максимально допустимое ускорение - 1 / s.

Доказательство:T1(n) = (s + r) * T1(n)Tp(n) = s * T1(n) + r * T1(n) / p

χ = T1(n) / (s * T1(n) + r * T1(n) / p) = = 1 / (s + r / p) -> 1 / s для p -> ∞

Page 30: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Ускорение и закон Амдала: примеры

scanf(“%d”, &k);

for (i = 0; i < n; i++) { x[i] = y[i] * k;}

for (i = 0; i < n; i++) { printf(“x[i] = %d\n”, x[i]);}

Page 31: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Ускорение и закон Амдала: примеры

scanf(“%d”, &k);

for (i = 0; i < n; i++) { x[i] = y[i] * k;}

for (i = 0; i < n; i++) { printf(“x[i] = %d\n”, x[i]);}

T1(n) = 1 + n + n;Tp(n) = 1 + n / p + n;χ = (1 + n + n) / / (1 + n / p + n) = = 〈p ⟶ ∞〉= = (2n) / (n) = 2

По закону Амдала:

Последовательная часть:s ≈ 1 - 0.5 = 0.5χ = 2

Page 32: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Ускорение и закон Амдала: примеры

x = malloc(n * sizeof(int));

quicksort(x);

n = norm(x);

printf(“vector norm = %d”, m);

Page 33: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Ускорение и закон Амдала: примеры

x = malloc(n * sizeof(int));

quicksort(x);

n = norm(x);

printf(“vector norm = %d”, m);

T1(n) = 1 + nlogn + n + 1Tp(n) = 1 + logn + n + 1;χ = (nlogn + n) / (logn + n) = = (n(logn + 1)) / (logn + n)

Page 34: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Ускорение и закон Амдала: примеры

x = malloc(n * sizeof(int));for (;;) { for (i = 0; i < n; i++) { x[i] = func(x[i]); } if (x[0] < eps) // k итераций до условия break;}

Page 35: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Ускорение и закон Амдала: примеры

x = malloc(n * sizeof(int));for (;;) { for (i = 0; i < n; i++) { x[i] = func(x[i]); } if (x[0] < eps) // k итераций до условия break;}

T1(n) = 1 + k + knTp(n) = 1 + k + kn / p;χ =〈p ⟶ ∞〉= (k (1 + n) / (k) = 1 + n

Page 36: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Эффективность параллельного алгоритма

Эффективность параллельного алгоритма - соотношение лучшего возможного времени параллельного алгоритма к реальному значению времени выполнения параллельного алгоритма.

Ep = (T1(n) / p) / Tp(n) = χ / p

▪ Ep ≤ 1, поскольку s ≤ p▪ Ep = Const ⇒ линейное ускорение

Page 37: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Масштабируемость

Параллельный алгоритм сильно масштабируется, если χ = Θ(p) (ускорение линейное, не зависит от n).

Параллельный алгоритм слабо масштабируется, если существует медленно растущая функция f(p), такая что для n = Ω(f(p)) функция Ep(n) остаётся постоянной.

Page 38: ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления

Масштабируемость

x = malloc(n * sizeof(int));for (;;) { for (i = 0; i < n; i++) { x[i] = func(x[i]); } if (x[0] < eps) // k итераций до условия break;}

T1(n) = 1 + k + kn; Tp(n) = 1 + k + kn / p;Ep(n) = ((1 + k + kn) / p) / (1 + k + kn / p) = = (k / p + (kn) / p) / (k + kn / p) = = (1 / p + n / p) / (1 + n / p) = = (n / p) / (1 + n / p) =

Если n ≥ p, то E(n) ≥ 0.5Алгоритм слабо масштабируется