Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей»




Скачать 28,98 Kb.
НазваниеРабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей»
Дата03.02.2016
Размер28,98 Kb.
ТипРабочая программа
РОССИЙСКАЯ АКАДЕМИЯ НАУК

Федеральное государственное бюджетное учреждение науки

Институт динамики систем и теории управления

Сибирского отделения Российской академии наук


ПРИНЯТО

Ученым советом Института

Протокол № 5 от 21.06.2012 г.

Председатель Ученого совета

______________ак. И.В. Бычков


РАБОЧАЯ ПРОГРАММА

Программирование систем с общей памятью


ОД.А.04


Для аспирантов специальности 05.13.11

«Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей»




г. Иркутск


2012

1. Цели и задачи дисциплины

Цели дисциплины: предоставить базовый набор знаний о математических моделях и методах параллельного (многопоточного) программирования вычислительных систем с общей памятью, привить навыки программирования таких систем в терминах конкретных библиотек.

Задачи дисциплины: освоение аспирантами технологий создания параллельных (многопоточных) приложений для вычислительных систем с общей памятью; изучение основных проблем, возникающих при программировании вычислительных систем с общей памятью, и путей их разрешения; приобретение навыков разработки параллельных (многопоточных) приложений с использованием библиотеки PThreads и технологии OpenMP.

2. Место дисциплины в структуре ООП

Данная дисциплина относится к группе дисциплин по выбору образовательной составляющей ООП ППО (в соответствии с Федеральными государственными требованиями (ФГТ)).

Содержание дисциплины опирается на знания, приобретенные ранее при изучении дисциплин «Программирование», «Архитектура вычислительных систем и компьютерные сети», «Дискретная математика», «Вычислительная математика», «Операционные системы», а также обязательной специальной дисциплины «Параллельные вычислительные системы». Для выполнения лабораторных заданий аспиранты должны иметь навыки программирования на языке Си/Си++.

3. Требования к уровню освоения содержания дисциплины

В результате изучения дисциплины аспиранты должны:

  • Усвоить ключевые понятия и принципы организации параллельных (многопоточных) вычислений.

  • Владеть общей методикой разработки параллельных программ для систем с общей памятью, знать методы параллельного программирования с разделяемыми переменными, механизмы синхронизации процессов по взаимодействию и по данным при доступе к общим ресурсам, иметь представление о критических секциях, семафорах и условных переменных.

  • Приобрести навыки работы с функциями библиотек PThreads и OpenMP при написании параллельных программ как для обычных ПК с многоядерными процессорами, так и для вычислительных кластеров с SMP-узлами, построенных на базе стандартной вычислительной архитектуры (x86).

  • Владеть средствами компиляции, отладки и запуска параллельных программ с поддержкой PThreads и OpenMP.

4. Структура и содержание дисциплины

Общая трудоемкость дисциплины составляет 2 зачетных единицы - 72 часа.

4.1. Структура дисциплины



Наименование дисциплины

Объем учебной работы (в часах)

Вид ито-

гового контроля

Всего

Всего аудит.

Из аудиторных

Сам. работа

Лекции

Лаб.

Прак.

КСР

1.

Программирование систем с общей памятью

72

48

24

24







24





4.2. Содержание дисциплины

4.2.1. Разделы дисциплины и виды занятий




Раздел дисциплины

Виды учебной работы и трудоемкость (в часах)

Самост. работа

Лекции

Лаб.

Прак.

КСР




1

Введение в программирование систем с общей памятью

2













2

Проектирование параллельных программ.

2

2







2

3

Проектирование многопоточных программ. Концепция потока. Модели создания и функционировании потоков

2

2







2

4

Создание многопоточных программ на основе POSIX Threads. Синхронизация параллельно выполняемых задач

2

2







2

5

Управление потоками программы средствами PThreads. Конфигурирование потоков

2

2







2

6

Функции PThreads для работы с мьютексами и условными переменными

2

2







2

7

Функции PThreads для работы с барьером, с переменными однократного выполнения и с ключами данных

2

2







2

8

Создание параллельных программ на основе технологии OpenMP

2

4







2

9

Распределение работы между потоками в OpenMP

2

2







2

10

Синхронизация в OpenMP

2

2







2

11

Дополнительные возможности OpenMP. Отладка программ в OpenMP

2

2







4

12

Настройка и ускорение программ в OpenMP

2

2







2


4.2.2 Содержание разделов дисциплины



Наименование раздела дисциплины

Содержание раздела

Форма проведения



Введение в программирование систем с общей памятью.

Тенденции развития современных процессоров. Повышение производительности компьютера. Усложнение и наращивание аппаратных средств. Иерархия памяти компьютера. Поддержка когерентности памяти. Протоколы поддержки когерентности. Параллельное и распределенное программирование. Преимущества параллельного программирования. Простейшая модель параллельного программирования. Проблемы параллельного программирования. Гонка данных, бесконечная отсрочка, взаимоблокировка, трудности организации связи. Программные решения проблемы взаимоисключений. Алгоритмы Деккера, Питерсона, Лэмпорта.

Лекции



Проектирование параллельных программ.

Шаблоны проектирования параллельных программ. Модель параллельных вычислений. Примитивы параллелизма. Объекты и правила синхронизации. Управление выполнением, переключение контекста.

Используемые стандарты и библиотеки функций/ компонентов. Классификация шаблонов проектирования (по уровню параллелизма, по примитивам параллелизма, по используемым процедурам синхронизации, по организации доступа к данным, по способу управления процессами, по применимости для различных платформ). Базовые уровни программного параллелизма. Параллелизм на уровне задач, подзадач и инструкций. Проектирование многопоточных программ. Граф алгоритма и параллельные вычисления. Внутренний параллелизм.

Лекции, лаборат.,

самост. работа




Проектирование многопоточных программ. Концепция потока. Модели создания и функционировании потоков.

Концепция программирования в Linux. Процессы и потоки. Системы программирования под ОС Linux. Системы программирования проекта GNU. Модель взаимодействующих потоков с общей памятью. Модель делегирования, модель с равноправными узлами, модель конвейера, модель «изготовитель-потребитель», модели SPMD и MPMD для потоков. Использование различных объектов синхронизации. Динамическое создание потоков. Стандарты и библиотеки. POSIX Threads. OpenMP. Windows Threads. Boost Threads.Intel TBB.

Лекции, лаборат.,

самост. работа




Создание многопоточных программ на основе POSIX Threads. Синхронизация параллельно выполняемых задач.

Стандарт POSIX Threads. Модель параллельных вычислений PThreads. Модель памяти и синхронизация в PThreads. Потоки и объекты синхронизации PThreads. Координация порядка выполнения потоков. Типы отношений синхронизируемых задач. Синхронизация доступа к данным. Критическая секция. Семафор. Мьютекс.

Лекции, лаборат.,

самост. работа




Управление потоками программы средствами PThreads. Конфигурирование потоков.

Создание, присоединение, завершение потока. Открепленные потоки. Установка атрибутов планирования и свойств потока. Управление стеком потока. Разбиение программы на несколько потоков. Практические навыки. Порядок выполнения лабораторных работ на кластере. Знакомство с установленным программным обеспечением для разработки параллельных программ. Компиляция и компоновка многопоточных программ на кластере. Компиляторы gcc, g++ и icc. Параллельные алгоритмы вычисления определенного интеграла, нахождения произведения вектора на матрицу, произведение матриц с использованием средств PThreads.

Лекции, лаборат.,

самост. работа




Функции PThreads для работы с мьютексами и условными переменными.

Типы мьютексов. Мьютексный атрибутный объект. Использование мьютексных семафоров для управления критическими секциями. Блокировки для чтения и записи. Использование блокировок для реализации стратегии доступа. Условные переменные. Управление отношениями синхронизации. Практические навыки использования мьютексов. Параллельный алгоритм нахождения скалярного произведения векторов. Пример реализации задачи «Производитель-потребитель». Пример параллельной программы, решающей задачу Дирихле для уравнения Пуассона.

Лекции, лаборат.,

самост. работа



Функции PThreads для работы с барьером, с переменными однократного выполнения и с ключами данных.

Инициализация, уничтожение и ожидание открытия барьера. Функция однократного выполнения.

Создание и удаление ключа. Связывание ключа с локальными данными текущего потока и получение данных по ключу.

Практические навыки использования этих функций.

Лекции, лаборат.,

самост. работа



Создание параллельных программ на основе технологии OpenMP

Структура стандарта OpenMP. Поддержка компиляторами. Понятия языка С++, необходимые для реализации примеров многопоточных программ. Итераторы. Контейнеры. Система ввода-вывода языка С++. Классы потоков. Модель консистентности памяти. Основные понятия OpenMP. Модель параллельной программы. Модель данных. Директивы компилятора. Структурированные блоки. Библиотека функций времени выполнения. Переменные окружения. Модель параллельных вычислений OpenMP. Практические навыки работы со стандартом OpenMP с использованием компиляторов gcc, g++, icc. Пример программы нахождения определенного интеграла.

Лекции, лаборат.,

самост. работа



Распределение работы между потоками в OpenMP

Низкоуровневое распараллеливание. Параллельные циклы. Способы распределения итераций цикла. Циклы с зависимостью по данным. Вложенные циклы. Параллельные секции. Задачи (tasks). Практические навыки распределения итераций цикла. Параллельные алгоритмы нахождения скалярного произведения векторов, поиска максимального значения вектора. Параллельный алгоритм построения импликационного графа. Примеры приемов распределения итераций циклов с зависимостью по данным. Практические навыки использования механизма задач для распределения работ. Параллельный алгоритм нахождения чисел Фибоначчи.

Лекции, лаборат.,

самост. работа



Синхронизация в OpenMP

Барьерная синхронизация. Директивы ordered, atomic, flush, taskwait. Критические секции. Синхронизация с использованием замков. Простые и множественные замки. Практические навыки использования механизмов синхронизации. Параллельная реализация метода Гаусса решения систем линейных алгебраических уравнений. Разработка и реализация параллельной программы построения минимального остовного дерева.

Лекции, лаборат.,

самост. работа



Дополнительные возможности OpenMP.

Отладка программ в OpenMP.

Дополнительные переменные среды и функции. Наиболее часто встречаемые ошибки в OpenMP-программах. Конфликт доступа к данным. Взаимная блокировка. Функциональная отладка OpenMP-программ. Практические навыки поиска ошибок в программах.

Лекции, лаборат.,

самост. работа



Настройка и ускорение программ в OpenMP

Профилирование программы. Иерархия памяти. Настройка кэш-памяти. Зависимости по данным.

Настройка и ускорение программ в OpenMP на примере программы умножения матриц.

Лекции, лаборат.,

самост. работа

5. Образовательные технологии

Основными видами образовательных технологий дисциплины являются лекции, организованные с использованием современных мультимедийных технологий, лабораторные работы на реальных вычислительных установках, а также самостоятельная работа аспиранта.

6. Учебно-методическое обеспечение самостоятельной работы аспирантов

Используются виды самостоятельной работы аспиранта: в читальном зале библиотеки, на рабочих местах с доступом к ресурсам Internet и в домашних условиях. Порядок выполнения самостоятельной работы соответствует программе курса и контролируется в ходе лекционных занятий. Самостоятельная работа подкрепляется учебно-методическим и информационным обеспечением, включающим рекомендованные учебники и учебно-методические пособия.

7. Учебно-методическое обеспечение дисциплины

а) Основная литература

  1. Хьюз К., Хьюз Т.  Параллельное и распределенное программирование на С++: Пер. с англ. – М.: Издательский дом «Вильямс», 2004. – 672 с.

  2. Богачев К.Ю. Основы параллельного программирования. – М.: БИНОМ. Лаборатория знаний, 2010. – 342 с.

  3. Антонов А.С. Параллельное программирование с использованием технологии OpenMP: Учебное пособие. – М.: Изд-во МГУ, 2009. – 77 с.

  4. Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БХВ-Петербург, 2004. – 608 с.

  5. Гергель В.П. Теория и практика параллельных вычислений: Учебное пособие. – М.: Интернет-Университет Информационных технологий; БИНОМ. Лаборатория знаний, 2007. – 423 с.

  6. Лупин С.А., Посыпкин М.А. Технологии параллельного программирования. – М.: ИД «Форум»: ИНФРА-М, 2008. – 208 с.

  7. Макконел Дж. Анализ алгоритмов. Активный обучающий код. 3-е доп. изд. – М.: Техносфера, 2009. – 416 с.

  8. Левин М.П. Параллельное программирование с использованием OpenMP: Учебное пособие. – М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2008. – 118 с.

  9. Эндрюс Г.Р. Основы многопоточного, параллельного и распределенного программирования: Пер. с англ. – М.: Издательский дом «Вильямс», 2003. – 512 с.

б) Дополнительная литература

  1. Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для многопроцессорных вычислительных систем: Учебное пособие. – Нижний Новгород: Изд-во Нижегородского ун-та, 2003.

  2. Дейтел Х.М., Дейтел П.Дж., Чофнес Д.Р. Операционные системы. Основы и принципы. 3-е изд.: Пер. с англ. – М.: ООО «Бином-Пресс», 2006. – 1024 с.

  3. Клюшкин Д.А. Полный курс С++. Профессиональная работа. – М.: Издательский дом «Вильямс», 2004. – 672 с.

  4. Джонсон Майкл К., Троан Эрик В. Разработка приложений в среде Linux. 2-е изд.: Пер. с англ. – М.: ООО «Вильямс», 2007. – 544 с.

  5. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. – М.: МЦНМО, 1999. – 960 с.

  6. Нечипуренко М.И. , Попков В.К., Майнагашев С.М. и др. Алгоритмы и программы решения на графах и сетях. – Новосибирск: Наука, 1990. – 515 с.

в) Интернет-источники

  1. Методические и учебные пособия на сайте Иркутского суперкомпьютерного центра СО РАН hpc.icc.ru/

  2. Интернет-университет информационных технологий www.intuit.ru.

  3. Интернет-университет суперкомпьютерных технологий www.hpcu.ru.

  4. Сайт лаборатории Параллельных информационных технологий НИВЦ МГУ www.parallel.ru.

  5. Межведомственный суперкомпьютерный центр РАН www.jscc.ru.

  6. Электронная библиотека механико- математического факультета МГУ lib.mexmat.ru.
  7. Электронные ресурсы издательства Springer http://link.springer.com/search?facet-content-type=%22Book%22&showAll=false .

  8. Электронные ресурсы издательства Elsevier http://link.springer.com/search?facet-content-type=%22Book%22&showAll=false.

  9. Национальный Открытый Университет "ИНТУИТ"- текстовые и видеокурсы по различным наукам http://www.intuit.ru/

  10. Общероссийский математический портал Math-Net.Ru

  11. Видеотека лекций по математике http://www.mathnet.ru/php/presentation.phtml?eventID=15&option_lang=rus#PRELIST15

  12. Единая коллекция цифровых образовательных ресурсов http://school-collection.edu.ru/catalog/rubr/75f2ec40-e574-10d2-24eb-dc9b3d288563/25892/?interface=themcol

  13. Видеолекции ведущих ученых мира http://www.academicearth.org/subjects/algebra.


  14. MPI. www.mpi-forum.org

  15. OpenMP. www.openmp.org

  16. DVM-система. www.keldysh.ru/dvm

  17. NVIDIA CUDA Zone. www.nvidia.ru/object/cuda_home_new_ru.html

  18. NVIDIA Developer Zone. http://developer.nvidia.com/cuda-downloads

  19. NVIDIA Tesla. www.nvidia.ru/page/tesla_computing_solutions.html

  20. NVIDIA Tesla. Инструменты разработчика. www.nvidia.ru/object/tesla_software_ru.html

  21. CUDA Documents. http://docs.nvidia.com/cuda/index.html.

8. Материально-техническое обеспечение дисциплины



Наименование

Кол- во

1

Библиотечный фонд ИДСТУ СО РАН




2

Библиотечный фонд научной библиотеки ИНЦ СО РАН




3

Учебные классы ИДСТУ СО РАН

С общим количеством:

- посадочных мест

- рабочих мест (компьютер+монитор)

- проекторов, экранов

4


100

12

3

4

Рабочие места с выходом в интернет

31

5

Вычислительные системы коллективного пользования ИДСТУ СО РАН

Из них:

Вычислительных кластеров с архитектурой x86

Вычислительных кластеров с архитектурой x86_64

Вычислительных кластеров с архитектурой x86_64+GPU

3


1

1

1

Программа составлена в соответствии с требованиями следующих нормативных документов:

  1. Федеральные государственные требования к структуре основной профессиональной образовательной программы послевузовского профессионального образования (аспирантура): - приказ Минобрнауки России от 16.03.2011 № 1365.

  2. Паспорт научной специальности 05.13.11 - «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», разработанный экспертами ВАК Минобрнауки России в рамках Номенклатуры специальности научных работников (утверждена приказом Минобрнауки РФ от 25.02.2009 №59, в ред. Приказом Минобрнауки РФ от 11.08.2009 №294, от 10.01.2012 №5).

  3. Программа - минимум кандидатских экзаменов по специальности 05.13.11 - «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей», утвержденная приказом Минобрнауки РФ от 08.10.2007 № 274 «Об утверждении программы кандидатских экзаменов».


Автор:

к.т.н. ______________________В.Г. Богданова


Ответственный за специальность

д.т.н. ______________________ Г.А. Опарин

Похожие:

Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconМатематическое и программное обеспечение человеко-машинных интерфейсов для моделирования бортовых приборов и систем
Специальность 05. 13. 11 – «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей»
Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconМатематическое и программное обеспечение распознавания многоэлементных зрительных сцен с использованием иерархических нейронных сетей
Специальность: 05. 13. 11 – «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей»
Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconАлгоритмы безопасного перехода в сетях петри для лицензионной защиты программных систем
Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconРабочая программа администрирование кластерных систем фд. А. 03 Специальность 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей»
Цели дисциплины: раскрыть базовые принципы организации кластерных вычислительных систем, состав и назначение их программно-аппаратных...
Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconРабочая программа теория сложности алгоритмов фд. А. 05 Специальность 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей»
Цель дисциплины: рассмотреть базовые понятия и концепции теории алгоритмической сложности
Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconРабочая программа распределенные вычисления фд. А. 01 Специальность 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей»
Крыть смысл ключевых понятий из области распределенных вычислений, сформировать представление о современных распределенных вычислительных...
Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconПрограмма– Математическое и программное обеспечение вычислительных машин
Методы решения некорректных задач. Методические указания по самостоятельной работе студентов по специальности "010500 – Прикладная...
Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconПрограмма дисциплины иностранный язык (английский) для специальности 230401. 65 "Прикладная математика"
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов специальности 230401. 65 "Прикладная...
Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconЛекция введение 3 лекция компоненты вычислительных сетей 13
Программное обеспечение компьютерных абамухамедова сетей " для студентов по специальности в-5523600"Электрон тижорат"
Рабочая программа Программирование систем с общей памятью од. А. 04 Для аспирантов специальности 05. 13. 11 «Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей» iconРабочая программа дисциплины «Архитектура ЭВМ и вычислительных сетей»
«Автоматизированные системы обработки информации и управления» (по отраслям) и 230105 «Программное обеспечение вычислительной техники...
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib2.znate.ru 2012
обратиться к администрации
Библиотека
Главная страница