Курс «Параллельные вычисления»

2011 год

Лекторы:

Лекции

Темы Слайды
1 Введение. Типы параллелизма. Классификация параллельных систем. Современные параллельные архитектуры Вводная, Архитектуры
2 Архитектуры современных процессоров. Параллелизм уровня задач. Процессы и потоки. Синхронизация процессов. Ошибки синхронизации. Архитектуры, Синхронизация
3 Взаимоисключение. Алгоритмы взаимоисключения Деккера, Питерсона, Лэмпорта Синхронизация
4 Примитивы синхронизации. Семафоры, мьютексы, мониторы, условные переменные, критические секции, барьеры Примитивы синхронизации
5 Проектирование многопоточных программ на основе PThreads Многопоточные программы PThreads
6 Проектирование многопоточных программ на основе PThreads Многопоточные программы PThreads
7 Проектирование многопроцессных программ Многопроцессные программы MPI
8 Parallel programming in Java Java
9 Использование графических ускорителей. Технология CUDA Технология CUDA

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

В рамках курсового проекта студент выбирает один из алгоритмов, для которого выполняется:

  1. разработка алгоритма
  2. создание последовательной программы, реализующей алгоритм
  3. разработка тестового набора, оценка тестового покрытия
  4. выделение частей для параллельной реализации, определение общих данных, анализ потенциального выигрыша
  5. выбор способов синхронизации и защиты общих данных
  6. разработка параллельной программы
  7. отладка на имеющихся тестах, анализ и доработка тестового набора с учетом параллелизма
  8. измерение производительности, сравнение с производительностью последовательной программы
  9. анализ полученных результатов, доработка параллельной программы
  10. написание отчета и презентации
  11. защита проекта

Программная реализация создается:

  1. на языке Java, многопоточное приложение с использованием java.util.concurent
  2. на C++ 2011, многопоточное приложение c использованием встроенных механизмов распараллеливания

Литература

  1. Х.М. Дейтел,П.Дж. Дейтел, Д.Р. Чофнес. Операционные системы: Основы и принципы. Третье издание. Пер. с англ. - М.ООО"Бинм-Пресс", 2009 г. - 1024 с.
  2. Воеводин В. В., Воеводин Вл. В. Параллельные вычисления — СПб: БХВ-Петербург, 2002. — 608 с.
  3. Немнюгин С., Стесик О. - Параллельное программирование для многопроцессорных вычислительных систем. - СПб. БХВ-Петербург,2002. – 400с.
  4. Робачевский А., Немнюгин С., Стесик О. - Операционная система UNIX, 2 изд., СПб: БХВ 2010.- 656c.
  5. Боресков А.В., Харламов А.А. Основы работы с технологией CUDA. М:ДМК-Пресс. 2010, -232с.
  6. B. Nichols, D. Buttlar, J.P. Farrell: Pthreads Programming - A POSIX Standard for Better Multiprocessing, O'Reilly, 1996.-288p.
  7. B. Eckel. Thinking in Java (4th Edition). Prentice Hall, 2006.-1150p.
  8. B. Goetiz, T. Peierls. Java concurrency in practice. Addison-Wesley Professional, 2006, - 384p.
  9. IEEE standard SystemC language reference manual, IEEE Std 1666, 2005 – http://standards.ieee.org/getieee/1666/download/1666-2005.pdf
  10. Официальный сайт OpenMP – http://openmp.org/wp/
  11. Message Passing Interface Forum – http://www.mpi-forum.org/