os2016-24-03-dist
.pdfПроцессы (а также их надсистемы и подсистемы)
Большие задачи
Параллелизм и параллельное программирование
Аппаратная поддержка процессов
Процессы: определение, разновидности, состояния, многопоточность
Модели функционирования процессов
Планирование и диспетчеризация процессов
11
Параллелизм
Процесс или нить
Процессор или ядро
Истинный параллелизм
Псевдопараллелизм Распределенный параллелизм
Процессы (нити) называются параллельными, если они выполняются одновременно. Они могут быть либо независимыми, либо взаимодействующими и нуждающимися
в синхронизации |
12 |
Многоядерные процессоры нуждаются в параллельных приложениях
Производительность
GHz Era |
Multi-core Era |
Время
3
Семь вопросов о параллелизме:
От задач - к функциям и примитивам
15
Массивно параллельные приложения
Energy & oil exploration |
Climate modeling & |
|
|
weather prediction |
Medical imaging |
||
|
|||
|
|
and biophysics |
|
Digital content creation |
Financial analyses, trading |
Computer Aided Design |
|
|
|
& Manufacturing |
•Сложные вычислительные проблемы, которые могут быть разбиты на части, выполняющиеся параллельно
•Параллельные приложения отличаются по гранулярности и программным моделям
•Массивно параллельные приложения встречаются везде!
- workstation, HPC, Data Centers
•Примеры массивно параллельных вычислений: Vector Math, FFTs, Sparse and Dense Matrix Multiplication, Convolution, LU Factorization, Sort, Monte Carlo, BlackScholes, и т.д.
Независимый параллелизм: простое объяснение
В геометрии |
В программировании |
параллельные прямые |
независимые |
не пересекаются: |
параллельные задачи |
|
не взаимодействуют |
Pablo Halpern, 2014 (CC BY 4.0)
Модели параллельного и распределенного программирования
Основные модели |
Раздельная память |
Общая память |
Сильная |
Слабая |
связность |
связность |
Диапазон параллелизма
ILP, DLP Многопроц. Грид
Многоядерн. |
Кластера |
18 |
|
|
Основные шаги при разработке реального приложения с распараллеливанием
?
?
?
?
?
• Параллельные – последовательные
алгоритмы
• Типы параллелизма
• По данным
• Функциональный
• Распределение работ
• Реализация |
!!!!! |
|
• Корректность |
||
|
||
• Ускорение |
|
|
• Масштабируемость |
|
|
• Синхронизация, накладные расходы |
|
|
• Баланс загрузки |
|
|
• Гранулярность |
|
19
А вот и некоторые проблемы:
•Распараллеливание программ
•Языки: Распараллеливание вручную – сложно выполнить во многих случаях и требует много времени
•Библиотеки: Любая библиотека – прекрасный кандидат на превращение в язык, ориентированный на предметную область
•Системы программирования: Автоматическое распараллеливание компилятором – слишком консервативное
•Параллелизм на уровне команд (ILP) имеет ограниченную эффективность в некоторых приложениях
20