СТО АлтГТУ 13.62.1.4211-2014 Приложение В Памятка для направления 080500"Бизнес-информатика" по изучению дисциплины «Распределенные системы» 8 семестр 1 Содержание дисциплины Дисциплина «Распределенные системы» изучается в 8 семестре. Учебный план дисциплины предусматривает лекции 13 часов, лабораторные работы 26 часов, самостоятельная работа студентов в семестре 69 часов. В ней будут рассмотрены следующие темы. Лекции (13 часов ) Литература [1] 1. Введение в параллельные вычисления Методы и средства параллельной обработки информации: параллельные вычислительные методы, параллельные вычислительные системы, параллельное программирование. Распараллеливание на уровне задач, на уровне передачи сообщений, на уровне разделяемой памяти, функциональная декомпозиция, декомпозиция по данным, геометрический параллелизм. Эффективность параллельных вычислений, закон Амдала. Блокировка, гонки данных, синхронизация. Основные понятия унифицированного языка моделирования (UML) для представления взаимодействующих процессов. (1 час+2 часа СРС) 2. Потоки и процессы Создание и завершение процессов и потоков. Планирование потоков, приоритет, привязка к процессорам. Барьеры. (1 час+2 часа СРС) 3 Параллельное программирование в системах с общей памятью на основе OpenMP Основные директивы Open MP. Балансировка нагрузки. Циклы и секции. Конвейерные алгоритмы. Блочные алгоритмы умножения матриц. Метод сдваивания. Чет-нечетная сортировка. Каскадные алгоритмы. (2 часа+2 часа СРС) 4. Объекты ядра Windows Реализация базовых механизмов в ядре ОС. Однопроцессорное ядро. Многопроцессорное ядро. Реализация семафоров в ядре. Реализация мониторов в ядре. Реализация мониторов с помощью семафоров . Файлы, отображаемые на память, мьютексы, мониторы, условные переменные. (2 часа+2 часа СРС) 5 Синхронизация потоков с использованием объектов ядра, Критические секции, взаимное исключение. Барьеры и сигнализирующие события. Производители и потребители. Кольцевые буферы. Задача об обедающих философах. Задача о читателях и писателях. Распределение ресурсов и планирование. (2 часа+2 часа СРС) 6 Паттерны проектирования конкурирующих процессов Однопоточное выполнение (Single Threaded execution), Активный объект (Active Object), Объект блокировки (Lock Object), Охраняемая приостановка (Guarded Suspension), Отмена (Balking), Планировщик (Scheduler), Блокировка чтения - записи (Read-Write Lock), Асинхронная обработка (Asynchronous Processing), Производитель потребитель (Producer - Consumer), Двойная буферизация (Double Buffering), (Half SyncAsync), Пул потоков (Thread Pool) (2 часа+2 часа СРС) 30 СТО АлтГТУ 13.62.1.4211-2014 7 Проектирование сетевых приложений Асинхронная передача сообщений. Клиенты и серверы. Обмен данными. Синхронная передача сообщений. Примеры взаимодействий типа "клиент-сервер". Сервер приложений. Блокирующий и неблокирующий сервер. Распределенный портфель задач. Алгоритмы типа "зонд-эхо". Алгоритмы рассылки. Логические часы и упорядочение событий. Алгоритмы передачи маркера. Распределенный таймер. Распределенные семафор и критическая секция (1 час+2 часа СРС) 8 Суперкомпьютеры Введение в понятия высокопроизводительных вычислений. Основные направления развития высокопроизводительных компьютеров. Многоядерные системы, GPU как массивно-параллельный процессор. Архитектура GPU и модель программирования CUDA. Иерархия памяти CUDA. Глобальная, константная, текстурная, локальная, разделяемая и регистровая память. Особенности использования каждого типа памяти. Размещение различных данных в различной памяти. Когерентное общение с глобальной памятью. Программирование многоядерных GPU. Кластеры из GPU. Кластеры и суперкомпьютеры на гибридной схеме. Использование OpenMP и MPI технологий совместно с CUDA. Вопросы оптимизации приложений на CUDA. (1 час+2 часа СРС) 9 Параллельное программирование на основе интерфейса передачи сообщений MPI Основы параллельного программирования на основе стандарта MPI. Библиотека MPI. Модель SIMD. Инициализация и завершение MPI-приложения. Точечные обмены данными между процессами MPI-программы. Режимы буферизации. Проблема блокировок. Коллективные взаимодействия процессов в MPI. Управление группами и коммуникаторами в MPI (1 час+1 час СРС) Лабораторные занятия (26 час.) Литература [1] 3.1.1.2.1. Диаграммы взаимодействий параллельных процессов UML. (2 часа) 3.1.1.2.2. Параллельные вычислительные алгоритмы. Технология Open MP (2 часа) 3.1.1.2.3. Параллельные матричные блочные и каскадные алгоритмы (2 часа) 3.1.1.2.4 Распараллеливание на уровне задач, потоки (2 часа) 3.1.1.2.5 Синхронизация процессов на основе объектов ядра (2 часа) 3.1.1.2.6. Паттерны программирования: Producer - Consumer (2 часа) 3.1.1.2.7. Паттерны программирования: Read-Write Lock (2 часа) 3.1.1.2.8. Паттерны программирования: Scheduler и Thread Pool (2 часа) 3.1.1.2.9. Реализация распределенной системы на основе протокола TCP/IP (2 часа) 3.1.1.2.10. Реализация неблокирующего сервера приложений. (2 часа) 3.1.1.2.11. Реализация распределенных алгоритмов на основе технологии MPI (2 часа) 3.1.1.2.12. Реализация вычислительных алгоритмов на основе технологии CUDA (2 часа) 3.1.1.2.13. Итоговое занятие (2 часа) 31 СТО АлтГТУ 13.62.1.4211-2014 2 Учебно-методическое дисциплины и информационное обеспечение А) основная литература: 1. Ногл М. TCP/IP. Иллюстрированный учебник – М.: ДМК-Пресс, 480 стр. Режим доступа: http://e.lanbook.com/view/book/1140/page1/ Б) дополнительная литература: 2. Боресков А.В., Харламов А.А. Основы работы с технологией CUDA - "ДМК Пресс", 2010, 232стр. http://e.lanbook.com/books/element.php?pl1_id=1260Ортега Дж. Введение в параллельные и векторные методы решения линейных систем: Пер. с англ. М.: Мир, 1991. 367с. 3. Эндрюс Г.Р. Основы многопоточного, параллельного программирования. Пер. с англ. М.: Издательский дом “Вильямс”, 2003. 512с. 4. Антонов А.С. "Параллельное программирование с использованием технологии OpenMP: Учебное пособие".- М.: Изд-во МГУ, 2009 5. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.:БХВПетербург, 2002. 6. Немнюгин С., Стесик О. Параллельное программирование для многопроцессорных вычислительных систем. – СПб.: БХВ-Петербург, 2002, 400 с. 7. Баденко В. Л. Высокопроизводительные вычисления: учеб. пособие – СПб.: Издво Политехн. ун-та, 2010. – 180 с. 8. Мацяшек Л.А., Лионг Б. Практическая Бизнес-информатика на основе учебного примера. –«Бином», Лаборатория знаний, 2012, 956 стр. Режим доступа: http://e.lanbook.com/view/book/8766/page863/ 9. Сандерс Дж., Кэндрот Э. Технология CUDA в примерах: введение в программирование графических процессоров - "ДМК Пресс", 2011, 232 стр.. Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=3029 10. Снейдер Й. Эффективное программирование TCP/IP - изд-во "ДМК Пресс", 2009, 320 стр. . Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=1272 11. Гергель В.П. Теория и практика параллельных вычислений. – М.:ИнтернетУниверситет, БИНОМ. Лаборатория знаний, 2007 12. Богачёв К.Ю. Основы параллельного программирования: учебное пособие "Бином. Лаборатория знаний, 2013, 342 стр. Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=42626 13. Дэвис А. Асинхронное программирование в C# 5.0 – Издательство "ДМК Пресс", 2013, 120 стр. . Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=9132 14. Энтони Уильямс. Параллельное программирование на C++ в действии. Практика разработки многопоточных программ Пер. с англ. Слинкин А.А. - : изд-во "ДМК Пресс", 2012, 672 стр. . Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=4813 В) Программное обеспечение и интернет-ресурсы 1. Богданов А., Мареев В., Станнова Е., Корхов В. Архитектуры и топологии многопроцессорных вычислительных систем // электронный учебник . Режим доступа: http://www.informika.ru/text/teach/topolog/index.htm 2. Материалы Microsoft: http://support.microsoft.com. 32 СТО АлтГТУ 13.62.1.4211-2014 3. Материалы информационно-аналитического центра НИВЦ МГУ – www.parallel.ru. 4. Букатов А.А., Дацюк В.Н., Жегуло А.И. Программирование многопроцессорных вычислительных систем. Ростов-на-Дону. Издательство ООО «ЦВВР», 2003, 208 с. . Режим доступа: http://rsusu1.rnd.runnet.ru/tutor/method/index.html 3 График контроля Контрольное испытание Лабораторная работа №1 Лабораторная работа №2 Лабораторная работа №3 Лабораторная работа №4 Лабораторная работа №5 Лабораторная работа №6 Лабораторная работа №7 Лабораторная работа №8 Лабораторная работа №9 Лабораторная работа №10 Лабораторная работа №11 Лабораторная работа №12 Итоговое занятие зачет Время проведения 1 неделя 2 неделя 3 неделя 4 неделя 5 неделя 6 неделя 7 неделя 8 неделя 9 неделя 10 неделя 11 неделя 12 неделя 13 неделя Время плановой сдачи 2 неделя 3 неделя 4 неделя 5 неделя 6 неделя 7 неделя 8 неделя 9 неделя 10 неделя 11 неделя 12 неделя 13 неделя 4 Шкала оценок и правила вычисления рейтинга Семестровый рейтинг вычисляется по формуле l S max( 85 M 22 N min( Pi ,60),0) , i 1 где S – семестровый рейтинг, M – бонусные баллы, начисляемые за знания вне программы курса. Определяются преподавателем и начисляются только при N=0. 0<= M <=15. Обычно M=0, N – количество несданных лабораторных работ в течение семестра, l – количество лабораторных работ. Обычно l=13, Pi – количество полных и неполных недель, прошедших после недели плановой сдачи i-ой лабораторной работы. К зачету студент допускается при семестровом рейтинге не менее 25. Итоговый рейтинг вычисляется по формуле E , еслиE 25 R 0,8 S 0,2 E , еслиE 25 Здесь E- зачётный рейтинг, R – итоговый рейтинг. 5 Возможности повышения рейтинга Для студентов с высоким текущим рейтингом по их желанию может быть организовано углубленное изучение предмета, выдано дополнительное задание. В этом случае проводится дополнительный контроль, либо решение задач. По итогам проверки семестровый рейтинг может быть улучшен за счет положительного значения M. 33