Слайд 1Параллельные вычисления
Учебный год – 2020/21, осенний семестр
Группы P42142
Лекция 1
Преподаватели:
Балáкшин Павел
Валерьевич
(pvbalakshin@gmail.com),
Мишенёв Алексей
(mishenevalex@gmail.com)
Слайд 2PhD in Computer Science
9 years of teaching experience
15 years of
IT industry
Associate professor at ITMO University
Lead implementation engineer at Pegasystems
Inc.
Scientific interests: RPA, speech recognition, new IT inventions
About myself
Слайд 37-8 лекций
6 лабораторных работ по следующим темам:
Автоматическое распараллеливание
Использование
параллельных библиотек
OpenMP
PTHREADS
OpenCL
2 рубежных контроля (тестирование)
Структура курса
Слайд 4Балльно-рейтинговая
система (БАРС)
Слайд 5Орг. вопросы
vk.com/club31201840
Анкета:
ФИО
вуз бакалавриата
тема бакалаврской работы
e-mail/телефон
работа (где и
кем)
был ли подобный курс
Слайд 7Почему С/С++ (продолжение)
https://spectrum.ieee.org/computing/software/the-2017-top-programming-languages
Слайд 8Выбор языка технологии параллельного программирования
По материалам исследования Бернгардта Г.В. (2016)
Слайд 9Выбор языка технологии программирования (2)
По материалам исследования Бернгардта Г.В. (2016)
Над
диаграммами указан размер репозитория
Слайд 10Определения
Параллельные вычисления –
способ организации вычислений, при котором программа представляет
из себя набор взаимодействующих модулей, работающих одновременно.
≠ конвейерная обработка (суперскалярность)
≠ SIMD-расширения (MMX, SSE)
≠ вытесняющая многозадачность
= многоядерное программирование
= распределённые вычисления
«За время существование вычислительной техники скорость срабатывания элементов возросла в 106 раз, а быстродействие вычислений увеличилось в 109 раз».
«С 1986 до 2002 производительность однопроцессорных систем увеличивалась в 1.5 раза ежегодно. С 2002 – только 1.2 раза.»
Слайд 11Определения (2)
Concurrent computing is a way of organizing calculations on
one or more computers, where life periods of several tasks
intersect.
Sequential computing – there are no overlapping periods of tasks.
Parallel computing – tasks are executed physically simultaneously on different processors and/or cores of the same computer.
Multicore computing – computations when each processor has more then one core.
Shared memory processing (SMP) – refers to the work of parallel programs on systems with shared memory. In such systems all the processors/cores share common memory of one computer.
Distributed computing – sort of parallel computing, at which to calculations take place on processors located on different computers connected by a network, means one has to transfer programs and/or data through a network to perform calculations.
Слайд 12Определения (3)
Parallel calculations are always concurrent ones.
Not all concurrent calculations
are parallel.
Parallel computing = multicore computing = SMP.
Not in
scope of the course:
Bit-level parallelism
Parallelism at the operand level – concurrency at the data level
Parallelism at the instruction level – superscalarity
Preemptive multitasking
Слайд 13Зачем нужны параллельные вычисления
1. Для решение Problems of Grand Challenge
(быстродействия существующих вычислительных систем не хватает > 1 Tflops) :
моделирование
климата;
генная инженерия;
проектирование интегральных схем;
анализ загрязнения окружающей среды;
создание лекарственных препаратов
2. В повседневной жизни программиста будущего (одноядерные смартфоны и ПК уже почти не продаются).
3. Игровая индустрия.
Слайд 14Классификация параллельных систем (архитектур)
SMP (Shared Memory Parallelism, Symmetric MultiProcessor system)
–
многопроцессорность, многоядерность, GPGPU.
MPP (Massively Parallel Processing) –
кластерные
системы, GRID (распределенные вычисления)
Слайд 15Архитектура SMP
+ Высокая скорость межпроцессорного обмена.
– Плохая масштабируемость.
+ Простота и
дешевизна разработки ПО.
По материалам проф. Бухановского
Слайд 16Архитектура MPP
По материалам проф. Бухановского
+ Хорошая масштабируемость.
– Низкая скорость межпроцессорного
обмена.
– Высокая стоимость специализированного ПО.
Слайд 17По книге издательства Intel Press
Формы параллелизма
Слайд 18История развития SMP-систем
Частотность использования процессоров с различным числом ядер при
создании суперкомпьютеров
По данным сайта top500.org
Слайд 19Ограниченность роста производительности непараллельных компьютеров
Снижение стоимости многопроцессорных вычислительных систем
Cray T90:
1.8 GFlops ($2,5 млн.) – 1995 г.,
8 х IBM SP2:
2.1 GFlops ($0.5 млн.) – 2000 г.
Появление парадигмы многоядерного построения процессоров.
Что способствует развитию параллельных вычислений
Слайд 20Гипотеза Минского (Minsky): ускорение параллельной системы пропорционально двоичному логарифму от
числа процессоров.
Закон Мура (Moore): мощность последовательных процессоров удваивается каждые 18
месяцев.
Закон Гроша (Grosch): производительность компьютера возрастает пропорционально квадрату его стоимости.
Сложность освоения принципов параллельного программирования.
Что замедляет развитие параллельных вычислений (1)
Слайд 21Что замедляет развитие параллельных вычислений (2)
Закон Амдала (в любой программе
есть нераспараллеливаемая часть)
Слайд 22Последовательное и каскадное суммирование
По материалам проф. Гергеля
Пример распараллеливания алгоритма (1)
Слайд 23Пример распараллеливания алгоритма (2)
Поиск максимального элемента массива
По материалам проф. Гергеля
Слайд 24Пример распараллеливания алгоритма (3)
Параллельная сортировка:
Разбить исходный массив на две части.
Отсортировать каждую часть независимо за своём процессоре.
Выполнить слияния отсортированных кусков.
Вычислительная
сложность на двухъядерной системе
С1*N*N С1 *N*N/4 + С2 *N
Возможно почти четырёхкратное ускорение на двухъядерной системе!
Слайд 25Показатели эффективности параллельных программ
p – количество вычислителей (ядер, процессоров)
V –
скорость выполнения работы (ед. работы в секунду)
S(p) = V(p)/V(1) –
параллельное ускорение
E(p) = S(p)/p – параллельная эффективность
Слайд 26Закон Амдала
где t(p) – время выполнения программы на p вычислителях,
k – доля распараллеленных команд, w(p) – количество условных единиц
работы.
Слайд 27Закон Густавсона-Барсиса
где w(p) – количество условных единиц работы, выполненных программой
за время t.
.
Слайд 28Модификация закона Амдала
(по проф. Бухановскому)
N – количество распараллеливаемых операция,
M – количество нераспараллелива-емых операций, tc – время выполнения одной
операции, p – количество вычислителей, Ti – время выполнения программы при использовании i параллельных потоков на i вычислителях, α – масштабирующий коэффициент.
Слайд 29Сравнение с законом Амдала
Пусть N = 100, M = 20,
α = 0.05
Слайд 30Ключевая проблема параллельного программирования
Балансировка нагрузки!
Слайд 31Лабораторная работа №1
Задачи
Повторение/изучение языка Cи.
Исследование эффективности средств
автоматического распараллеливания.
Окружение
Компиляторы: gcc, icc, solarisstudio
ОС: любая разновидность Linux.
Слайд 32Автоматический
(компилятору подаётся ключ вида «распараллель всё сам»).
Полуавтоматический
(распараллеливающие флаги
компилятора могут иметь параметры, которые программист должен установить).
Автоматизированный
(ручное распараллеливание по
подсказкам профилировщика или статического анализатора кода).
Виды автоматического распараллеливания
Слайд 33Возможно ошибочное изменение логики программы.
Возможно понижение скорости вместо повышения.
Отсутствие гибкости
ручного распараллеливания.
Эффективно распараллеливаются только циклы.
Невозможность распараллелить программы со сложным алгоритмом
работы.
Слабые стороны автоматического распараллеливания