ПВТ - осень 2014 - лекция 1 - Введение в параллельные...
-
Upload
alexey-paznikov -
Category
Education
-
view
708 -
download
0
Transcript of ПВТ - осень 2014 - лекция 1 - Введение в параллельные...
Лекция 1. Введение в параллельные вычисления
Пазников Алексей АлександровичКафедра вычислительных систем СибГУТИ
Сайт курса: http://cpct.sibsutis.ru/~apaznikov/teaching/Вопросы: https://piazza.com/sibsutis.ru/fall2014/pct14/home
Параллельные вычислительные технологииОсень 2014 (Parallel Computing Technologies, PCT 14)
Мощность суперкомпьютеров
Мощность суперкомпьютеров: Top500
Список 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
Список Top500
Мощность суперкомпьютеров: экспоненциальный рост
Источник: http://karmak.org/archive/2003/01/art0134.html
Области применения ПВТ - наука
▪ Биология (расшифровка генов)
▪ Теоретическая физика (решение уравнений квантовой физики)
▪ Химия (получение новых материалов)
▪ Метеорология (составление прогнозов погоды)
▪ Геология (разведка полезных ископаемых)
▪ ...
Области применения ПВТ - коммерция
▪ Создание новых автомобилей (аэродинамика поверхностей, моделирование столкновений), самолётов (выбор оптимальной поверхности крыла)
▪ Фармакология (поиск новых лекарств, вакцин)
▪ Финансовое моделирование (поведение биржи, глобальные экономические процессы)
▪ Сырьевой сектор (поиск новых месторождений, моделирование движения газа, нефти)
▪ ...
Плотность мощности процессора
Источник: Intel
Структура современных суперкомпьютеров (Blue Gene)
Структура современных суперкомпьютеров
Структура современных суперкомпьютеров
Структура современных суперкомпьютеров
AMD FusionIntel MIC
Nvidia Echelon Tilera Tile-Gx
Эволюция распределённых ВС
• Моделирование процессов магнетизма
• Моделирование сверхпроводимости
• Задачи гидродинамики
1 ГФЛОПС – 1988: Cray Y-MP; 8 процессоров
1 ТФЛОПС – 1998: Cray T3E; 1 024 процессоров
1 ПФЛОПС – 2008: Cray XT5; 150 000 процессоров
• ???
1 ЭФЛОПС – 2018: _______; ~10 000 000 процессоров
Эволюция распределённых ВС
• Моделирование процессов магнетизма• 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 процессоровИли, может быть,
что-то совершенно иное?
Эволюция распределённых ВС
▪ Много разнообразных параллельных архитектур▪ Отсутствие какого-либо единого соглашения или
единой модели по разработке параллельных алгоритмов и программ
▪ Множество программных моделей, различные способы разработки параллельных программ (языки, среды разработки, интерфейсы)
Сложность параллельного программирования
Алгоритм Программа (на языке C, C++, Java, Fortran, Ruby, Python)
Архитектура
Последовательное программирование
Алгоритм в модели А Программа в
различных парадигмах(MPI, OpenMP, CUDA, TBB, OpenCL, Cilk)
Параллельное программирование
Алгоритм в модели B
Алгоритм в модели C
Архитектура А
Архитектура В
Архитектура С
Сложность параллельного программирования
Алгоритм в модели А Программа в
различных парадигмах(MPI, OpenMP, CUDA, TBB, OpenCL, Cilk)
Параллельное программирование
Алгоритм в модели B
Алгоритм в модели C
Архитектура А
Архитектура В
Архитектура С
▪ Алгоритм: не все задачи могут быть распараллелены на конкретной архитектуре
▪ Переносимость: поддержка одного языка/интерфейса на разных архитектурах (например, MPI или OpenCL)
▪ Алгоритмическая задача: обнаружить параллелизм
▪ Лингвистическая задача: выразить параллелизм
▪ Практическая задача: корректность, производительность
Почему нужно изучать параллельное программирование
▪ Это неизбежно: мультиядерные процессоры, графические ускорители и т.д.
▪ Интересно, познавательно и очень непросто▪ Одна из основных дициплин компьютерных наук
▪ ПВТ распространены повсеместно (конвейнеры, ILP, TLP, языки, операционные системы, программное обеспечение)
▪ Полезно: большие, очень сложные задачи, которые востребованы в мировой науке
▪ ...
Parallel и Concurrent
Процесс
Процесс
Процесс
Процесс
CPU
Ресурс
Память, мьютексы, семафоры,
устройства, ...Concurrent - координация доступа и использования общих ресурсов.
Parallel и Concurrent
Под-задача
Под-задача
Под-задача
CPU
Parallel computing - решение задачи путём разбиения её на подзадачи и решения этих подзадач на различных процессорах.
CPU
CPU
Задача
Анализ параллельных алгоритмов
Ускорение параллельных вычислений
p - число процессоров, n - размер задачи.
T1(n) - время, необходимое одному процессору для решения задачи размера nTp(n) - время для решения p процессорами задачи размера n
χ = T1(n) / Tp(n)
- ускорение параллельных вычислений, определяет “выгоду” от распараллеливания задачи данного размера n
Пример
for (i = 0; i < n; i++) { a[i] = b[i] + c[i];}
Подзадачасумма n / p элементов
Подзадача сумма n / p элементов
Подзадача сумма n / p элементов
Задача:посчитать сумму двух n-элементных векторов
Идеальное распараллеливание:
▪ вычисления равномерно распределяются между p процессорами,
▪ нет накладных расходов
Ускорение:
χ = p
Идеальное распараллеливание
1
1
время
T1
2
p
3
...
Идеальное распараллеливание:
▪ вычисления равномерно распределяются между p процессорами,
▪ нет накладных расходов
Tp(n) = T1(n) / p
Ускорение:
χ = p
Tp(n)
Идеальное распараллеливание
1
1
время
T1
2
p
3
...
Идеальное распараллеливание:
▪ вычисления равномерно распределяются между p процессорами,
▪ нет накладных расходов
Tp(n) = T1(n) / p
Ускорение:
χ = p
На практике редко
Tp(n)
Распараллеливание на практике
1
1
время
T1
2
p
3
...
В реальном мире:
▪ дисбаланс загрузки: последовательные вычисления неравномерно распределяются между процессорами,
Tp(n) = max{T1, i (n)}
Ускорение:
χ ≤ p
Tp(n)T1, i(n)
Распараллеливание на практике
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)
Закон Амдала
Пусть программа содержит часть 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 -> ∞
Ускорение и закон Амдала: примеры
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]);}
Ускорение и закон Амдала: примеры
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
Ускорение и закон Амдала: примеры
x = malloc(n * sizeof(int));
quicksort(x);
n = norm(x);
printf(“vector norm = %d”, m);
Ускорение и закон Амдала: примеры
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)
Ускорение и закон Амдала: примеры
x = malloc(n * sizeof(int));for (;;) { for (i = 0; i < n; i++) { x[i] = func(x[i]); } if (x[0] < eps) // k итераций до условия break;}
Ускорение и закон Амдала: примеры
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
Эффективность параллельного алгоритма
Эффективность параллельного алгоритма - соотношение лучшего возможного времени параллельного алгоритма к реальному значению времени выполнения параллельного алгоритма.
Ep = (T1(n) / p) / Tp(n) = χ / p
▪ Ep ≤ 1, поскольку s ≤ p▪ Ep = Const ⇒ линейное ускорение
Масштабируемость
Параллельный алгоритм сильно масштабируется, если χ = Θ(p) (ускорение линейное, не зависит от n).
Параллельный алгоритм слабо масштабируется, если существует медленно растущая функция f(p), такая что для n = Ω(f(p)) функция Ep(n) остаётся постоянной.
Масштабируемость
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Алгоритм слабо масштабируется