ПВТ - весна 2015 - Лекция 1. Актуальность параллельных...

Post on 23-Jul-2015

952 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Лекция 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

Специализированные ускорители: 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

top related