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

Частей 12
Время 1м, 6д

Курс знакомит с параллельными вычислениями и распределёнными системами обработки и хранения данных, а также выработкой навыков практического использования соответствующих технологий. Курс состоит из четырех основных блоков: concurrence, параллельные вычисления, параллельная обработка больших массивов данных и распределенные вычисления. Лекции читает Олег Викторович Сухорослов, старший научный сотрудник Центра грид-технологий и распределенных вычислений ИСА РАН. Доцент кафедры распределенных вычислений ФИВТ МФТИ. Кандидат технических наук.

Блок 1. Concurrency (одновременность)
Области применения и проблематика. Способы реализации одновременных систем, процессы и потоки, программный инструментарий. Основы многопоточного программирования на примере языков C++ и Java. Типичные ошибки многопоточного программирования. Взаимное исключение и условная синхронизация. Модель памяти и низкоуровневые примитивы синхронизации. Альтернативные подходы к реализации одновременных программ.

Блок 2. Параллельные вычисления
Области применения и проблематика. Современные параллельные вычислительные системы. Теоретические основы параллельных вычислений. Показатели качества параллельного алгоритма. Принципы разработки и типовые структуры параллельных алгоритмов. Методология PCAM. Системы параллельного программирования. Типовые модели программирования и шаблоны. Основы параллельного программирования на системах с общей памятью на примере технологии OpenMP. Основы параллельного программирования на системах с распределенной памятью на примере технологии MPI.

Блок 3. Параллельная обработка больших массивов данных
Феномен Big Data. Модель программирования MapReduce. Принципы параллельной реализации вычислений. Область применения и примеры задач. Принципы распределенной реализации MapReduce на кластерных системах. Платформа Apache Hadoop. Интерфейсы прикладного программирования и реализация программ для Hadoop. Локальная отладка и запуск программ на кластере. Приемы и стратегии реализации MapReduce-программ. Высокоуровневые языки и инструментарии для работы с Hadoop. Практические примеры использования MapReduce. Ограничения модели MapReduce, расширения и альтернативные подходы.

Блок 4. Распределенные системы и вычисления
Области применения, характерные особенности и виды распределенных систем. Проблемы построения распределенных систем. Теоретические основы распределенных вычислений, примеры распределенных алгоритмов. Способы взаимодействия распределенных процессов, сетевые протоколы. Технологии распределенного программирования. Знакомство с языком Erlang. Распределенные системы хранения данных, репликация данных, NoSQL-системы. Технологии распределенных вычислений, гриды, добровольные вычисления. Облачные вычислительные системы.