Параллельные вычислительные технологии
(осень 2015, ИВ-321, ИС-341, ИС-241, ИУ-323, МГ-156)

Обратная связь

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

Лекции

Лекции доступны на сайте http://www.slideshare.net/apaznikov

Лекция № 0

Лекция № 1

Лекция № 2

Лекция № 3

Лекция № 4

Лекция № 5

Лекция № 6

Лабораторные работы (бакалавры, ИС-241, ИС-341, ИВ-321, ИУ-323)

Лабораторные работы выполняются в операционной системе Linux на языке программирования C++. Оформление исходных текстов программ должно соответствовать принятым в рамках курса соглашениям или альтернативным: Google C++ Style Guide, Code Conventions for the Java, Linux kernel coding style.

Лабораторная работа №1. Разработка простейших MPI-программ

Лабораторная работа №2. Дифференцированные и коллективные обмены. Виртуальные топологии

Лабораторная работа №3. Решение СЛАУ

Лабораторная работа №4. Метод конечных разностей

Лабораторные работы - магистранты (МГ-156)

Лабораторные работы выполняются в операционной системе Linux на языке программирования C++. Оформление исходных текстов программ должно соответствовать принятым в рамках курса соглашениям или альтернативным: Google C++ Style Guide, Code Conventions for the Java, Linux kernel coding style.

Лабораторная работа №1. Разработка параллельных программ с использованием библиотеки POSIX Threads

Лабораторная работа №2. Паттерны многопоточного программирования

Курсовой проект

Задания на курсовой проект

Задания на курсовой проект (PDF, с названиями работ)

Экзамен

Экзаменационные вопросы (бакалавры, специалисты)

Экзаменационные вопросы (магистранты)

Литература

Параллельное программирование

  1. Maurice Herlihy, Nir Shavit. The Art of Multiprocessor Programming
  2. Clay Breshears. The Art of Concurrency: A Thread Monkey's Guide to Writing Parallel Applications
  3. Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill. Patterns for Parallel Programming
  4. Michael McCool, James Reinders, Arch Robison. Structured Parallel Programming: Patterns for Efficient Computation
  5. Gregory R. Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. [Грегори Эндрюс. Основы многопоточного, параллельного и распределённого программирования]

MPI

  1. MPI 3.1 Standard

POSIX Threads

  1. Lewis Bill. Pthread Primer
  2. Butenhof D. Programming with POSIX Threads.
  3. Стивенс Ричард. UNIX. Профессиональное программирование (главы 11, 12)
  4. М. Митчелл, О. Джеффри, А. Самьюел. Программирование для Linux. Профессиональный подход (глава 4)
  5. Blaise Barney. POSIX Threads Programming
  6. B. Nichols, D. Buttlar, J.P.Farell. Pthreads Programming

С++-threads

  1. Anthony Williams. C++ Concurrency in Action [Энтони Уильямс. Параллельное программирование на С++ в действии]
  2. Scott Meyers. Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
  3. Cameron Hughes. Parallel and Distributed Programming Using C++ [Камерон Хьюз. Параллельное и распределённое программирование с использованием С++]

C

  1. Керниган Б., Ритчи Д. Язык программирования С, 3-е изд. - М.: Невский диалект, 2001. - 352 с.
  2. Керниган Б., Пайк Р. Практика программирования. - М.: Издательский дом “Вильямс”, 2004. - 288 с

C++ для начинающих

  1. http://www.cplusplus.com (http://www.cplusplus.com/doc/tutorial/)
  2. Стэнли Липпман. С++ для начинающих.
  3. Стивен Прата. Язык программирования C++.
  4. Герберт Шилдт. C++: базовый курс (Самоучитель C++, Полный справочник C++).
  5. Бьерн Страуструп. Язык программирования С++.
  6. Бьерн Страуструп. Программирование. Принципы и практика использования C++.
  7. Бьерн Страуструп. Дизайн и эволюция языка C++.
  8. Николай Джосьютис. С++ Стандартная библиотека. Для профессионалов.

С++ для продолжающих

  1. Скотт Мейерс. Эффективное использование С++.
  2. Скотт Мейерс. Наиболее эффективное использование C++.
  3. Скотт Мейерс. Эффективное использование STL.
  4. Scott Meyers. Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
  5. Николас Солтер. С++ для профессионалов.
  6. Герб Саттер. Новые сложные задачи на С++
  7. Герб Саттер. Стандарты программирования на С++.
  8. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования.

О разработке ПО

  1. Стив Макконнелл. Совершенный код.
  2. Мартин Фаулер. Рефакторинг. Улучшение существующего кода.
  3. Фредерик Брукс. Мифический человеко-месяц, или Как создаются программные системы.

Алгоритмы и структуры данных

  1. Кормен Т.Х., Лейзерсон Ч.И., Ривест Р.Л., Штайн К. Алгоритмы: построение и анализ. – 3-е изд. – М.: Вильямс, 2013. – 1328 с.
  2. Левитин А.В. Алгоритмы: введение в разработку и анализ. – М.: Вильямс, 2006. – 576 с.
  3. Ахо А.В., Хопкрофт Д., Ульман Д.Д. Структуры данных и алгоритмы. – М.: Вильямс, 2001. – 384 с.
  4. Кормен Т.Х. Алгоритмы: Вводный курс. - М.: Вильямс, 2014. - 208 с.
  5. Дасгупта С., Пападимитриу Х., Вазирани У. Алгоритмы. - М.: МЦНМО, 2014. - 320 с.
  6. Кнут Д. Искусство программирования. Том {1, 3}, 3-е изд. - М.: Вильямс, 2010.
  7. Седжвик Р. Фундаментальные алгоритмы на С++. Анализ/Структуры данных/Сортировка/Поиск. – К.: ДиаСофт, 2001. – 688 с.

Система контроля версий Git

  1. Scott Chacon. Pro Git (перевод на русский язык)
  2. Vincent Driessen. A successful Git branching model (перевод на русский язык)
  3. TryGit - интерактивное введение в Git и GitHub