LEC02
.pdfПараллельные вычисления
Учебный год – 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