We use cookies in order to improve the quality and usability of the HSE website. More information about the use of cookies is available here, and the regulations on processing personal data can be found here. By continuing to use the site, you hereby confirm that you have been informed of the use of cookies by the HSE website and agree with our rules for processing personal data. You may disable cookies in your browser settings.

  • A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Parallel Programming

2022/2023
Academic Year
RUS
Instruction in Russian
4
ECTS credits
Delivered at:
Department of Informatics
Course type:
Compulsory course
When:
3 year, 3, 4 module

Instructor


Kalishenko, Eugene

Программа дисциплины

Аннотация

Является дисциплиной базовой профильной части профессионального цикла. Данная дисциплина направлена на овладение навыками программирования параллельных и распределенных систем. Существенное внимание уделяется вопросам, связанным с освоением базовых знаний в области архитектуры современных многопроцессорных вычислительных систем, параллельной обработки информации, технологий организации параллельных вычислений на многопроцессорных вычислительных комплексах с распределенной или общей оперативной памятью. Для освоения дисциплины студентам необходимы знания, полученные в результате изучения дисциплин «Архитектура компьютера и операционные системы», «Язык программирования Java».
Цель освоения дисциплины

Цель освоения дисциплины

  • Формирование у студентов теоретических знаний и практических навыков программирования параллельных и распределенных систем.
Планируемые результаты обучения

Планируемые результаты обучения

  • Знает основные подходы к разработке параллельных программ; основные технологии и модели параллельного программирования; методы создания параллельных программ для типичных задач многопоточного программирования.
  • Умеет создавать параллельные программы для вычислительных систем с распределенной, общей оперативной памятью; проводить распараллеливание вычислительных алгоритмов; строить модель выполнения параллельных программ; оценивать эффективности параллельных вычислений; анализировать сложность вычислений и возможность распараллеливания разрабатываемых алгоритмов.
  • Умеет применять общие схемы разработки параллельных программ для реализаций собственных алгоритмов; оценивать основные параметры получаемых параллельных программ, таких как ускорение, эффективность и масштабируемость.
  • Имеет опыт создания параллельных программ для вычислительных систем с распределенной, общей оперативной памятью; построения параллельных аналогов вычислительных алгоритмов.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Раздел 1. Введение. Создание потоков. Синхронизация. Атомарные снимки регистров
  • Раздел 2. Характерные ошибки, профилирование, пулы потоков и шаблоны
  • Раздел 3. Кластеры, сети Петри. Модели памяти, асинхронный ввод/вывод
  • Раздел 4. Линеаризуемость, lock-free структуры данных
Элементы контроля

Элементы контроля

  • неблокирующий Домашнее задание
    Домашнее задание выдается студентам в одном варианте. Срок выполнения домашнего задания - 2 недели. Форма представления обучающимися домашнего задания - программа на выбранном языке программирования.
  • блокирующий Устный экзамен
    Устный экзамен проводится в форме ответов на вопросы экзаменационного билета. Экзаменационный билет два вопроса из перечня вопросов к экзамену. На подготовку ответа выделяется 2,5 часа.
Промежуточная аттестация

Промежуточная аттестация

  • 2022/2023 учебный год 4 модуль
    Преподаватель учитывает оценку за текущий контроль (домашние задания). Онакопленная=0,25*Од/з1 + 0,25*Од/з2 + 0,25*Од/з3 + 0,25*Од/з4 Действует следующий способ округления накопленной оценки за текущий контроль: значениях от 0,1 до 0,4 оценка округляется в меньшую сторону, от 0,5 до 0,9 – в большую. Результирующая оценка за дисциплину рассчитывается следующим образом: ОРезультирующая= 0,4*Онакопленная+0,6* Оэкзамен
Список литературы

Список литературы

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

  • Friesen, J. (2015). Java Threads and the Concurrency Utilities. [Berkeley, CA]: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1118905
  • Herlihy, M., & Shavit, N. (2012). The Art of Multiprocessor Programming, Revised Reprint. Burlington: Morgan Kaufmann. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=460894

Рекомендуемая дополнительная литература

  • Deng, Y. (2012). Applied Parallel Computing. Singapore: World Scientific. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=545490
  • Малявко, А. А.  Параллельное программирование на основе технологий openmp, cuda, opencl, mpi : учебное пособие для вузов / А. А. Малявко. — 3-е изд., испр. и доп. — Москва : Издательство Юрайт, 2021. — 135 с. — (Высшее образование). — ISBN 978-5-534-14116-0. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/467800 (дата обращения: 28.08.2023).
  • Практикум по параллельному программированию с использованием электронного задачника Programming Taskbook for MPI: Учебное пособие / М.Э. Абрамян. - Ростов н/Д: Издательство ЮФУ, 2010. - 172 с. ISBN 978–5–9275–0778–8 - Режим доступа: http://znanium.com/catalog/product/549949

Авторы

  • Кузнецов Антон Михайлович
  • Спицина Кристина Станиславовна