СТО АлтГТУ 13.68.1.4055-2014 Приложение Г Памятка для маги

advertisement
СТО АлтГТУ 13.68.1.4055-2014
Приложение Г
Памятка для магистратуры направления 231000.68 "Программная инженерия"
по изучению дисциплины «Проектирование сетевых и многопоточных приложений»
1 семестр
1 Содержание дисциплины
Дисциплина «Проектирование сетевых и многопоточных приложений» изучается в 1
семестре. Учебный план дисциплины предусматривает выполнение курсового проекта.
Лекции 15 часов, лабораторные работы 30 часа, самостоятельная работа студентов в
семестре 135 часов, в период сессии – 36 часов. В ней будут рассмотрены следующие
темы.
1 Лекции (15 часов, [литература 1-5])
1. Введение в параллельные вычисления
Методы и средства параллельной обработки информации: параллельные
вычислительные методы, параллельные вычислительные системы, параллельное
программирование. Распараллеливание на уровне задач, на уровне передачи сообщений,
на уровне разделяемой памяти, функциональная декомпозиция, декомпозиция по данным,
геометрический параллелизм. Эффективность параллельных вычислений, закон Амдала.
Блокировка, гонки данных, синхронизация. Основные понятия унифицированного языка
моделирования (UML) для представления взаимодействующих процессов. (1 час+2 часа
СРС)
2. Потоки и процессы
Создание и завершение процессов и потоков. Планирование потоков, приоритет,
привязка к процессорам. Барьеры. (1 час+2 часа СРС)
3 Параллельное программирование в системах с общей памятью на основе
OpenMP
Основные директивы Open MP. Балансировка нагрузки. Циклы и секции.
Конвейерные алгоритмы. Блочные алгоритмы умножения матриц. Метод сдваивания.
Чет-нечетная сортировка. Каскадные алгоритмы. (2 часа+3 часа СРС)
4. Объекты ядра Windows
Реализация базовых механизмов в ядре ОС. Однопроцессорное ядро.
Многопроцессорное ядро. Реализация семафоров в ядре. Реализация мониторов в ядре.
Реализация мониторов с помощью семафоров . Файлы, отображаемые на память,
мьютексы, мониторы, условные переменные. (2 часа+3 часа СРС)
5 Синхронизация потоков с использованием объектов ядра
Критические секции, взаимное исключение. Барьеры и сигнализирующие события.
Производители и потребители. Кольцевые буферы. Задача об обедающих философах.
Задача о читателях и писателях. Распределение ресурсов и планирование.
(2 часа+5 часов СРС)
6 Паттерны проектирования конкурирующих процессов
Однопоточное выполнение (Single Threaded execution), Активный объект (Active
Object),
Объект блокировки (Lock Object), Охраняемая приостановка (Guarded
Suspension), Отмена (Balking), Планировщик (Scheduler), Блокировка чтения - записи
(Read-Write Lock), Асинхронная обработка (Asynchronous Processing), Производитель 33
СТО АлтГТУ 13.68.1.4055-2014
потребитель (Producer - Consumer), Двойная буферизация (Double Buffering), (Half SyncAsync), Пул потоков (Thread Pool) (2 часа+5 часов СРС)
7 Проектирование сетевых приложений
Асинхронная передача сообщений. Клиенты и серверы. Обмен данными.
Синхронная передача сообщений. Примеры взаимодействий типа "клиент-сервер". Сервер
приложений. Блокирующий и неблокирующий сервер. Распределенный портфель задач.
Алгоритмы типа "зонд-эхо". Алгоритмы рассылки. Логические часы и упорядочение
событий. Алгоритмы передачи маркера. Распределенный таймер. Распределенные
семафор и критическая секция (2 часа+5 часов СРС)
8 Суперкомпьютеры
Введение в понятия высокопроизводительных вычислений. Основные направления
развития высокопроизводительных компьютеров. Многоядерные системы, GPU как
массивно-параллельный процессор. Архитектура GPU и модель программирования
CUDA. Иерархия памяти CUDA. Глобальная, константная, текстурная, локальная,
разделяемая и регистровая память. Особенности использования каждого типа памяти.
Размещение различных данных в различной памяти. Когерентное общение с глобальной
памятью.
Программирование многоядерных GPU. Кластеры из GPU.
Кластеры
и
суперкомпьютеры на гибридной схеме. Использование OpenMP и MPI технологий
совместно с CUDA. Вопросы оптимизации приложений на CUDA. (2 часа+8 часов СРС)
9 Параллельное программирование на основе интерфейса передачи
сообщений MPI.
Основы параллельного программирования на основе стандарта MPI. Библиотека
MPI. Модель SIMD. Инициализация и завершение MPI-приложения. Точечные обмены
данными между процессами MPI-программы. Режимы буферизации. Проблема
блокировок. Коллективные взаимодействия процессов в MPI. Управление группами и
коммуникаторами в MPI
(1 час+5 часов СРС)
2 Лабораторные занятия (30 час.) [литература 1-5]
1. Диаграммы взаимодействий параллельных процессов UML. (2 часа)
2. Параллельные вычислительные алгоритмы. Технология Open MP (2 часа)
3. Параллельные матричные блочные и каскадные алгоритмы (4 часа)
4 Распараллеливание на уровне задач, потоки (2 часа)
5 Синхронизация процессов на основе объектов ядра (4 часа)
6. Паттерны программирования: Producer - Consumer (2 часа)
7. Паттерны программирования: Read-Write Lock (2 часа)
8. Паттерны программирования: Scheduler и Thread Pool (2 часа)
9. Реализация распределенной системы на основе протокола TCP/IP (2 часа)
10. Реализация неблокирующего сервера приложений. (2 часа)
11. Реализация распределенных алгоритмов на основе технологии MPI (2 часа)
12. Реализация вычислительных алгоритмов на основе технологии CUDA (2 часа)
13. Итоговое занятие (2 часа)
2
Литература и учебно-методические материалы
А) основная литература:
34
СТО АлтГТУ 13.68.1.4055-2014
1. Мацяшек Л.А., Лионг Б. Практическая программная инженерия на основе учебного
примера. –«Бином», Лаборатория знаний, 2012, 956 стр. Режим доступа:
http://e.lanbook.com/view/book/8766/page863/
2. Ногл М. TCP/IP. Иллюстрированный учебник – М.: ДМК-Пресс, 480 стр. Режим
доступа: http://e.lanbook.com/view/book/1140/page1/
3. Сандерс Дж., Кэндрот Э. Технология CUDA в примерах: введение в
программирование графических процессоров - "ДМК Пресс", 2011, 232 стр. .
Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=3029
4. Снейдер Й. Эффективное программирование TCP/IP - изд-во "ДМК Пресс", 2009,
320 стр. . Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=1272
Б) дополнительная литература:
1. Боресков А.В., Харламов А.А. Основы работы с технологией CUDA - "ДМК
Пресс", 2010, 232стр. http://e.lanbook.com/books/element.php?pl1_id=1260Ортега
Дж. Введение в параллельные и векторные методы решения линейных систем:
Пер. с англ. М.: Мир, 1991. 367с.
2. Эндрюс Г.Р. Основы многопоточного, параллельного программирования. Пер. с
англ. М.: Издательский дом “Вильямс”, 2003. 512с.
3. В. Л. Высокопроизводительные вычисления: учеб. пособие – СПб.: Изд-во
Политехн. ун-та, 2010. – 180 с.
4. Антонов А.С. "Параллельное программирование с использованием технологии
OpenMP: Учебное пособие".- М.: Изд-во МГУ, 2009
5. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.:БХВПетербург, 2002.
6. Немнюгин С., Стесик О. Параллельное программирование для
многопроцессорных вычислительных систем. – СПб.: БХВ-Петербург, 2002, 400 с.
7. Баденко В. Л. Высокопроизводительные вычисления: учеб. пособие – СПб.: Издво Политехн. ун-та, 2010. – 180 с.
8. Гергель В.П. Теория и практика параллельных вычислений. – М.:ИнтернетУниверситет, БИНОМ. Лаборатория знаний, 2007
5. Богачёв К.Ю. Основы параллельного программирования: учебное пособие "Бином. Лаборатория знаний,
2013,
342 стр. Режим доступа:
http://e.lanbook.com/books/element.php?pl1_id=42626
6. Дэвис А. Асинхронное программирование в C# 5.0 – Издательство "ДМК Пресс",
2013, 120 стр. . Режим доступа: http://e.lanbook.com/books/element.php?pl1_id=9132
7. Энтони Уильямс. Параллельное программирование на 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.
3. Материалы информационно-аналитического центра НИВЦ МГУ –
www.parallel.ru.
4. Букатов
А.А.,
Дацюк
В.Н.,
Жегуло
А.И.
Программирование
многопроцессорных вычислительных систем. Ростов-на-Дону. Издательство
ООО
«ЦВВР»,
2003,
208
с.
.
Режим
доступа:
http://rsusu1.rnd.runnet.ru/tutor/method/index.html
35
СТО АлтГТУ 13.68.1.4055-2014
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 неделя
14 неделя
15 неделя
3-15 недели
Время плановой сдачи
2 неделя
3 неделя
5 неделя
6 неделя
8 неделя
9 неделя
10 неделя
11 неделя
12 неделя
13 неделя
14 неделя
15 неделя
15 неделя
в период сессии
15 неделя
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.
36
Download