SlideShare a Scribd company logo
Лекция 1. Актуальность параллельных
вычислений. Анализ параллельных
алгоритмов. Вычислительные системы
с общей памятью
Пазников Алексей Александрович
Кафедра вычислительных систем СибГУТИ
Сайт курса: http://cpct.sibsutis.ru/~apaznikov/teaching/
Q/A: https://piazza.com/sibsutis.ru/spring2015/pct2015spring
Параллельные вычислительные технологии
Весна 2015 (Parallel Computing Technologies, PCT 15)
1
Актуальность
параллельных
вычислений
2
Мощность суперкомпьютеров
3
Мощность суперкомпьютеров: Top500
4
Список Top500
Site System Cores
Rmax
(TFlop/s)
Rpeak
(TFlop/s)
Power
(kW)
1 National University
of Defense
Technology
China
Tianhe-2 (MilkyWay-2) -
TH-IVB-FEP Cluster, Intel
Xeon E5-2692 12C 2.200
GHz, TH Express-2, Intel
Xeon Phi 31S1P NUDT
3,120,00
0
33,862.7 54,902.4 17,808
2 DOE/SC/Oak Ridge
National Laboratory
United States
Titan - Cray XK7 ,
Opteron 6274 16C 2.200
GHz, Cray Gemini
interconnect, NVIDIA
K20x Cray Inc.
560,640 17,590.0 27,112.5 8,209
3 DOE/NNSA/LLNL
United States
Sequoia - BlueGene/Q,
Power BQC 16C 1.60
GHz, Custom IBM
1,572,86
4
17,173.2 20,132.7 7,890
4 RIKEN Advanced
Institute for
Computational
Science (AICS)
Japan
K computer, SPARC64
VIIIfx 2.0GHz, Tofu
interconnect
Fujitsu
705,024 10,510.0 11,280.4 12,660
5
Список Top500
6
Мощность суперкомпьютеров: экспоненциальный рост
Источник: http://karmak.org/archive/2003/01/art0134.html 7
Области применения ПВТ - наука
▪ Биология (расшифровка генов)
▪ Теоретическая физика (решение
уравнений квантовой физики)
▪ Химия (получение новых материалов)
▪ Метеорология (составление прогнозов
погоды)
▪ Геология (разведка полезных
ископаемых)
▪ ...
8
Области применения ПВТ - коммерция
▪ Создание новых автомобилей (аэродинамика
поверхностей, моделирование столкновений),
самолётов (выбор оптимальной поверхности
крыла)
▪ Фармакология (поиск новых лекарств, вакцин)
▪ Финансовое моделирование (поведение биржи,
глобальные экономические процессы)
▪ Сырьевой сектор (поиск новых месторождений,
моделирование движения газа, нефти)
▪ ...
9
Плотность мощности процессора
Источник: Intel 10
Почему
разрабатывать
параллельные
программы сложно
11
Структура современных суперкомпьютеров (Blue Gene)
12
Структура современных суперкомпьютеров
13
Структура современных суперкомпьютеров
14
Структура современных суперкомпьютеров
AMD FusionIntel MIC
Nvidia Echelon Tilera Tile-Gx
15
Эволюция распределённых ВС
• Моделирование процессов магнетизма
• Моделирование сверхпроводимости
• Задачи гидродинамики
1 ГФЛОПС – 1988: Cray Y-MP; 8 процессоров
1 ТФЛОПС – 1998: Cray T3E; 1 024 процессоров
1 ПФЛОПС – 2008: Cray XT5; 150 000 процессоров
• ???
1 ЭФЛОПС – 2018: _______; ~10 000 000 процессоров
16
Эволюция распределённых ВС
• Моделирование процессов магнетизма
• 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 процессоров
Или, может быть,
что-то совершенно
иное?
17
Эволюция распределённых ВС
▪ Много разнообразных параллельных архитектур
▪ Отсутствие какого-либо единого соглашения или
единой модели по разработке параллельных
алгоритмов и программ
▪ Множество программных моделей, различные
способы разработки параллельных программ
(языки, среды разработки, интерфейсы)
18
Сложность параллельного программирования
Алгоритм Программа
(на языке
C, C++, Java,
Fortran, Ruby,
Python)
Архитектура
Последовательное программирование
Алгоритм
в модели А
Программа в
различных
парадигмах
(MPI, OpenMP,
CUDA, TBB,
OpenCL, Cilk)
Параллельное программирование
Алгоритм
в модели B
Алгоритм
в модели C
Архитектура А
Архитектура В
Архитектура С
19
Сложность параллельного программирования
Алгоритм
в модели А
Программа в
различных
парадигмах
(MPI, OpenMP,
CUDA, TBB,
OpenCL, Cilk)
Параллельное программирование
Алгоритм
в модели B
Алгоритм
в модели C
Архитектура А
Архитектура В
Архитектура С
▪ Алгоритм: не все задачи могут
быть распараллелены на
конкретной архитектуре
▪ Переносимость: поддержка
одного языка/интерфейса на
разных архитектурах (например,
MPI или OpenCL)
▪ Алгоритмическая задача:
обнаружить параллелизм
▪ Лингвистическая задача:
выразить параллелизм
▪ Практическая задача:
корректность, производительность
20
Почему нужно изучать параллельное программирование
▪ Это неизбежно: мультиядерные процессоры,
графические ускорители и т.д.
▪ Интересно, познавательно и очень непросто
▪ Одна из основных дициплин компьютерных наук
▪ ПВТ распространены повсеместно (конвейнеры,
ILP, TLP, языки, операционные системы,
программное обеспечение)
▪ Полезно: большие, очень сложные задачи,
которые востребованы в мировой науке
▪ ...
21
Parallel и Concurrent
Процесс
Процесс
Процесс
Процесс
CPU
Ресурс
Память, мьютексы,
семафоры,
устройства, ...
Concurrent -
координация
доступа и
использования
общих
ресурсов.
22
Parallel и Concurrent
Под-
задача
Под-
задача
Под-
задача
CPU
Parallel
computing -
решение
задачи путём
разбиения её
на подзадачи
и решения
этих подзадач
на различных
процессорах.
CPU
CPU
Задача
23
Анализ параллельных
алгоритмов
24
Ускорение параллельных вычислений
p - число процессоров,
n - размер задачи.
T1
(n) - время, необходимое одному процессору для
решения задачи размера n
Tp
(n) - время для решения p процессорами задачи
размера n
χ = T1
(n) / Tp
(n)
- ускорение параллельных вычислений, определяет
“выгоду” от распараллеливания задачи данного
размера n
25
Пример
for (i = 0; i < n; i++) {
a[i] = b[i] + c[i];
}
Подзадача
сумма n / p
элементов
Подзадача
сумма n / p
элементов
Подзадача
сумма n / p
элементов
Задача:
посчитать
сумму двух n-
элементных
векторов
Идеальное
распараллеливание:
▪ вычисления равномерно
распределяются между p
процессорами,
▪ нет накладных расходов
Ускорение:
χ = p
26
Идеальное распараллеливание
1
1
время
T1
2
p
3
...
Идеальное
распараллеливание:
▪ вычисления равномерно
распределяются между p
процессорами,
▪ нет накладных расходов
Tp
(n) = T1
(n) / p
Ускорение:
χ = p
Tp
(n)
27
Идеальное распараллеливание
1
1
время
T1
2
p
3
...
Идеальное
распараллеливание:
▪ вычисления равномерно
распределяются между p
процессорами,
▪ нет накладных расходов
Tp
(n) = T1
(n) / p
Ускорение:
χ = p
На практике редко
Tp
(n)
28
Распараллеливание на практике
1
1
время
T1
2
p
3
...
В реальном мире:
▪ дисбаланс загрузки:
последовательные вычисления
неравномерно распределяются
между процессорами,
Tp
(n) = max{T1, i
(n)}
Ускорение:
χ ≤ p
Tp
(n)T1, i
(n)
29
Распараллеливание на практике
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)
30
Закон Амдала
Пусть программа содержит часть r, которая может быть
распараллелена идеально (ускорение равно p) и
полностью последовательную часть s = 1 – r, которая
вообще не может быть распараллелена.
Тогда ускорение, которое может быть получено на ВС
из p процессоров:
χ = 1 / (s + r / p) = 1 / (s + (1 – s) / p)
31
Закон Амдала
Пусть программа содержит часть 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 -> ∞
32
Ускорение и закон Амдала: примеры
scanf(“%d”, &k);
for (i = 0; i < n; i++) {
x[i] = y[i] * k;
}
for (i = 0; i < n; i++) {
printf(“x[i] = %dn”, x[i]);
}
33
Ускорение и закон Амдала: примеры
scanf(“%d”, &k);
for (i = 0; i < n; i++) {
x[i] = y[i] * k;
}
for (i = 0; i < n; i++) {
printf(“x[i] = %dn”, 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
34
Ускорение и закон Амдала: примеры
x = malloc(n * sizeof(int));
quicksort(x);
n = norm(x);
printf(“vector norm = %d”, m);
35
Ускорение и закон Амдала: примеры
x = malloc(n * sizeof(int));
quicksort(x);
n = norm(x);
printf(“vector norm = %d”, m);
T1
(n) = 1 + nlogn + n + 1
Tp
(n) = 1 + logn + n + 1;
χ = (nlogn + n) / (logn + n) =
= (n(logn + 1)) / (logn + n)
36
Ускорение и закон Амдала: примеры
x = malloc(n * sizeof(int));
for (;;) {
for (i = 0; i < n; i++) {
x[i] = func(x[i]);
}
if (x[0] < eps) // k итераций до условия
break;
}
37
Ускорение и закон Амдала: примеры
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 (1 + n) = 1 + k + kn
Tp
(n) = 1 + k + kn / p;
χ = (k (1 + n)) / (k (1 + n / p)) =
=〈p ⟶ ∞〉= k (1 + n) / k = 1 + n
38
Закон Густафсона - Барсиса
39
χ = s + (1 – s)p = p + (1 – p)s
s – последовательная часть программы
p – количество процессоров (потоков)
Аналог закона Амдала, учитывающий количество
процессоров. Оценивает максимально достижимое
ускорение параллельной программ в зависимости от числа
потоков (процессоров).
Здесь ускорение показывает, насколько эффективным
может быть распараллеливание при увеличении сложности
задач.
g = ts
/ (ts
+ tp
/ p), где ts
– время последовательной части
программы, tp
– время части программы, которая может
быть распараллелена
Эффективность параллельного алгоритма
Эффективность параллельного алгоритма -
соотношение лучшего возможного времени
параллельного алгоритма к реальному значению
времени выполнения параллельного алгоритма.
Ep
= (T1
(n) / p) / Tp
(n) = χ / p
▪ Ep
≤ 1, поскольку s ≤ p
▪ Ep
= Const ⇒ линейное ускорение
40
Масштабируемость
Параллельный алгоритм сильно
масштабируется, если χ = Θ(p) (ускорение
линейное, не зависит от n).
Параллельный алгоритм слабо
масштабируется, если существует
медленно растущая функция f(p), такая что
для n = Ω(f(p)) функция Ep
(n) остаётся
постоянной.
41
Масштабируемость
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)
Алгоритм слабо масштабируется
42
Пропускная способность и латентность
43
При разработке потокобезопасных структур данных важно
учитывать следующие показатели:
▪ Латентность l – время выполнения отдельной операции.
▪ Пропуснкая способность b – скорость выполнения
операций со структурой.
Особоенности
архитектуры
вычислительных систем
с общей памятью
44
Архитектура вычислительных систем с общей памятью
▫ Многоядерные процессоры и
многопроцессорные вычислительные
системы (ВС).
▫ SMP/NUMA-системы.
▫ Аппаратная многопоточность (SMT,
HyperTreading)
▫ Показатели эффективности ВС.
▫ Цели и задачи создания многопоточных
программ
▫ Процессы и потоки
45
Архитектура многопроцессорных вычислительных систем
Одноядерный
процессор
Параллелизм
уровня инструкций
Одноядерный процессор
поддержкой аппаратной
многопоточности
параллелизм уровня
инструкций
Многопроцессорные
системы
Параллелизм уровня
потоков
Многоядерные
процессоры
Параллелизм уровня
потоков
Многоядерные процессоры
с поддержкой аппаратной
многопоточности
Параллелизм уровня потоков
Современные
системы
Параллелизм уровня
потоков
1 2 3
4 5 6
Архитектура ядра процессора Intel 64
Логический
процессор
Backend
Вычислительное
ядро (Execution
Engine)
Кэш
память
▪ Логический процессор
представлен архитектурным
состоянием
и контроллером прерываний
▪ Архитектурное состояние
включает
❑ регистры общего назначения
…
❑ сегментные регистры
…
❑ управляющие регистры
…
❑ регистры
регистры
❑ регистры
❑
▪ Логический процессор это
то что видит операционная
система
Архитектура ядра процессора Intel 64
▪ Логический процессор
использует ресурсы
вычислительного ядра
▪ реализует выборку
декодирование инструкций
поддерживает очередь для
передачи инструкций в
▪ это вычислительное ядро менеджер
распределяющий инструкции
по исполняющим устройствам
▪ реализует параллельное выполнение инструкций
Логический
процессор
Backend
Вычислительное
ядро (Execution
Engine)
Кэш
память
Параллелизм уровня инструкций (Instruction level parallelism – ILP)
▪ Архитектурные решения для обеспечения параллельного
выполнения инструкций
▫ Суперскалярный конвейер исполняющие
модули конвейера присутствуют в нескольких экземплярах несколько
модулей
▫ Внеочередное исполнение команд
переупорядочивание команд для максимально загрузки
минимизация зависимости по данным между
инструкциями выполнение инструкций по готовности их данных
▫ инструкции модули поддерживают
операции над векторами инструкции
▫ архитектура процессор с широким
командным словом оперирует с инструкциями содержащими в себе
несколько команд которые можно выполнять параллельно на
ЗАО
МЦСТ Эльбрус 49
Intel Nehalem Core Pipeline
50
Intel Nehalem Core Pipeline
51
Intel Nehalem Core Pipeline
на каждом такте
выбирает
из кэша через
байт инструкций и
передает их на
предекодирование в
определяет
длину инструкций их
префиксы и типы
условный безусловный
переход …
и передает информацию
в
1 2
52
Intel Nehalem Core Pipeline
▪ преобразует инструкции в микрооперации
сложные инструкции преобразуются в несколько микроопераций
▪ передает микрооперации в очередь где выполняется поиск
циклов
для предотвращения их повторного декодирования слияние
микроопераций
для увеличения пропускной способности и другие оптимизации
▪ Поток микроопераций передается в исполняющее ядро
3
53
Intel Nehalem Execution Core
▪
54
Intel Nehalem Execution Core
▪
выделяет
для поступающих
микроопераций блоки
в
привязывает
микрооперации к порту выдачи
переименовывает
архитектурные регистры
… используемые в
микрооперации в
микроархитектурные регистры
для предотвращения конфликтов
данных
4
55
Intel Nehalem Execution Core
▪
▪ пул из микроопераций динамический планировщик
▪ Если операнды микрооперации готовы она направляется на одно их
исполняющих устройств выполнение по готовности данных максимум
микроопераций такт портов
▪ реализует разрешения некоторых конфликтов данных передает
результат выполненной операции напрямую на вход другой если требуется
5
56
Intel Nehalem Execution Core
▪
▪ хранит микрооперации с
их состояниями в исходном
порядке
▪ отслеживает чтобы запись
результатов
в архитектурные регистры
выполнялась
в прямой последовательности
исходной программы
▪ Выполнение инструкции
считается завершенным если
а все её микрооперации
выполнены
б все более ранние операции
завершены
6
57
Одновременная многопоточность (Simultaneous Multithreading)
▪ Одновременная многопоточность
технология позволяющая выполнять
инструкции из нескольких потоков выполнения программ
на одном суперскалярном конвейере
▪ Потоки разделяют один суперскалярный конвейер
процессора
▪ позволяет повысить эффективность использования
модулей суперскалярного процессора
за счет наличия большего количества инструкций из разных
потоков выполнения
ниже вероятность зависимости по данным
Разделение ресурсов
▪ Примеры реализации
❑ г г
❑ г
❑
58
Intel Hyper-Threading Technology
Логический
процессор
Вычислительное
ядро
Кеш память
Логический
процессор
▪
▪ потока разделяют
суперскалярный конвейер
▪ Ускорение
▪
❑ Регистры общего назначения
…
❑ Сегментные регистры
…
❑ Управляющие регистры
❑ регистры
регистры
❑ регистры
59
Многопроцессорные SMP-системы
▪ Процессоры системы имеют одинаковое время доступа к
разделяемой памяти симметричный доступ
▪ Системная шина это узкое место ограничивающее
масштабируемость вычислительного узла
60
Многопроцессорные NUMA-системы (AMD)
▪ это архитектура вычислительной
системы
с неоднородным доступом к разделяемой памяти
▪ Процессоры сгруппированы в узлы со своей локальной памятью
▪ Доступ к локальной памяти узла занимает меньше времени по сравнению
с временем доступом к памяти удаленных процессоров
▪ х процессорная система
▪ Каждый процессор имеет
интегрированный контроллер
и несколько банков памяти
▪ Процессоры соединены шиной
системы на базе процессоров
▪ Доступ к удаленной памяти
занимает больше времени
для на
Многопроцессорные NUMA-системы (Intel)
▪ х процессорная
система
▪ Каждый процессор
имеет интегрированный
контроллер и несколько
банков памяти
▪ Процессоры соединены
шиной
решения на базе
процессоров
62
Политика управления памяти NUMA-системы
▪ Политики управления памятью можно задавать
в настройках
▪ в системе присутствует
несколько
узлов у каждого узла имеется своя
локальная память операционная система
учитывает топологию системы при выделении
памяти
▪ память циклически
выделяется со всех узлов чередование
операционная система видит систему
как машину
63
Многоядерные процессоры (Multi-core processors)
Логический процессор
Вычислительное ядро
Кэш
память
С
Логический процессор
Вычислительное ядро
Кэш
память
▪ Процессорные ядра размещены на одном чипе
▪ Ядра процессора могу разделять некоторые ресурсы
например кэш память
▪ Многоядерный процессор реализует параллелизм уровня потоков
64
Многоядерные процессоры с поддержкой SMT
Логический
процессор
Вычислительное ядро
Кэш
память
Логический
процессор
Вычислительное ядро
Кэш
память
Логический
процессор
Логический
процессор
▪ Многоядерный процессор может поддерживать одновременную многопоточность
▪ Каждое ядро может выполнять несколько потоков на своем суперскалярном
конвейере
▪ Операционная система представляет каждый поток как логический процессор
65
Многоядерные процессоры с поддержкой SMT
Логический
процессор
Вычислительное ядро
Кэш
память
Логический
процессор
Вычислительное ядро
Кэш
память
Логический
процессор
Логический
процессор
▪ Операционная система видит логических процессора
▪ Потоки и выполняются на суперскалярных конвейерах разных ядер
▪ Задействован параллелизм уровня потоков и инструкций
66
Смартфоны
▪
▪
▪
▪
▪
▪
67
Смартфоны
▪
▪ Конвейер
▪
▪
▪
▪
▪
68
Специализированные ускорители: Intel Xeon Phi
▪
▪
▪ Кольцевая шина бит для связи
ядер
и контроллера памяти
▪ Устанавливается в слот
система
логических
процессоров
69
Специализированные ускорители: Graphics Processing Unit
▪ графический процессор
специализированный многопроцессорный ускоритель с общей памятью
▪ Большая часть площади чипа занята элементарными
модулями
▪ Устройство управления относительно простое по сравнению
с
70
Специализированные многоядерные процессоры
71
Специализированные многоядерные процессоры
▪ Как на чем разрабатывать программы для такого
количества
многоядерных архитектур
▪ Как быть с переносимостью кода программ между
платформами
▪ Как быть с переносимостью производительности
программ
▪ Все ли алгоритмы эффективно распараллеливаются
72
Моделирование ВС
с общей памятью
73
Наивная модель ВС с общей памятью
Память
ЭП ЭП ЭП ЭП
Процессоры соединены непосредственно с памятью, все
взаимодействия через чтение/запись из памяти
Предполагается, что модель согласованности памяти
соответствует порядку операций в программе: записи и
чтения происходят так, как это выполняется в программе
74
Наивная модель ВС с общей памятью
▪ процессоры выполняют процессы
▪ процессы не синхронизованы
▪ методы для синхронизации процессов
▪ процессы обмениваются информацией через общую
память
▪ методы для разделения памяти между процессами
Память
ЭП ЭП ЭП ЭП
75
Реальные архитектуры с общей памятью
Память
ЭП ЭП ЭПЭП
кэш
Кэш: небольшая, быстрая память, расположенная
близко к процессору. Сохраняет из основной памяти
блоки, которые затем используются при
вычислениях.
Буфер между процессором и основной памятью.
76
Реальные архитектуры с общей памятью
Память
ЭП ЭП ЭПЭП
кэш
Тип памяти Ёмкость Время доступа
Основная память гигабайты > 100 циклов
Кэш килобайты, мегабайты 1-20 циклов
Регистры 0-1 циклов
77
Многоуровневная система кэша
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
2-3 уровня + специализированные кэши, TLB, кэш инструкций и т.д.
78
NUMA-системы
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
Кэш решает проблему “узкого места”. При этом изменения в
кэше могут реально применяться в произвольном порядке.
Память
79
Абстракция памяти
Однопроцессорная
ЭВМ: система памяти и
процессор позволяют
обеспечить абстракцию
памяти.
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
ПамятьП
ЭП
кэш
ВС с общей памятью:
трудно обеспечить
абстракцию единой
однородной памяти.
80
Абстракция памяти - проблемы
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
Память
▪ Что случится, если один и тот же адрес находится в разных
кэшах?
▪ Что происходит при изменении записи в один из кэшей одним из
процессоров?
▪ Несколько процессоров записывают или читают из одного
адреса?
81
Абстракция памяти - проблемы
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
Память
▪ Что случится, если один и тот же адрес находится в разных
кэшах?
▪ Что происходит при изменении записи в один из кэшей одним из
процессоров?
▪ Несколько процессоров записывают или читают из одного
адреса?
Проблема когерентности кэша
82
Абстракция памяти - проблемы
ЭП ЭП ЭПЭП
кэш
Д И
Память
Д И Д И Д И
кэш
83
Процессы и потоки операционной системы
ИнструкцииИнициализированные
данные
Исполняемый
файл на
носителе
информации
ИнструкцииИнициализированные
данные
Неинициализированные
данные
Куча
Данные библиотек
Инструкции
библиотек
Поток
▪ Процесс
запущенный
исполняемый
файл образ
▪ После запуска
процесс владеет
одним потоком
выполнения
84
Многопоточный процесс
ИнструкцииИнициализированные
данные
Неинициализированные
данные
Куча
Данные библиотек Инструкции библиотек
Поток Поток Поток Поток Поток Поток
▪ Поток тред нить независимый поток инструкций выполнение которых
планируется ОС
▪ Поток наименьшая единица которую можно планировать независимо
85
Многопоточный процесс
ИнструкцииИнициализированные
данные
Неинициализированные
данные
Куча
Данные библиотек Инструкции библиотек
Поток Поток Поток Поток Поток Поток
▪ Каждый поток имеет свой стек и контекст память для хранения
значения архитектурных регистров при переключении контекстов
операционной системой
▪ Куча процесса инструкции статические данные инициализированные
являются общими для всех потоков
86
Concurrency ≠ Parallelism
февраля г
▪ одновременность
два и более потоков выполняются
разделяя одно процессорное ядро
▪ Операционная система реализует
режим разделения времени ядра
процессора
▪ Ускорение вычислений отсутствует
▪ Зачем
▪ Обеспечение отзывчивости
интерфейса совмещение
ввода вывода и вычислений
▪ параллелизм
каждый поток выполняется на
отдельном ядре процессора
нет конкуренции за
вычислительные ресурсы
▪ Вычисления выполняются
быстрее
87
Concurrency ≠ Parallelism
Суперскалярный
процессор
Мультипроцессор Hyperthreading
88

More Related Content

What's hot

Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
Mikhail Kurnosov
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Mikhail Kurnosov
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Mikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
Mikhail Kurnosov
 
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
Alexey Paznikov
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksMikhail Kurnosov
 
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
Alexey Paznikov
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Mikhail Kurnosov
 
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
Alexey Paznikov
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
Mikhail Kurnosov
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Mikhail Kurnosov
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
Mikhail Kurnosov
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
Alexey Paznikov
 
Лекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIЛекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPI
Alexey Paznikov
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Alexey Paznikov
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Yandex
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 

What's hot (20)

Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
 
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
 
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
 
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
 
Лекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIЛекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPI
 
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
Лекция 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллель...
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 

Viewers also liked

Параллельные вычисления
Параллельные вычисленияПараллельные вычисления
Параллельные вычисления
Artem K
 
Security cores 1.10.13
Security cores   1.10.13Security cores   1.10.13
Security cores 1.10.13Boris Kizko
 
Новые вызовы кибербезопасности
Новые вызовы кибербезопасностиНовые вызовы кибербезопасности
Новые вызовы кибербезопасности
Cisco Russia
 
Создание и управление кластерами
Создание и управление кластерамиСоздание и управление кластерами
Создание и управление кластерами
Aleksandr Dvoeglazov
 
Cisco Web Security - обзор технологии и функционала
Cisco Web Security - обзор технологии и функционалаCisco Web Security - обзор технологии и функционала
Cisco Web Security - обзор технологии и функционалаCisco Russia
 
Cisco ASA CX - новый прикладной МСЭ
Cisco ASA CX - новый прикладной МСЭCisco ASA CX - новый прикладной МСЭ
Cisco ASA CX - новый прикладной МСЭCisco Russia
 
NeoQUEST: Tpm.txt.на что способно заморское железо
NeoQUEST: Tpm.txt.на что способно заморское железоNeoQUEST: Tpm.txt.на что способно заморское железо
NeoQUEST: Tpm.txt.на что способно заморское железо
Neo_QUEST
 
Технологии Интел по обеспечению безопасности корпоративных пользователей.
 Технологии Интел по обеспечению безопасности корпоративных пользователей. Технологии Интел по обеспечению безопасности корпоративных пользователей.
Технологии Интел по обеспечению безопасности корпоративных пользователей.Cisco Russia
 
Как защитить сеть от web-угроз с помощью Cisco WSA (ex IronPort)
Как защитить сеть от web-угроз с помощью Cisco WSA (ex IronPort)Как защитить сеть от web-угроз с помощью Cisco WSA (ex IronPort)
Как защитить сеть от web-угроз с помощью Cisco WSA (ex IronPort)
SkillFactory
 

Viewers also liked (11)

Параллельные вычисления
Параллельные вычисленияПараллельные вычисления
Параллельные вычисления
 
20 intel
20 intel20 intel
20 intel
 
Security cores 1.10.13
Security cores   1.10.13Security cores   1.10.13
Security cores 1.10.13
 
Новые вызовы кибербезопасности
Новые вызовы кибербезопасностиНовые вызовы кибербезопасности
Новые вызовы кибербезопасности
 
Создание и управление кластерами
Создание и управление кластерамиСоздание и управление кластерами
Создание и управление кластерами
 
Cisco Web Security - обзор технологии и функционала
Cisco Web Security - обзор технологии и функционалаCisco Web Security - обзор технологии и функционала
Cisco Web Security - обзор технологии и функционала
 
Cisco ASA CX - новый прикладной МСЭ
Cisco ASA CX - новый прикладной МСЭCisco ASA CX - новый прикладной МСЭ
Cisco ASA CX - новый прикладной МСЭ
 
NeoQUEST: Tpm.txt.на что способно заморское железо
NeoQUEST: Tpm.txt.на что способно заморское железоNeoQUEST: Tpm.txt.на что способно заморское железо
NeoQUEST: Tpm.txt.на что способно заморское железо
 
Технологии Интел по обеспечению безопасности корпоративных пользователей.
 Технологии Интел по обеспечению безопасности корпоративных пользователей. Технологии Интел по обеспечению безопасности корпоративных пользователей.
Технологии Интел по обеспечению безопасности корпоративных пользователей.
 
Fedoseev Sofs
Fedoseev SofsFedoseev Sofs
Fedoseev Sofs
 
Как защитить сеть от web-угроз с помощью Cisco WSA (ex IronPort)
Как защитить сеть от web-угроз с помощью Cisco WSA (ex IronPort)Как защитить сеть от web-угроз с помощью Cisco WSA (ex IronPort)
Как защитить сеть от web-угроз с помощью Cisco WSA (ex IronPort)
 

Similar to ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Вычислительные системы с общей памятью

ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
Alexey Paznikov
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
Andrey Karpov
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1Michael Karpov
 
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Mikhail Kurnosov
 
Дмитрий Прокопцев — R-ссылки в С++11
Дмитрий Прокопцев — R-ссылки в С++11Дмитрий Прокопцев — R-ссылки в С++11
Дмитрий Прокопцев — R-ссылки в С++11
Yandex
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
Автоматизированная разработка генераторов тестовых программ для микропроцессо...
Автоматизированная разработка генераторов тестовых программ для микропроцессо...Автоматизированная разработка генераторов тестовых программ для микропроцессо...
Автоматизированная разработка генераторов тестовых программ для микропроцессо...
CEE-SEC(R)
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Yandex
 
OpenACC short review
OpenACC short reviewOpenACC short review
OpenACC short review
Andrei Poliakov
 
2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpi2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpiMichael Karpov
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
AIST
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Python Meetup
 
Вечный вопрос измерения времени
Вечный вопрос измерения времениВечный вопрос измерения времени
Вечный вопрос измерения времени
Tatyanazaxarova
 
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Fwdays
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
Iosif Itkin
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
Eugeniy Tyumentcev
 

Similar to ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Вычислительные системы с общей памятью (20)

ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисленияПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
ПВТ - осень 2014 - лекция 1 - Введение в параллельные вычисления
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Опыт разработки статического анализатора кода
Опыт разработки статического анализатора кодаОпыт разработки статического анализатора кода
Опыт разработки статического анализатора кода
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
 
Дмитрий Прокопцев — R-ссылки в С++11
Дмитрий Прокопцев — R-ссылки в С++11Дмитрий Прокопцев — R-ссылки в С++11
Дмитрий Прокопцев — R-ссылки в С++11
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
 
Автоматизированная разработка генераторов тестовых программ для микропроцессо...
Автоматизированная разработка генераторов тестовых программ для микропроцессо...Автоматизированная разработка генераторов тестовых программ для микропроцессо...
Автоматизированная разработка генераторов тестовых программ для микропроцессо...
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 
OpenACC short review
OpenACC short reviewOpenACC short review
OpenACC short review
 
2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpi2009 10-31 есть ли жизнь после mpi
2009 10-31 есть ли жизнь после mpi
 
Algo 01 part01
Algo 01 part01Algo 01 part01
Algo 01 part01
 
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
Елена Захаренко и Евгений Альтман - Быстрый алгоритм оценки движения полным п...
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
Вечный вопрос измерения времени
Вечный вопрос измерения времениВечный вопрос измерения времени
Вечный вопрос измерения времени
 
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"
 
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 

More from Alexey Paznikov

Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Alexey Paznikov
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курсаПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курса
Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX ThreadsПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
Alexey Paznikov
 
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
Alexey Paznikov
 
ПВТ - осень 2014 - лекция 1а - Описание курса
ПВТ - осень 2014 - лекция 1а - Описание курсаПВТ - осень 2014 - лекция 1а - Описание курса
ПВТ - осень 2014 - лекция 1а - Описание курса
Alexey Paznikov
 
Анализ эффективности выполнения алгоритма параллельной редукции в языке Cray ...
Анализ эффективности выполнения алгоритма параллельной редукции в языке Cray ...Анализ эффективности выполнения алгоритма параллельной редукции в языке Cray ...
Анализ эффективности выполнения алгоритма параллельной редукции в языке Cray ...
Alexey Paznikov
 
ТФРВС - весна 2014 - лекция 11
ТФРВС - весна 2014 - лекция 11ТФРВС - весна 2014 - лекция 11
ТФРВС - весна 2014 - лекция 11
Alexey Paznikov
 
ТФРВС - весна 2014 - лекция 10
ТФРВС - весна 2014 - лекция 10ТФРВС - весна 2014 - лекция 10
ТФРВС - весна 2014 - лекция 10
Alexey Paznikov
 
ТФРВС - весна 2014 - лекция 9
 ТФРВС - весна 2014 - лекция 9 ТФРВС - весна 2014 - лекция 9
ТФРВС - весна 2014 - лекция 9
Alexey Paznikov
 
ТФРВС - весна 2014 - лекция 8
ТФРВС - весна 2014 - лекция 8ТФРВС - весна 2014 - лекция 8
ТФРВС - весна 2014 - лекция 8
Alexey Paznikov
 
ТФРВС - весна 2014 - лекция 7
ТФРВС - весна 2014 - лекция 7ТФРВС - весна 2014 - лекция 7
ТФРВС - весна 2014 - лекция 7
Alexey Paznikov
 
ТФРВС - весна 2014 - лекция 6
ТФРВС - весна 2014 - лекция 6ТФРВС - весна 2014 - лекция 6
ТФРВС - весна 2014 - лекция 6
Alexey Paznikov
 

More from Alexey Paznikov (15)

Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
 
ПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курсаПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курса
 
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX ThreadsПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
ПВТ - осень 2014 - Лекция 3 - Стандарт POSIX Threads
 
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятью
 
ПВТ - осень 2014 - лекция 1а - Описание курса
ПВТ - осень 2014 - лекция 1а - Описание курсаПВТ - осень 2014 - лекция 1а - Описание курса
ПВТ - осень 2014 - лекция 1а - Описание курса
 
Анализ эффективности выполнения алгоритма параллельной редукции в языке Cray ...
Анализ эффективности выполнения алгоритма параллельной редукции в языке Cray ...Анализ эффективности выполнения алгоритма параллельной редукции в языке Cray ...
Анализ эффективности выполнения алгоритма параллельной редукции в языке Cray ...
 
ТФРВС - весна 2014 - лекция 11
ТФРВС - весна 2014 - лекция 11ТФРВС - весна 2014 - лекция 11
ТФРВС - весна 2014 - лекция 11
 
ТФРВС - весна 2014 - лекция 10
ТФРВС - весна 2014 - лекция 10ТФРВС - весна 2014 - лекция 10
ТФРВС - весна 2014 - лекция 10
 
ТФРВС - весна 2014 - лекция 9
 ТФРВС - весна 2014 - лекция 9 ТФРВС - весна 2014 - лекция 9
ТФРВС - весна 2014 - лекция 9
 
ТФРВС - весна 2014 - лекция 8
ТФРВС - весна 2014 - лекция 8ТФРВС - весна 2014 - лекция 8
ТФРВС - весна 2014 - лекция 8
 
ТФРВС - весна 2014 - лекция 7
ТФРВС - весна 2014 - лекция 7ТФРВС - весна 2014 - лекция 7
ТФРВС - весна 2014 - лекция 7
 
ТФРВС - весна 2014 - лекция 6
ТФРВС - весна 2014 - лекция 6ТФРВС - весна 2014 - лекция 6
ТФРВС - весна 2014 - лекция 6
 

ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Вычислительные системы с общей памятью

  • 1. Лекция 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Вычислительные системы с общей памятью Пазников Алексей Александрович Кафедра вычислительных систем СибГУТИ Сайт курса: http://cpct.sibsutis.ru/~apaznikov/teaching/ Q/A: https://piazza.com/sibsutis.ru/spring2015/pct2015spring Параллельные вычислительные технологии Весна 2015 (Parallel Computing Technologies, PCT 15) 1
  • 5. Список Top500 Site System Cores Rmax (TFlop/s) Rpeak (TFlop/s) Power (kW) 1 National University of Defense Technology China Tianhe-2 (MilkyWay-2) - TH-IVB-FEP Cluster, Intel Xeon E5-2692 12C 2.200 GHz, TH Express-2, Intel Xeon Phi 31S1P NUDT 3,120,00 0 33,862.7 54,902.4 17,808 2 DOE/SC/Oak Ridge National Laboratory United States Titan - Cray XK7 , Opteron 6274 16C 2.200 GHz, Cray Gemini interconnect, NVIDIA K20x Cray Inc. 560,640 17,590.0 27,112.5 8,209 3 DOE/NNSA/LLNL United States Sequoia - BlueGene/Q, Power BQC 16C 1.60 GHz, Custom IBM 1,572,86 4 17,173.2 20,132.7 7,890 4 RIKEN Advanced Institute for Computational Science (AICS) Japan K computer, SPARC64 VIIIfx 2.0GHz, Tofu interconnect Fujitsu 705,024 10,510.0 11,280.4 12,660 5
  • 7. Мощность суперкомпьютеров: экспоненциальный рост Источник: http://karmak.org/archive/2003/01/art0134.html 7
  • 8. Области применения ПВТ - наука ▪ Биология (расшифровка генов) ▪ Теоретическая физика (решение уравнений квантовой физики) ▪ Химия (получение новых материалов) ▪ Метеорология (составление прогнозов погоды) ▪ Геология (разведка полезных ископаемых) ▪ ... 8
  • 9. Области применения ПВТ - коммерция ▪ Создание новых автомобилей (аэродинамика поверхностей, моделирование столкновений), самолётов (выбор оптимальной поверхности крыла) ▪ Фармакология (поиск новых лекарств, вакцин) ▪ Финансовое моделирование (поведение биржи, глобальные экономические процессы) ▪ Сырьевой сектор (поиск новых месторождений, моделирование движения газа, нефти) ▪ ... 9
  • 15. Структура современных суперкомпьютеров AMD FusionIntel MIC Nvidia Echelon Tilera Tile-Gx 15
  • 16. Эволюция распределённых ВС • Моделирование процессов магнетизма • Моделирование сверхпроводимости • Задачи гидродинамики 1 ГФЛОПС – 1988: Cray Y-MP; 8 процессоров 1 ТФЛОПС – 1998: Cray T3E; 1 024 процессоров 1 ПФЛОПС – 2008: Cray XT5; 150 000 процессоров • ??? 1 ЭФЛОПС – 2018: _______; ~10 000 000 процессоров 16
  • 17. Эволюция распределённых ВС • Моделирование процессов магнетизма • 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 процессоров Или, может быть, что-то совершенно иное? 17
  • 18. Эволюция распределённых ВС ▪ Много разнообразных параллельных архитектур ▪ Отсутствие какого-либо единого соглашения или единой модели по разработке параллельных алгоритмов и программ ▪ Множество программных моделей, различные способы разработки параллельных программ (языки, среды разработки, интерфейсы) 18
  • 19. Сложность параллельного программирования Алгоритм Программа (на языке C, C++, Java, Fortran, Ruby, Python) Архитектура Последовательное программирование Алгоритм в модели А Программа в различных парадигмах (MPI, OpenMP, CUDA, TBB, OpenCL, Cilk) Параллельное программирование Алгоритм в модели B Алгоритм в модели C Архитектура А Архитектура В Архитектура С 19
  • 20. Сложность параллельного программирования Алгоритм в модели А Программа в различных парадигмах (MPI, OpenMP, CUDA, TBB, OpenCL, Cilk) Параллельное программирование Алгоритм в модели B Алгоритм в модели C Архитектура А Архитектура В Архитектура С ▪ Алгоритм: не все задачи могут быть распараллелены на конкретной архитектуре ▪ Переносимость: поддержка одного языка/интерфейса на разных архитектурах (например, MPI или OpenCL) ▪ Алгоритмическая задача: обнаружить параллелизм ▪ Лингвистическая задача: выразить параллелизм ▪ Практическая задача: корректность, производительность 20
  • 21. Почему нужно изучать параллельное программирование ▪ Это неизбежно: мультиядерные процессоры, графические ускорители и т.д. ▪ Интересно, познавательно и очень непросто ▪ Одна из основных дициплин компьютерных наук ▪ ПВТ распространены повсеместно (конвейнеры, ILP, TLP, языки, операционные системы, программное обеспечение) ▪ Полезно: большие, очень сложные задачи, которые востребованы в мировой науке ▪ ... 21
  • 22. Parallel и Concurrent Процесс Процесс Процесс Процесс CPU Ресурс Память, мьютексы, семафоры, устройства, ... Concurrent - координация доступа и использования общих ресурсов. 22
  • 23. Parallel и Concurrent Под- задача Под- задача Под- задача CPU Parallel computing - решение задачи путём разбиения её на подзадачи и решения этих подзадач на различных процессорах. CPU CPU Задача 23
  • 25. Ускорение параллельных вычислений p - число процессоров, n - размер задачи. T1 (n) - время, необходимое одному процессору для решения задачи размера n Tp (n) - время для решения p процессорами задачи размера n χ = T1 (n) / Tp (n) - ускорение параллельных вычислений, определяет “выгоду” от распараллеливания задачи данного размера n 25
  • 26. Пример for (i = 0; i < n; i++) { a[i] = b[i] + c[i]; } Подзадача сумма n / p элементов Подзадача сумма n / p элементов Подзадача сумма n / p элементов Задача: посчитать сумму двух n- элементных векторов Идеальное распараллеливание: ▪ вычисления равномерно распределяются между p процессорами, ▪ нет накладных расходов Ускорение: χ = p 26
  • 27. Идеальное распараллеливание 1 1 время T1 2 p 3 ... Идеальное распараллеливание: ▪ вычисления равномерно распределяются между p процессорами, ▪ нет накладных расходов Tp (n) = T1 (n) / p Ускорение: χ = p Tp (n) 27
  • 28. Идеальное распараллеливание 1 1 время T1 2 p 3 ... Идеальное распараллеливание: ▪ вычисления равномерно распределяются между p процессорами, ▪ нет накладных расходов Tp (n) = T1 (n) / p Ускорение: χ = p На практике редко Tp (n) 28
  • 29. Распараллеливание на практике 1 1 время T1 2 p 3 ... В реальном мире: ▪ дисбаланс загрузки: последовательные вычисления неравномерно распределяются между процессорами, Tp (n) = max{T1, i (n)} Ускорение: χ ≤ p Tp (n)T1, i (n) 29
  • 30. Распараллеливание на практике 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) 30
  • 31. Закон Амдала Пусть программа содержит часть r, которая может быть распараллелена идеально (ускорение равно p) и полностью последовательную часть s = 1 – r, которая вообще не может быть распараллелена. Тогда ускорение, которое может быть получено на ВС из p процессоров: χ = 1 / (s + r / p) = 1 / (s + (1 – s) / p) 31
  • 32. Закон Амдала Пусть программа содержит часть 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 -> ∞ 32
  • 33. Ускорение и закон Амдала: примеры scanf(“%d”, &k); for (i = 0; i < n; i++) { x[i] = y[i] * k; } for (i = 0; i < n; i++) { printf(“x[i] = %dn”, x[i]); } 33
  • 34. Ускорение и закон Амдала: примеры scanf(“%d”, &k); for (i = 0; i < n; i++) { x[i] = y[i] * k; } for (i = 0; i < n; i++) { printf(“x[i] = %dn”, 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 34
  • 35. Ускорение и закон Амдала: примеры x = malloc(n * sizeof(int)); quicksort(x); n = norm(x); printf(“vector norm = %d”, m); 35
  • 36. Ускорение и закон Амдала: примеры x = malloc(n * sizeof(int)); quicksort(x); n = norm(x); printf(“vector norm = %d”, m); T1 (n) = 1 + nlogn + n + 1 Tp (n) = 1 + logn + n + 1; χ = (nlogn + n) / (logn + n) = = (n(logn + 1)) / (logn + n) 36
  • 37. Ускорение и закон Амдала: примеры x = malloc(n * sizeof(int)); for (;;) { for (i = 0; i < n; i++) { x[i] = func(x[i]); } if (x[0] < eps) // k итераций до условия break; } 37
  • 38. Ускорение и закон Амдала: примеры 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 (1 + n) = 1 + k + kn Tp (n) = 1 + k + kn / p; χ = (k (1 + n)) / (k (1 + n / p)) = =〈p ⟶ ∞〉= k (1 + n) / k = 1 + n 38
  • 39. Закон Густафсона - Барсиса 39 χ = s + (1 – s)p = p + (1 – p)s s – последовательная часть программы p – количество процессоров (потоков) Аналог закона Амдала, учитывающий количество процессоров. Оценивает максимально достижимое ускорение параллельной программ в зависимости от числа потоков (процессоров). Здесь ускорение показывает, насколько эффективным может быть распараллеливание при увеличении сложности задач. g = ts / (ts + tp / p), где ts – время последовательной части программы, tp – время части программы, которая может быть распараллелена
  • 40. Эффективность параллельного алгоритма Эффективность параллельного алгоритма - соотношение лучшего возможного времени параллельного алгоритма к реальному значению времени выполнения параллельного алгоритма. Ep = (T1 (n) / p) / Tp (n) = χ / p ▪ Ep ≤ 1, поскольку s ≤ p ▪ Ep = Const ⇒ линейное ускорение 40
  • 41. Масштабируемость Параллельный алгоритм сильно масштабируется, если χ = Θ(p) (ускорение линейное, не зависит от n). Параллельный алгоритм слабо масштабируется, если существует медленно растущая функция f(p), такая что для n = Ω(f(p)) функция Ep (n) остаётся постоянной. 41
  • 42. Масштабируемость 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) Алгоритм слабо масштабируется 42
  • 43. Пропускная способность и латентность 43 При разработке потокобезопасных структур данных важно учитывать следующие показатели: ▪ Латентность l – время выполнения отдельной операции. ▪ Пропуснкая способность b – скорость выполнения операций со структурой.
  • 45. Архитектура вычислительных систем с общей памятью ▫ Многоядерные процессоры и многопроцессорные вычислительные системы (ВС). ▫ SMP/NUMA-системы. ▫ Аппаратная многопоточность (SMT, HyperTreading) ▫ Показатели эффективности ВС. ▫ Цели и задачи создания многопоточных программ ▫ Процессы и потоки 45
  • 46. Архитектура многопроцессорных вычислительных систем Одноядерный процессор Параллелизм уровня инструкций Одноядерный процессор поддержкой аппаратной многопоточности параллелизм уровня инструкций Многопроцессорные системы Параллелизм уровня потоков Многоядерные процессоры Параллелизм уровня потоков Многоядерные процессоры с поддержкой аппаратной многопоточности Параллелизм уровня потоков Современные системы Параллелизм уровня потоков 1 2 3 4 5 6
  • 47. Архитектура ядра процессора Intel 64 Логический процессор Backend Вычислительное ядро (Execution Engine) Кэш память ▪ Логический процессор представлен архитектурным состоянием и контроллером прерываний ▪ Архитектурное состояние включает ❑ регистры общего назначения … ❑ сегментные регистры … ❑ управляющие регистры … ❑ регистры регистры ❑ регистры ❑ ▪ Логический процессор это то что видит операционная система
  • 48. Архитектура ядра процессора Intel 64 ▪ Логический процессор использует ресурсы вычислительного ядра ▪ реализует выборку декодирование инструкций поддерживает очередь для передачи инструкций в ▪ это вычислительное ядро менеджер распределяющий инструкции по исполняющим устройствам ▪ реализует параллельное выполнение инструкций Логический процессор Backend Вычислительное ядро (Execution Engine) Кэш память
  • 49. Параллелизм уровня инструкций (Instruction level parallelism – ILP) ▪ Архитектурные решения для обеспечения параллельного выполнения инструкций ▫ Суперскалярный конвейер исполняющие модули конвейера присутствуют в нескольких экземплярах несколько модулей ▫ Внеочередное исполнение команд переупорядочивание команд для максимально загрузки минимизация зависимости по данным между инструкциями выполнение инструкций по готовности их данных ▫ инструкции модули поддерживают операции над векторами инструкции ▫ архитектура процессор с широким командным словом оперирует с инструкциями содержащими в себе несколько команд которые можно выполнять параллельно на ЗАО МЦСТ Эльбрус 49
  • 50. Intel Nehalem Core Pipeline 50
  • 51. Intel Nehalem Core Pipeline 51
  • 52. Intel Nehalem Core Pipeline на каждом такте выбирает из кэша через байт инструкций и передает их на предекодирование в определяет длину инструкций их префиксы и типы условный безусловный переход … и передает информацию в 1 2 52
  • 53. Intel Nehalem Core Pipeline ▪ преобразует инструкции в микрооперации сложные инструкции преобразуются в несколько микроопераций ▪ передает микрооперации в очередь где выполняется поиск циклов для предотвращения их повторного декодирования слияние микроопераций для увеличения пропускной способности и другие оптимизации ▪ Поток микроопераций передается в исполняющее ядро 3 53
  • 54. Intel Nehalem Execution Core ▪ 54
  • 55. Intel Nehalem Execution Core ▪ выделяет для поступающих микроопераций блоки в привязывает микрооперации к порту выдачи переименовывает архитектурные регистры … используемые в микрооперации в микроархитектурные регистры для предотвращения конфликтов данных 4 55
  • 56. Intel Nehalem Execution Core ▪ ▪ пул из микроопераций динамический планировщик ▪ Если операнды микрооперации готовы она направляется на одно их исполняющих устройств выполнение по готовности данных максимум микроопераций такт портов ▪ реализует разрешения некоторых конфликтов данных передает результат выполненной операции напрямую на вход другой если требуется 5 56
  • 57. Intel Nehalem Execution Core ▪ ▪ хранит микрооперации с их состояниями в исходном порядке ▪ отслеживает чтобы запись результатов в архитектурные регистры выполнялась в прямой последовательности исходной программы ▪ Выполнение инструкции считается завершенным если а все её микрооперации выполнены б все более ранние операции завершены 6 57
  • 58. Одновременная многопоточность (Simultaneous Multithreading) ▪ Одновременная многопоточность технология позволяющая выполнять инструкции из нескольких потоков выполнения программ на одном суперскалярном конвейере ▪ Потоки разделяют один суперскалярный конвейер процессора ▪ позволяет повысить эффективность использования модулей суперскалярного процессора за счет наличия большего количества инструкций из разных потоков выполнения ниже вероятность зависимости по данным Разделение ресурсов ▪ Примеры реализации ❑ г г ❑ г ❑ 58
  • 59. Intel Hyper-Threading Technology Логический процессор Вычислительное ядро Кеш память Логический процессор ▪ ▪ потока разделяют суперскалярный конвейер ▪ Ускорение ▪ ❑ Регистры общего назначения … ❑ Сегментные регистры … ❑ Управляющие регистры ❑ регистры регистры ❑ регистры 59
  • 60. Многопроцессорные SMP-системы ▪ Процессоры системы имеют одинаковое время доступа к разделяемой памяти симметричный доступ ▪ Системная шина это узкое место ограничивающее масштабируемость вычислительного узла 60
  • 61. Многопроцессорные NUMA-системы (AMD) ▪ это архитектура вычислительной системы с неоднородным доступом к разделяемой памяти ▪ Процессоры сгруппированы в узлы со своей локальной памятью ▪ Доступ к локальной памяти узла занимает меньше времени по сравнению с временем доступом к памяти удаленных процессоров ▪ х процессорная система ▪ Каждый процессор имеет интегрированный контроллер и несколько банков памяти ▪ Процессоры соединены шиной системы на базе процессоров ▪ Доступ к удаленной памяти занимает больше времени для на
  • 62. Многопроцессорные NUMA-системы (Intel) ▪ х процессорная система ▪ Каждый процессор имеет интегрированный контроллер и несколько банков памяти ▪ Процессоры соединены шиной решения на базе процессоров 62
  • 63. Политика управления памяти NUMA-системы ▪ Политики управления памятью можно задавать в настройках ▪ в системе присутствует несколько узлов у каждого узла имеется своя локальная память операционная система учитывает топологию системы при выделении памяти ▪ память циклически выделяется со всех узлов чередование операционная система видит систему как машину 63
  • 64. Многоядерные процессоры (Multi-core processors) Логический процессор Вычислительное ядро Кэш память С Логический процессор Вычислительное ядро Кэш память ▪ Процессорные ядра размещены на одном чипе ▪ Ядра процессора могу разделять некоторые ресурсы например кэш память ▪ Многоядерный процессор реализует параллелизм уровня потоков 64
  • 65. Многоядерные процессоры с поддержкой SMT Логический процессор Вычислительное ядро Кэш память Логический процессор Вычислительное ядро Кэш память Логический процессор Логический процессор ▪ Многоядерный процессор может поддерживать одновременную многопоточность ▪ Каждое ядро может выполнять несколько потоков на своем суперскалярном конвейере ▪ Операционная система представляет каждый поток как логический процессор 65
  • 66. Многоядерные процессоры с поддержкой SMT Логический процессор Вычислительное ядро Кэш память Логический процессор Вычислительное ядро Кэш память Логический процессор Логический процессор ▪ Операционная система видит логических процессора ▪ Потоки и выполняются на суперскалярных конвейерах разных ядер ▪ Задействован параллелизм уровня потоков и инструкций 66
  • 69. Специализированные ускорители: Intel Xeon Phi ▪ ▪ ▪ Кольцевая шина бит для связи ядер и контроллера памяти ▪ Устанавливается в слот система логических процессоров 69
  • 70. Специализированные ускорители: Graphics Processing Unit ▪ графический процессор специализированный многопроцессорный ускоритель с общей памятью ▪ Большая часть площади чипа занята элементарными модулями ▪ Устройство управления относительно простое по сравнению с 70
  • 72. Специализированные многоядерные процессоры ▪ Как на чем разрабатывать программы для такого количества многоядерных архитектур ▪ Как быть с переносимостью кода программ между платформами ▪ Как быть с переносимостью производительности программ ▪ Все ли алгоритмы эффективно распараллеливаются 72
  • 74. Наивная модель ВС с общей памятью Память ЭП ЭП ЭП ЭП Процессоры соединены непосредственно с памятью, все взаимодействия через чтение/запись из памяти Предполагается, что модель согласованности памяти соответствует порядку операций в программе: записи и чтения происходят так, как это выполняется в программе 74
  • 75. Наивная модель ВС с общей памятью ▪ процессоры выполняют процессы ▪ процессы не синхронизованы ▪ методы для синхронизации процессов ▪ процессы обмениваются информацией через общую память ▪ методы для разделения памяти между процессами Память ЭП ЭП ЭП ЭП 75
  • 76. Реальные архитектуры с общей памятью Память ЭП ЭП ЭПЭП кэш Кэш: небольшая, быстрая память, расположенная близко к процессору. Сохраняет из основной памяти блоки, которые затем используются при вычислениях. Буфер между процессором и основной памятью. 76
  • 77. Реальные архитектуры с общей памятью Память ЭП ЭП ЭПЭП кэш Тип памяти Ёмкость Время доступа Основная память гигабайты > 100 циклов Кэш килобайты, мегабайты 1-20 циклов Регистры 0-1 циклов 77
  • 78. Многоуровневная система кэша Память ЭП ЭП ЭПЭП кэш кэш Д И Уровень 3 Уровень 2 Уровень 1 2-3 уровня + специализированные кэши, TLB, кэш инструкций и т.д. 78
  • 79. NUMA-системы Память ЭП ЭП ЭПЭП кэш кэш Д И Уровень 3 Уровень 2 Уровень 1 Кэш решает проблему “узкого места”. При этом изменения в кэше могут реально применяться в произвольном порядке. Память 79
  • 80. Абстракция памяти Однопроцессорная ЭВМ: система памяти и процессор позволяют обеспечить абстракцию памяти. Память ЭП ЭП ЭПЭП кэш кэш Д И Уровень 3 Уровень 2 Уровень 1 ПамятьП ЭП кэш ВС с общей памятью: трудно обеспечить абстракцию единой однородной памяти. 80
  • 81. Абстракция памяти - проблемы Память ЭП ЭП ЭПЭП кэш кэш Д И Уровень 3 Уровень 2 Уровень 1 Память ▪ Что случится, если один и тот же адрес находится в разных кэшах? ▪ Что происходит при изменении записи в один из кэшей одним из процессоров? ▪ Несколько процессоров записывают или читают из одного адреса? 81
  • 82. Абстракция памяти - проблемы Память ЭП ЭП ЭПЭП кэш кэш Д И Уровень 3 Уровень 2 Уровень 1 Память ▪ Что случится, если один и тот же адрес находится в разных кэшах? ▪ Что происходит при изменении записи в один из кэшей одним из процессоров? ▪ Несколько процессоров записывают или читают из одного адреса? Проблема когерентности кэша 82
  • 83. Абстракция памяти - проблемы ЭП ЭП ЭПЭП кэш Д И Память Д И Д И Д И кэш 83
  • 84. Процессы и потоки операционной системы ИнструкцииИнициализированные данные Исполняемый файл на носителе информации ИнструкцииИнициализированные данные Неинициализированные данные Куча Данные библиотек Инструкции библиотек Поток ▪ Процесс запущенный исполняемый файл образ ▪ После запуска процесс владеет одним потоком выполнения 84
  • 85. Многопоточный процесс ИнструкцииИнициализированные данные Неинициализированные данные Куча Данные библиотек Инструкции библиотек Поток Поток Поток Поток Поток Поток ▪ Поток тред нить независимый поток инструкций выполнение которых планируется ОС ▪ Поток наименьшая единица которую можно планировать независимо 85
  • 86. Многопоточный процесс ИнструкцииИнициализированные данные Неинициализированные данные Куча Данные библиотек Инструкции библиотек Поток Поток Поток Поток Поток Поток ▪ Каждый поток имеет свой стек и контекст память для хранения значения архитектурных регистров при переключении контекстов операционной системой ▪ Куча процесса инструкции статические данные инициализированные являются общими для всех потоков 86
  • 87. Concurrency ≠ Parallelism февраля г ▪ одновременность два и более потоков выполняются разделяя одно процессорное ядро ▪ Операционная система реализует режим разделения времени ядра процессора ▪ Ускорение вычислений отсутствует ▪ Зачем ▪ Обеспечение отзывчивости интерфейса совмещение ввода вывода и вычислений ▪ параллелизм каждый поток выполняется на отдельном ядре процессора нет конкуренции за вычислительные ресурсы ▪ Вычисления выполняются быстрее 87