Methods and algorithms for parallel programming
Description: The course provides an idea of modeling and analysis of parallel computing, principles of development of parallel algorithms and programs, technologies and systems for the development of parallel programs, parallel numerical algorithms. Upon completion of the course, the master's student is able to build a model of parallel programs, evaluate the effectiveness of parallel computing, analyze the complexity of calculations and the possibility of parallelization of the algorithms being developed, evaluate the main parameters of programs.
Amount of credits: 5
Пререквизиты:
- Current Programming Media and Languages
- Algorithms, Data Structures and Programming
Course Workload:
Types of classes | hours |
---|---|
Lectures | 15 |
Practical works | |
Laboratory works | 30 |
SAWTG (Student Autonomous Work under Teacher Guidance) | 30 |
SAW (Student autonomous work) | 75 |
Form of final control | Exam |
Final assessment method |
Component: Component by selection
Cycle: Profiling disciplines
Goal
- The study of mathematical models, methods and technologies of parallel programming for multiprocessor computing systems (MVS) to the extent sufficient for the successful start of work in the field of parallel programming.
Objective
- Formation of students' theoretical knowledge and practical skills in the development of algorithms and programs and their implementation on (MVS) (supercomputers).
Learning outcome: knowledge and understanding
- Parallel computing methods for computational mathematics problems.
- The main approaches to the development of parallel programs
Learning outcome: applying knowledge and understanding
- Build a model of parallel programs execution.
- Apply general schemes for developing parallel programs to implement their own algorithms.
Learning outcome: formation of judgments
- Analyze the complexity of calculations and the possibility of parallelization of the developed algorithms.
- Evaluate the main parameters of the resulting parallel programs, such as acceleration, efficiency and scalability.
- Ability to develop and analyze conceptual and theoretical models of solved scientific problems and tasks.
Learning outcome: communicative abilities
- Develop communication skills, including knowledge of at least one foreign language to work with open Internet resources and interpersonal and group communication skills for business interaction within IT projects and other activities.
Learning outcome: learning skills or learning abilities
- The skill of developing parallel programs for MVS using MPI and OpenMP technologies.
Teaching methods
Модульно-блочные технологии. В основе модульный или циклический тип обучения, а также информационно-коммуникационный (в том числе дистанционные образовательные технологии). Ведущими формами обучения выступают лекции, а методами эвристический, программированный и объяснительно-иллюстративный. Основными средствами диагностики являются итоговые письменные работы и выполнение работ по пройденным темам и разделам.
Topics of lectures
- Введение в параллельные вычисления
- Проблемы разработки параллельных приложений
- Работа с потоками
- Средства синхронизации
- Конкурентные коллекции
- Работа с задачами
- Шаблоны параллелизма Parallel Параллельные циклы Parallel
- Технология PLINQ Параллелизм PLINQ-запросов
- Планировщик задач Организация планировщика: глобальная очередь задач, локальные очереди рабочих потоков
- Типовые модели параллельных приложений Шаблон MapReduce
Key reading
- Антонов А.С. Технологии параллельного программирования MPI и Open MP: Учебное пособие для вузов. – М.: Изд-во МГУ, 2012. – 344 с.
- Старченко А.В., Данилкин Е.А., и др. Практикум по методам параллельных вычислений: Учебник. – М.: Изд-во МГУ, 2010. – 200 с.
- Волосова А.В. Параллельные методы и алгоритмы [Электронный ресурс]: учебное пособие/ А.В. Волосова. ‒ М.: МАДИ, Электронные текстовые и графические данные (5,35 Мбайт). 2020. – 176 с.
- Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БХВ – Петербург, 2002. - 608 с.
Further reading
- Якобовский М. В. Введение в параллельные методы решения задач: Учебное пособие / Предисл.: В. А. Садовничий. – М.: Издательство Московского университета, 2013. – 328 с., илл
- Боресков А.В., Харламов А.А. Параллельные вычисления на GPU. Архитектура и программная модель CUDA: Учеб. пособие. – М.: Изд. МГУ, 2012. – 336 с.
- Сандерс Дж., Кэндрот Э. Технология CUDA в примерах: введение в программирование графических процессоров. – М.: ДМК Пресс, 2013.– 232 с.
- Гергель В.П. Высокопроизводительные вычисления для многопроцессорных многоядерных систем: Учебник – М.: Изд-во МГУ, 2010. – 544 с
- Боресков А.В., Харламов А.А. Основы работы с технологией CUDA. – М.: ДМК Пресс, 2011. – 231 с.
- Воеводин В.В. Вычислительная математика и структура алгоритмов: Учебник. – М.: Изд-во МГУ, 2010. – 168 с.