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

LEC02

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

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

Учебный год – 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