Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

os2016-24-03-dist

.pdf
Скачиваний:
11
Добавлен:
21.03.2016
Размер:
4.98 Mб
Скачать

Процессы (а также их надсистемы и подсистемы)

Большие задачи

Параллелизм и параллельное программирование

Аппаратная поддержка процессов

Процессы: определение, разновидности, состояния, многопоточность

Модели функционирования процессов

Планирование и диспетчеризация процессов

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]