к.ф.-м.н., доцент Карепова Евгения Дмитриевна Четверг 14-35 (4 часа). Ауд. 31-06(4) Вашему вниманию предлагается курс «Распределенные вычисления» Успешное прохождение курса может быть засчитано, как 68 часов спецкурса Теоретическая составляющая курса предполагает изучение следующих тем. Тема 1. Параллельные компьютеры и супер-ЭВМ Архитектура машины фон Неймана. Увеличение производительности ЭВМ: за счет чего? Параллельная обработка данных: иерархия памяти, параллелизм, конвейер. Основные идеи улучшения архитектуры в исторической ретроспективе. Какие задачи нужно решать на супер-ЭВМ. Основные классы современных параллельных компьютеров. Тема 2. Особенности многопоточного, параллельного и распределенного программирования Использование параллельных вычислительных систем. Закон Амдала. Параллельные свойства алгоритма. Основные приемы. Метод сдваивания. Развертка циклов. Две парадигмы параллельного программирования: параллелизм данных (1), параллелизм задач (2). Обзор области параллельного программирования. Тема 3. Программирование с разделяемыми переменными Понятие неделимого действия. Оператор ожидания. Крупномодульные и мелкомодульные решения. Синхронизация: (1) взаимное исключение (задача критической секции – КС); (2) условная синхронизация (барьер); (3) сигнализация. Решения задач КС и барьерной синхронизации с активным ожиданием. Семафоры: синтаксис и семантика. Решения задач КС и барьерной синхронизации с помощью семафоров. Потребители и производители. Учет ресурсов. Стратегии планирования: задача об обедающих философах, задача о читателях и писателях. Мониторы: синтаксис и семантика; взаимное исключение, условные переменные, дисциплины синхронизации. Методы синхронизации. Рандеву с помощью монитора: задача о спящем парикмахере. Технология программирования OpenMP. Пример: сложение векторов. Тема 4. Обзор методов распределенных вычислений Передача сообщений. Асинхронная передача сообщений: клиент/сервер; взаимодействующие равные. Синхронная передача сообщений. Удаленный вызов процедур: сервер времени, кэширование в распределенной файловой системе. Рандеву: клиент/сервер. Пример: сортирующая сеть из фильтров слияния – две реализации – с помощью удаленного вызова процедур и с помощью рандеву. Технология программирования Linda. Пример: сложение векторов. Тема 5. Интерфейс передачи сообщений MPI Что такое MPI? Кластер ИВМ СО РАН: организация процесса вычислений. Простейшая программа. Двухточечный обмен в MPI. Блокирующие операции обмена. Неблокирующие операции обмена. Проблема тупиков. Коллективный обмен данными. Широковещательная пересылка. Распределение и сбор данных. Операции приведения и сканирования. Топология. Управление областью взаимодействия и группой процессов. Примеры. Тема 6. Модели взаимодействия процессов Управляющий-рабочий (распределенный портфель задач): умножение разреженных матриц, адаптивная квадратура. Алгоритмы пульсации: обработка изображений – выделение подобластей. Конвейерные алгоритмы: поиск минимума, умножение матриц, блочное умножение матриц. Алгоритмы типа «эхо-зонд»: рассылка сообщений в сети. Алгоритмы рассылки: логические часы и упорядочивание событий в распределенной среде. Алгоритмы передачи маркера: распределенное взаимное исключение. Дублируемые серверы: распределенное и децентрализованное решения задачи об обедающих философах. Тема 7. Теоретические основы параллельного программирования Система функциональных устройств. Простые и конвейерные устройства. Стоимость работы. Загруженность. Пиковая и реальная производительности. Эффективность. Законы Амдала и ГуставсонаБарсиса. Граф алгоритма и параллельные вычисления. Параллельные формы графа, ярус, высота. Информационное ядро. Параметризация. Концепция неограниченного параллелизма. Принцип сдваивания. Примеры алгоритмов малой высоты. Ограниченность концепции. Внутренний параллелизм. Преимущества. Примеры. Сети Петри. Графовые модели программ. Информационная структура. Операционная и информационная связи. Графы управления, операционно-логической истории, информационный, истории реализации, зависимостей, влияния. Минимальные графы зависимостей. Примеры. Практическая составляющая курса предполагает: – Windows: создание многопоточных и многопроцессных приложений с помощью функций WinAPI; – Библиотека MPI: параллельное синхронное программирование на 16-процессорной вычислительной системе ИВМ СО РАН.