ЛЕКЦИЯ 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Многоядерные вычислительные систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 4. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Доклад Кулагина И.И., Пазникова А.А., Курносова М.Г. "Оптимизация информационных обменов в параллельных PGAS-программах" на 3-й Всероссийской научно-технической конференции «Суперкомпьютерные технологии» (СКТ-2014)
29 сентября – 4 октября 2014 г., с. Дивноморское
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Alexey Paznikov
ЛЕКЦИЯ 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI умножения матрицы на вектор, метода Монте-Карло, решение линейных алгебраических уравнений (СЛАУ) методами Гаусса и сопряжённых градиентов
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
ЛЕКЦИЯ 2. POSIX Threads. Жизненный цикл потоков. Планирование. Синхронизация
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ЛЕКЦИЯ 8. Многопоточное программирование без использования блокировок. Модель потребитель-производитель. Потокобезопасный стек. Проблема ABA. Указатели опасности.
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 3. Реентерабельность. Сигналы. Локальные данные потоков. Принудительное завершение потоков
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 4. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Доклад Кулагина И.И., Пазникова А.А., Курносова М.Г. "Оптимизация информационных обменов в параллельных PGAS-программах" на 3-й Всероссийской научно-технической конференции «Суперкомпьютерные технологии» (СКТ-2014)
29 сентября – 4 октября 2014 г., с. Дивноморское
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Alexey Paznikov
ЛЕКЦИЯ 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI умножения матрицы на вектор, метода Монте-Карло, решение линейных алгебраических уравнений (СЛАУ) методами Гаусса и сопряжённых градиентов
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...Alexey Paznikov
ЛЕКЦИЯ 2. POSIX Threads. Жизненный цикл потоков. Планирование. Синхронизация
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Alexey Paznikov
ЛЕКЦИЯ 2. Коллективные операции в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ЛЕКЦИЯ 8. Многопоточное программирование без использования блокировок. Модель потребитель-производитель. Потокобезопасный стек. Проблема ABA. Указатели опасности.
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 3. Реентерабельность. Сигналы. Локальные данные потоков. Принудительное завершение потоков
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 7. Многопоточное программирование без блокировок. Модель потребитель-производитель. Потокобезопасный стек: проблема ABA, указатели опасности, сборщики мусора, счётчик ссылок, применение модели памяти С++.
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...Alexey Paznikov
ЛЕКЦИЯ 6. Атомарные операции. Внеочередное выполнение инструкций. Барьеры памяти. Семантика захвата-освобождения. Модель памяти C++
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...Alexey Paznikov
ЛЕКЦИЯ 6. Разработка параллельных структур данных на основе блокировок
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...Alexey Paznikov
ЛЕКЦИЯ 5. Многопоточное программирование в языке С++. Работа с потоками. Защита данных. Синхронизация. Будущие результаты
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 4. Стандарт POSIX Threads. Реентерабельность функций. Обработка сигналов. Локальные данные потоков. Принудительное завершение потоков. Шаблоны программирования с использованием потоков
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Лекция 4. Производные типы данных в стандарте MPIAlexey Paznikov
ЛЕКЦИЯ 4. Производные типы данных в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ЛЕКЦИЯ 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллельный ввод-вывод в MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Yandex
Алексей Куканов, Intel.
Последняя версия стандарта С++ добавляет в язык и библиотеку поддержки средства для использования потоков исполнения (threads) и синхронизации между ними. Однако это лишь необходимая низкоуровневая база для внедрения параллелизма. Эффективная разработка параллельных программ требует высокоуровневого API, реализующего типичные шаблоны использования параллелизма в виде, пригодном для применения в широком спектре алгоритмов и приложений. В докладе речь пойдёт о наиболее часто встречающихся параллельных шаблонах, реализованных в программных моделях Intel® Threading Building Blocks и Intel® Cilk Plus, и о примерах их использования.
ЛЕКЦИЯ 7. Многопоточное программирование без блокировок. Модель потребитель-производитель. Потокобезопасный стек: проблема ABA, указатели опасности, сборщики мусора, счётчик ссылок, применение модели памяти С++.
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - осень 2014 - Лекция 6 - Атомарные операции. Внеочередное выполнение инс...Alexey Paznikov
ЛЕКЦИЯ 6. Атомарные операции. Внеочередное выполнение инструкций. Барьеры памяти. Семантика захвата-освобождения. Модель памяти C++
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ПВТ - весна 2015 - Лекция 6. Разработка параллельных структур данных на основ...Alexey Paznikov
ЛЕКЦИЯ 6. Разработка параллельных структур данных на основе блокировок
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...Alexey Paznikov
ЛЕКЦИЯ 5. Многопоточное программирование в языке С++. Работа с потоками. Защита данных. Синхронизация. Будущие результаты
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 4. Стандарт POSIX Threads. Реентерабельность функций. Обработка сигналов. Локальные данные потоков. Принудительное завершение потоков. Шаблоны программирования с использованием потоков
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Лекция 4. Производные типы данных в стандарте MPIAlexey Paznikov
ЛЕКЦИЯ 4. Производные типы данных в стандарте MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ЛЕКЦИЯ 6. Параллельная сортировка. Алгоритмы комбинаторного поиска. Параллельный ввод-вывод в MPI
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Yandex
Алексей Куканов, Intel.
Последняя версия стандарта С++ добавляет в язык и библиотеку поддержки средства для использования потоков исполнения (threads) и синхронизации между ними. Однако это лишь необходимая низкоуровневая база для внедрения параллелизма. Эффективная разработка параллельных программ требует высокоуровневого API, реализующего типичные шаблоны использования параллелизма в виде, пригодном для применения в широком спектре алгоритмов и приложений. В докладе речь пойдёт о наиболее часто встречающихся параллельных шаблонах, реализованных в программных моделях Intel® Threading Building Blocks и Intel® Cilk Plus, и о примерах их использования.
Как защитить сеть от web-угроз с помощью Cisco WSA (ex IronPort)SkillFactory
Ведущий инструктор SkillFactory, ССIE Security Сергей Кучеренко – о том, как эффективно отразить исходящие из интернета атаки с помощью технологий Cisco Web Security Appliance (ex IronPort): http://www.youtube.com/watch?v=R6LdAyPfKUs&hd=1
ЛЕКЦИЯ 1. Введение в параллельные вычисления
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
Евгений Крутько, НИЦ «Курчатовский институт».
В докладе на примере программы моделирования динамики движения конструкций по методу конечных элементов рассматриваются возможности и практика распараллеливания вычислений. Речь в нём пойдёт как о технике создания новых вычислительных потоков, так и об использовании стандартов openMP и MPI.
Опыт разработки статического анализатора кодаAndrey Karpov
Один из основателей проекта PVS-Studio расскажет об опыте разработки статического анализатора кода C++. У инструментов статического анализа кода существует "проблема айсберга". От пользователей скрыты сложные механизмы анализа кода, и иногда им кажется, что статические анализаторы – это просто какие-то утилиты, ищущие опечатки с помощью регулярных выражений. Автор доклада постарается в общих чертах описать, как всё обстоит на самом деле. Он покажет на примерах, почему нормальный анализ с помощью регулярных выражений нереализуем, что такое Data Flow анализ, а также расскажет о других технологиях, применяемых при анализе кода. Вкратце будет затронут вопрос использования нейронных сетей, обсуждение которых сейчас является очень модной темой, и рассказано, почему с точки зрения анализа кода отношение к этому направлению является очень скептическим.
Дмитрий Прокопцев, Яндекс
Речь пойдёт о, наверное, одном из самых важных и в то же время сложных нововведений в С++11 — R-ссылках (rvalue references). Мы рассмотрим базовые правила работы с такими ссылками и связанные с ними новые концепции языка: перемещение классов, универсальные ссылки и перенаправление вызовов.
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
О докладе:
Про Python и Django: зачем нужна красота и простота перфекционистам с дедлайнами, на примере Яндекс.Погоды.
Когда число сервисов, которые делаются в Яндексе, стало возрастать, дедлайны — поджимать, а от процесса разработки требовалось стать более гибким, возникла потребность в свежих решениях. В докладе на примере Яндекс.Погоды рассказывается, как в Яндексе делают сервисы с помощью языка Python и веб-фреймворка Django.
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
Казалось, закончились долгие обсуждения в форумах, как измерить время работы алгоритма, какие функции использовать, какую точность ожидать. Жаль, но опять придется вернуться к этому вопросу. На повестке дня вопрос – как лучше измерить скорость работы параллельного алгоритма.
Aleksei Milovidov "Let's optimize one aggregate function in ClickHouse"Fwdays
Let's calculate an average of one column for each key, like the following query: SELECT key, avg(value) FROM table GROUP BY key. What can be more simple? But the question is: what is the most efficient way to do it? How to write code to achieve maximum performance on a variety of hardware?
TMPA-2015: Expanding the Meta-Generation of Correctness Conditions by Means o...Iosif Itkin
Expanding the Meta-Generation of Correctness Conditions by Means of Semantic Markup
Dmitry Kondratyev, A.P. Ershov Institute of Informatics Systems, Novosibirsk
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
В третьей главе рассматриваются базовые свойства акторов, описанные в PhD диссертации Gul Agha: каждый актор имеет адрес, большой почтовый ящик, куда доставляются сообщения, адресованные актору и поведение. В ответ на входящее сообщение актор может отправить конечный набор сообщений другим акторам и/или создать конечное число новых акторов и/или поменять свое поведение для обработки следующего сообщения.
В рамках данного курса будет разработана библиотека для разработки параллельных приложений на платформе .NET, построенная по модели акторов.
Исходные коды библиотеки будут выкладываться на GitHub: https://github.com/hwdtech/HWdTech.DS
Код библиотеки будет разработан с использованием следующих принципов, приемов и методик:
S.O.L.I.D. - принципы
Unit-tests
Mock
IoC контейнеры
Для удобства слушателей курса краткий обзор данных практик приведен в Главе 4.
Similar to ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Вычислительные системы с общей памятью (20)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Alexey Paznikov
ЛЕКЦИЯ 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
ЛЕКЦИЯ 1. Основные понятия стандарта MPI. Дифференцированные обмены
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
ПВТ - весна 2015 - Лекция 7. Модель памяти С++. Внеочередное выполнение инстр...Alexey Paznikov
ЛЕКЦИЯ 7. Модель памяти С++. Атомарные операции. Внеочередное выполнение инструкций. Барьеры памяти. Семантика захвата-освобождения
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 5. Шаблоны многопоточного программирования
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 0. Описание курса. Общие вопросы, структура курса, требования. Содержание курса. Полезные ресурсы
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
ЛЕКЦИЯ 3. Стандарт POSIX Threads
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ПВТ - осень 2014 - Лекция 2 - Архитектура вычислительных систем с общей памятьюAlexey Paznikov
ЛЕКЦИЯ 2. Архитектура вычислительных систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
ЛЕКЦИЯ 1а. Описание курса "Параллельные вычислительные технологии" (ПВТ), осень 2014
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 11. Технико-экономическая эффективность функционирования вычислительных систем
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 10. Осуществимость решения задач на вычислительных системах
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 9. Показатели структурной живучести распределённых ВС
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 8. Расчёт функций потенциальной живучести распределённых вычислительных систем
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 7. Методика расчета показателей живучести ВС. Континуальный подход к анализу живучести большемасштабных ВС.
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ЛЕКЦИЯ 5. Живучие ВС. Потенциальная и структурная живучесть ВС. Показатели потенциальной живучести ВС
Пазников Алексей Александрович
к.т.н., ст. преп. Кафедры вычислительных системСибирский государственный университеттелекоммуникаций и информатики
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Вычислительные системы с общей памятью
1. Лекция 1. Актуальность параллельных
вычислений. Анализ параллельных
алгоритмов. Вычислительные системы
с общей памятью
Пазников Алексей Александрович
Кафедра вычислительных систем СибГУТИ
Сайт курса: http://cpct.sibsutis.ru/~apaznikov/teaching/
Q/A: https://piazza.com/sibsutis.ru/spring2015/pct2015spring
Параллельные вычислительные технологии
Весна 2015 (Parallel Computing Technologies, PCT 15)
1
8. Области применения ПВТ - наука
▪ Биология (расшифровка генов)
▪ Теоретическая физика (решение
уравнений квантовой физики)
▪ Химия (получение новых материалов)
▪ Метеорология (составление прогнозов
погоды)
▪ Геология (разведка полезных
ископаемых)
▪ ...
8
9. Области применения ПВТ - коммерция
▪ Создание новых автомобилей (аэродинамика
поверхностей, моделирование столкновений),
самолётов (выбор оптимальной поверхности
крыла)
▪ Фармакология (поиск новых лекарств, вакцин)
▪ Финансовое моделирование (поведение биржи,
глобальные экономические процессы)
▪ Сырьевой сектор (поиск новых месторождений,
моделирование движения газа, нефти)
▪ ...
9
18. Эволюция распределённых ВС
▪ Много разнообразных параллельных архитектур
▪ Отсутствие какого-либо единого соглашения или
единой модели по разработке параллельных
алгоритмов и программ
▪ Множество программных моделей, различные
способы разработки параллельных программ
(языки, среды разработки, интерфейсы)
18
19. Сложность параллельного программирования
Алгоритм Программа
(на языке
C, C++, Java,
Fortran, Ruby,
Python)
Архитектура
Последовательное программирование
Алгоритм
в модели А
Программа в
различных
парадигмах
(MPI, OpenMP,
CUDA, TBB,
OpenCL, Cilk)
Параллельное программирование
Алгоритм
в модели B
Алгоритм
в модели C
Архитектура А
Архитектура В
Архитектура С
19
20. Сложность параллельного программирования
Алгоритм
в модели А
Программа в
различных
парадигмах
(MPI, OpenMP,
CUDA, TBB,
OpenCL, Cilk)
Параллельное программирование
Алгоритм
в модели B
Алгоритм
в модели C
Архитектура А
Архитектура В
Архитектура С
▪ Алгоритм: не все задачи могут
быть распараллелены на
конкретной архитектуре
▪ Переносимость: поддержка
одного языка/интерфейса на
разных архитектурах (например,
MPI или OpenCL)
▪ Алгоритмическая задача:
обнаружить параллелизм
▪ Лингвистическая задача:
выразить параллелизм
▪ Практическая задача:
корректность, производительность
20
21. Почему нужно изучать параллельное программирование
▪ Это неизбежно: мультиядерные процессоры,
графические ускорители и т.д.
▪ Интересно, познавательно и очень непросто
▪ Одна из основных дициплин компьютерных наук
▪ ПВТ распространены повсеместно (конвейнеры,
ILP, TLP, языки, операционные системы,
программное обеспечение)
▪ Полезно: большие, очень сложные задачи,
которые востребованы в мировой науке
▪ ...
21
25. Ускорение параллельных вычислений
p - число процессоров,
n - размер задачи.
T1
(n) - время, необходимое одному процессору для
решения задачи размера n
Tp
(n) - время для решения p процессорами задачи
размера n
χ = T1
(n) / Tp
(n)
- ускорение параллельных вычислений, определяет
“выгоду” от распараллеливания задачи данного
размера n
25
26. Пример
for (i = 0; i < n; i++) {
a[i] = b[i] + c[i];
}
Подзадача
сумма n / p
элементов
Подзадача
сумма n / p
элементов
Подзадача
сумма n / p
элементов
Задача:
посчитать
сумму двух n-
элементных
векторов
Идеальное
распараллеливание:
▪ вычисления равномерно
распределяются между p
процессорами,
▪ нет накладных расходов
Ускорение:
χ = p
26
29. Распараллеливание на практике
1
1
время
T1
2
p
3
...
В реальном мире:
▪ дисбаланс загрузки:
последовательные вычисления
неравномерно распределяются
между процессорами,
Tp
(n) = max{T1, i
(n)}
Ускорение:
χ ≤ p
Tp
(n)T1, i
(n)
29
30. Распараллеливание на практике
1
1
время
2
p
3
...
W(n) = ΣTi
(n)
- работа параллельного алгоритма
- суммарное число инструкций
С(n) = p × Tp
(n)
- “цена” параллельного алгоритма:
суммарное время, в течение
которого p процессоров заняты
Tp
(n)Ti
(n)
С(n)
1 2 3 p W(n)
30
31. Закон Амдала
Пусть программа содержит часть r, которая может быть
распараллелена идеально (ускорение равно p) и
полностью последовательную часть s = 1 – r, которая
вообще не может быть распараллелена.
Тогда ускорение, которое может быть получено на ВС
из p процессоров:
χ = 1 / (s + r / p) = 1 / (s + (1 – s) / p)
31
32. Закон Амдала
Пусть программа содержит часть r, которая может быть
распараллелена идеально (ускорение равно p) и
полностью последовательную часть s = 1 - r, которая
вообще не может быть распараллелена.
Тогда для каждого фиксированного n максимально
допустимое ускорение: 1 / s.
Доказательство:
T1
(n) = (s + r) * T1
(n)
Tp
(n) = s * T1
(n) + r * T1
(n) / p
χ = T1
(n) / (s * T1
(n) + r * T1
(n) / p) =
= 1 / (s + r / p) -> 1 / s для p -> ∞
32
33. Ускорение и закон Амдала: примеры
scanf(“%d”, &k);
for (i = 0; i < n; i++) {
x[i] = y[i] * k;
}
for (i = 0; i < n; i++) {
printf(“x[i] = %dn”, x[i]);
}
33
34. Ускорение и закон Амдала: примеры
scanf(“%d”, &k);
for (i = 0; i < n; i++) {
x[i] = y[i] * k;
}
for (i = 0; i < n; i++) {
printf(“x[i] = %dn”, x[i]);
}
T1
(n) = 1 + n + n;
Tp
(n) = 1 + n / p + n;
χ = (1 + n + n) /
/ (1 + n / p + n) =
= 〈p ⟶ ∞〉=
= (2n) / (n) = 2
По закону Амдала:
Последовательная часть:
s ≈ 1 - 0.5 = 0.5
χ = 2
34
35. Ускорение и закон Амдала: примеры
x = malloc(n * sizeof(int));
quicksort(x);
n = norm(x);
printf(“vector norm = %d”, m);
35
36. Ускорение и закон Амдала: примеры
x = malloc(n * sizeof(int));
quicksort(x);
n = norm(x);
printf(“vector norm = %d”, m);
T1
(n) = 1 + nlogn + n + 1
Tp
(n) = 1 + logn + n + 1;
χ = (nlogn + n) / (logn + n) =
= (n(logn + 1)) / (logn + n)
36
37. Ускорение и закон Амдала: примеры
x = malloc(n * sizeof(int));
for (;;) {
for (i = 0; i < n; i++) {
x[i] = func(x[i]);
}
if (x[0] < eps) // k итераций до условия
break;
}
37
38. Ускорение и закон Амдала: примеры
x = malloc(n * sizeof(int));
for (;;) {
for (i = 0; i < n; i++) {
x[i] = func(x[i]);
}
if (x[0] < eps) // k итераций до условия
break;
}
T1
(n) = 1 + k (1 + n) = 1 + k + kn
Tp
(n) = 1 + k + kn / p;
χ = (k (1 + n)) / (k (1 + n / p)) =
=〈p ⟶ ∞〉= k (1 + n) / k = 1 + n
38
39. Закон Густафсона - Барсиса
39
χ = s + (1 – s)p = p + (1 – p)s
s – последовательная часть программы
p – количество процессоров (потоков)
Аналог закона Амдала, учитывающий количество
процессоров. Оценивает максимально достижимое
ускорение параллельной программ в зависимости от числа
потоков (процессоров).
Здесь ускорение показывает, насколько эффективным
может быть распараллеливание при увеличении сложности
задач.
g = ts
/ (ts
+ tp
/ p), где ts
– время последовательной части
программы, tp
– время части программы, которая может
быть распараллелена
40. Эффективность параллельного алгоритма
Эффективность параллельного алгоритма -
соотношение лучшего возможного времени
параллельного алгоритма к реальному значению
времени выполнения параллельного алгоритма.
Ep
= (T1
(n) / p) / Tp
(n) = χ / p
▪ Ep
≤ 1, поскольку s ≤ p
▪ Ep
= Const ⇒ линейное ускорение
40
41. Масштабируемость
Параллельный алгоритм сильно
масштабируется, если χ = Θ(p) (ускорение
линейное, не зависит от n).
Параллельный алгоритм слабо
масштабируется, если существует
медленно растущая функция f(p), такая что
для n = Ω(f(p)) функция Ep
(n) остаётся
постоянной.
41
42. Масштабируемость
x = malloc(n * sizeof(int));
for (;;) {
for (i = 0; i < n; i++) {
x[i] = func(x[i]);
}
if (x[0] < eps) // k итераций до условия
break;
}
T1
(n) = 1 + k + kn; Tp
(n) = 1 + k + kn / p;
Ep
(n) = ((1 + k + kn) / p) / (1 + k + kn / p) =
= (k / p + (kn) / p) / (k + kn / p) =
= (1 / p + n / p) / (1 + n / p) =
= (n / p) / (1 + n / p)
Алгоритм слабо масштабируется
42
43. Пропускная способность и латентность
43
При разработке потокобезопасных структур данных важно
учитывать следующие показатели:
▪ Латентность l – время выполнения отдельной операции.
▪ Пропуснкая способность b – скорость выполнения
операций со структурой.
45. Архитектура вычислительных систем с общей памятью
▫ Многоядерные процессоры и
многопроцессорные вычислительные
системы (ВС).
▫ SMP/NUMA-системы.
▫ Аппаратная многопоточность (SMT,
HyperTreading)
▫ Показатели эффективности ВС.
▫ Цели и задачи создания многопоточных
программ
▫ Процессы и потоки
45
46. Архитектура многопроцессорных вычислительных систем
Одноядерный
процессор
Параллелизм
уровня инструкций
Одноядерный процессор
поддержкой аппаратной
многопоточности
параллелизм уровня
инструкций
Многопроцессорные
системы
Параллелизм уровня
потоков
Многоядерные
процессоры
Параллелизм уровня
потоков
Многоядерные процессоры
с поддержкой аппаратной
многопоточности
Параллелизм уровня потоков
Современные
системы
Параллелизм уровня
потоков
1 2 3
4 5 6
47. Архитектура ядра процессора Intel 64
Логический
процессор
Backend
Вычислительное
ядро (Execution
Engine)
Кэш
память
▪ Логический процессор
представлен архитектурным
состоянием
и контроллером прерываний
▪ Архитектурное состояние
включает
❑ регистры общего назначения
…
❑ сегментные регистры
…
❑ управляющие регистры
…
❑ регистры
регистры
❑ регистры
❑
▪ Логический процессор это
то что видит операционная
система
48. Архитектура ядра процессора Intel 64
▪ Логический процессор
использует ресурсы
вычислительного ядра
▪ реализует выборку
декодирование инструкций
поддерживает очередь для
передачи инструкций в
▪ это вычислительное ядро менеджер
распределяющий инструкции
по исполняющим устройствам
▪ реализует параллельное выполнение инструкций
Логический
процессор
Backend
Вычислительное
ядро (Execution
Engine)
Кэш
память
49. Параллелизм уровня инструкций (Instruction level parallelism – ILP)
▪ Архитектурные решения для обеспечения параллельного
выполнения инструкций
▫ Суперскалярный конвейер исполняющие
модули конвейера присутствуют в нескольких экземплярах несколько
модулей
▫ Внеочередное исполнение команд
переупорядочивание команд для максимально загрузки
минимизация зависимости по данным между
инструкциями выполнение инструкций по готовности их данных
▫ инструкции модули поддерживают
операции над векторами инструкции
▫ архитектура процессор с широким
командным словом оперирует с инструкциями содержащими в себе
несколько команд которые можно выполнять параллельно на
ЗАО
МЦСТ Эльбрус 49
52. Intel Nehalem Core Pipeline
на каждом такте
выбирает
из кэша через
байт инструкций и
передает их на
предекодирование в
определяет
длину инструкций их
префиксы и типы
условный безусловный
переход …
и передает информацию
в
1 2
52
53. Intel Nehalem Core Pipeline
▪ преобразует инструкции в микрооперации
сложные инструкции преобразуются в несколько микроопераций
▪ передает микрооперации в очередь где выполняется поиск
циклов
для предотвращения их повторного декодирования слияние
микроопераций
для увеличения пропускной способности и другие оптимизации
▪ Поток микроопераций передается в исполняющее ядро
3
53
55. Intel Nehalem Execution Core
▪
выделяет
для поступающих
микроопераций блоки
в
привязывает
микрооперации к порту выдачи
переименовывает
архитектурные регистры
… используемые в
микрооперации в
микроархитектурные регистры
для предотвращения конфликтов
данных
4
55
56. Intel Nehalem Execution Core
▪
▪ пул из микроопераций динамический планировщик
▪ Если операнды микрооперации готовы она направляется на одно их
исполняющих устройств выполнение по готовности данных максимум
микроопераций такт портов
▪ реализует разрешения некоторых конфликтов данных передает
результат выполненной операции напрямую на вход другой если требуется
5
56
57. Intel Nehalem Execution Core
▪
▪ хранит микрооперации с
их состояниями в исходном
порядке
▪ отслеживает чтобы запись
результатов
в архитектурные регистры
выполнялась
в прямой последовательности
исходной программы
▪ Выполнение инструкции
считается завершенным если
а все её микрооперации
выполнены
б все более ранние операции
завершены
6
57
58. Одновременная многопоточность (Simultaneous Multithreading)
▪ Одновременная многопоточность
технология позволяющая выполнять
инструкции из нескольких потоков выполнения программ
на одном суперскалярном конвейере
▪ Потоки разделяют один суперскалярный конвейер
процессора
▪ позволяет повысить эффективность использования
модулей суперскалярного процессора
за счет наличия большего количества инструкций из разных
потоков выполнения
ниже вероятность зависимости по данным
Разделение ресурсов
▪ Примеры реализации
❑ г г
❑ г
❑
58
60. Многопроцессорные SMP-системы
▪ Процессоры системы имеют одинаковое время доступа к
разделяемой памяти симметричный доступ
▪ Системная шина это узкое место ограничивающее
масштабируемость вычислительного узла
60
61. Многопроцессорные NUMA-системы (AMD)
▪ это архитектура вычислительной
системы
с неоднородным доступом к разделяемой памяти
▪ Процессоры сгруппированы в узлы со своей локальной памятью
▪ Доступ к локальной памяти узла занимает меньше времени по сравнению
с временем доступом к памяти удаленных процессоров
▪ х процессорная система
▪ Каждый процессор имеет
интегрированный контроллер
и несколько банков памяти
▪ Процессоры соединены шиной
системы на базе процессоров
▪ Доступ к удаленной памяти
занимает больше времени
для на
62. Многопроцессорные NUMA-системы (Intel)
▪ х процессорная
система
▪ Каждый процессор
имеет интегрированный
контроллер и несколько
банков памяти
▪ Процессоры соединены
шиной
решения на базе
процессоров
62
63. Политика управления памяти NUMA-системы
▪ Политики управления памятью можно задавать
в настройках
▪ в системе присутствует
несколько
узлов у каждого узла имеется своя
локальная память операционная система
учитывает топологию системы при выделении
памяти
▪ память циклически
выделяется со всех узлов чередование
операционная система видит систему
как машину
63
64. Многоядерные процессоры (Multi-core processors)
Логический процессор
Вычислительное ядро
Кэш
память
С
Логический процессор
Вычислительное ядро
Кэш
память
▪ Процессорные ядра размещены на одном чипе
▪ Ядра процессора могу разделять некоторые ресурсы
например кэш память
▪ Многоядерный процессор реализует параллелизм уровня потоков
64
65. Многоядерные процессоры с поддержкой SMT
Логический
процессор
Вычислительное ядро
Кэш
память
Логический
процессор
Вычислительное ядро
Кэш
память
Логический
процессор
Логический
процессор
▪ Многоядерный процессор может поддерживать одновременную многопоточность
▪ Каждое ядро может выполнять несколько потоков на своем суперскалярном
конвейере
▪ Операционная система представляет каждый поток как логический процессор
65
66. Многоядерные процессоры с поддержкой SMT
Логический
процессор
Вычислительное ядро
Кэш
память
Логический
процессор
Вычислительное ядро
Кэш
память
Логический
процессор
Логический
процессор
▪ Операционная система видит логических процессора
▪ Потоки и выполняются на суперскалярных конвейерах разных ядер
▪ Задействован параллелизм уровня потоков и инструкций
66
69. Специализированные ускорители: Intel Xeon Phi
▪
▪
▪ Кольцевая шина бит для связи
ядер
и контроллера памяти
▪ Устанавливается в слот
система
логических
процессоров
69
70. Специализированные ускорители: Graphics Processing Unit
▪ графический процессор
специализированный многопроцессорный ускоритель с общей памятью
▪ Большая часть площади чипа занята элементарными
модулями
▪ Устройство управления относительно простое по сравнению
с
70
72. Специализированные многоядерные процессоры
▪ Как на чем разрабатывать программы для такого
количества
многоядерных архитектур
▪ Как быть с переносимостью кода программ между
платформами
▪ Как быть с переносимостью производительности
программ
▪ Все ли алгоритмы эффективно распараллеливаются
72
74. Наивная модель ВС с общей памятью
Память
ЭП ЭП ЭП ЭП
Процессоры соединены непосредственно с памятью, все
взаимодействия через чтение/запись из памяти
Предполагается, что модель согласованности памяти
соответствует порядку операций в программе: записи и
чтения происходят так, как это выполняется в программе
74
75. Наивная модель ВС с общей памятью
▪ процессоры выполняют процессы
▪ процессы не синхронизованы
▪ методы для синхронизации процессов
▪ процессы обмениваются информацией через общую
память
▪ методы для разделения памяти между процессами
Память
ЭП ЭП ЭП ЭП
75
76. Реальные архитектуры с общей памятью
Память
ЭП ЭП ЭПЭП
кэш
Кэш: небольшая, быстрая память, расположенная
близко к процессору. Сохраняет из основной памяти
блоки, которые затем используются при
вычислениях.
Буфер между процессором и основной памятью.
76
77. Реальные архитектуры с общей памятью
Память
ЭП ЭП ЭПЭП
кэш
Тип памяти Ёмкость Время доступа
Основная память гигабайты > 100 циклов
Кэш килобайты, мегабайты 1-20 циклов
Регистры 0-1 циклов
77
78. Многоуровневная система кэша
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
2-3 уровня + специализированные кэши, TLB, кэш инструкций и т.д.
78
79. NUMA-системы
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
Кэш решает проблему “узкого места”. При этом изменения в
кэше могут реально применяться в произвольном порядке.
Память
79
80. Абстракция памяти
Однопроцессорная
ЭВМ: система памяти и
процессор позволяют
обеспечить абстракцию
памяти.
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
ПамятьП
ЭП
кэш
ВС с общей памятью:
трудно обеспечить
абстракцию единой
однородной памяти.
80
81. Абстракция памяти - проблемы
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
Память
▪ Что случится, если один и тот же адрес находится в разных
кэшах?
▪ Что происходит при изменении записи в один из кэшей одним из
процессоров?
▪ Несколько процессоров записывают или читают из одного
адреса?
81
82. Абстракция памяти - проблемы
Память
ЭП ЭП ЭПЭП
кэш
кэш
Д И
Уровень 3
Уровень 2
Уровень 1
Память
▪ Что случится, если один и тот же адрес находится в разных
кэшах?
▪ Что происходит при изменении записи в один из кэшей одним из
процессоров?
▪ Несколько процессоров записывают или читают из одного
адреса?
Проблема когерентности кэша
82
84. Процессы и потоки операционной системы
ИнструкцииИнициализированные
данные
Исполняемый
файл на
носителе
информации
ИнструкцииИнициализированные
данные
Неинициализированные
данные
Куча
Данные библиотек
Инструкции
библиотек
Поток
▪ Процесс
запущенный
исполняемый
файл образ
▪ После запуска
процесс владеет
одним потоком
выполнения
84
87. Concurrency ≠ Parallelism
февраля г
▪ одновременность
два и более потоков выполняются
разделяя одно процессорное ядро
▪ Операционная система реализует
режим разделения времени ядра
процессора
▪ Ускорение вычислений отсутствует
▪ Зачем
▪ Обеспечение отзывчивости
интерфейса совмещение
ввода вывода и вычислений
▪ параллелизм
каждый поток выполняется на
отдельном ядре процессора
нет конкуренции за
вычислительные ресурсы
▪ Вычисления выполняются
быстрее
87