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

LEC02

.pdf
Скачиваний:
16
Добавлен:
21.03.2016
Размер:
724 Кб
Скачать
☆

Параллельные вычисления

Учебный год – 2016, весенний семестр

Лекция 2

Преподаватели:

Соснин Владимир Валерьевич

(vsosnin@gmail.com),

Балакшин Павел Валерьевич

(pvbalakshin@gmail.com)

Работа над ошибками

Слайд с прошлой лекции

Показатели эффективности параллельных программ

S(p) = параллельное ускорение E(p) = S(p)/p – параллельная эффективность

p – количество вычислителей (ядер, процессоров)

V – скорость выполнения работы (ед. работы в секунду

2

Виды аппаратного параллелизма

По книге издательства Intel Press

3

Гиперпоточность

Общий вывод: гиперпоточность – это зло для параллельного программирования (неверное представление о количестве вычислителей, общая кэш-память, прирост не более 30% и др).

По книге «Многоядерное программирование (Ш. Эхтер, 2010)

4

Инструменты ОС для обеспечения параллельной работы программ

•Process: процесс (наиболее тяжеловесный механизм; сложные или медленные механизмы синхронизации общих переменных; процессы имеют независимые адресные пространства).

•Thread: поток = нить = тред (имеют общее разделяемое между ними адресное пространство и развитые механизмы синхронизации доступа к общим переменным).

•Fiber: волокно = легковесный поток (минимальные накладные расходы; отсутствие истинного физического распараллеливания; нужны для удобства программирования).

5

Состояния треда

6

Многопоточность на однопроцессорных системах по сравнению и многопроцессорными

•На однопроцессорной (одноядерной) системе можно использовать приоритеты потоков для упорядочивания их доступа к процессору (на многопроцессорной системе этого делать нельзя).

•На однопроцессорной системе нужно упаковывать структуры поплотнее для оптимизации работы кэш-памяти, а на многоядерной надо их разреживать по размеру строки кэша для предотвращения False Sharing.

7

Проблемы параллельного программирования

•Измерение параллельной эффективности.

•Нестабильность результатов вычисления с плавающей точкой.

•Состояния гонки.

•Взаимные блокировки.

•Проблема АВА.

•Инверсия приоритетов.

•Балансировка нагрузки (LJF).

•Масштабируемость.

•False sharing (+аппаратная оптимизация).

8

Проблемы измерения параллельного ускорения

Причины

1. Наличие фоновой нагрузки.

2. Случайность природы алгоритма.

По материалам проф. Бухановского

9

Измерение времени выполнения параллельной программы

•Использовать потокобезопасные реэнтерабельные функции (например, rand_r вместо rand).

•Измерить время несколько раз затем

1)взять минимальный замер или

2)рассчитать доверительный интервал.

•Провести верификацию результата: приятные неожиданности.

10