ПВТ - весна 2015 - Лекция 1. Актуальность параллельных...
-
Upload
alexey-paznikov -
Category
Education
-
view
952 -
download
2
Transcript of ПВТ - весна 2015 - Лекция 1. Актуальность параллельных...
Лекция 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 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
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-Gx15
Эволюция распределённых ВС
• Моделирование процессов магнетизма
• Моделирование сверхпроводимости
• Задачи гидродинамики
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) - время, необходимое одному процессору для решения задачи размера nTp(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] = %d\n”, 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] = %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
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 + 1Tp(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 + knTp(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)ss – последовательная часть программы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