Введение в параллельное программирование с использованием OpenMP и MPI
Offered By: Tomsk State University via Coursera
Course Description
Overview
Потребность решения сложных прикладных задач с большим объемом вычислений и принципиальная ограниченность максимального быстродействия «классических» – по схеме фон Неймана – ЭВМ привели к появлению многопроцессорных вычислительных систем (МВС) или суперкомпьютеров.
Широкое распространение параллельные вычисления приобрели с переходом компьютерной индустрии на массовый выпуск многоядерных процессоров с векторными расширениями. В настоящие время практически все устройства – от карманных гаджетов и до самых мощных суперкомпьютеров – оснащены многоядерными процессорами. И если вы пишите последовательную программу, не применив распределение работы между разными ядрами центрального процессора и не проведя векторизацию, то вы используете только часть вычислительных возможностей центрального процессора.
Пройдя этот курс, вы познакомитесь с основными архитектурами МВС, с двумя стандартами (OpenMP и MPI), позволяющими писать параллельные программы для систем с общей и распределенной памятью. На простых примерах будут разобраны основные конструкции и способы распределения работы. Выполнение практических заданий позволит вам приобрести практические навыки создания параллельных программ. Курс будет интересен всем, кто занимается программированием.
Для участия в курсе слушателю необходимо иметь базовые знания по программированию с использованием С/С++.
Курс состоит из 9 недель. Каждая неделя курса содержит видеолекции, а также проверочные задания. Сертификат получают слушатели, набравшие более 80 % от максимально возможного количества баллов. При этом итоговый результат, представленный как 100 %, складывается из следующих составляющих: тесты 1–5 недели дают 4 %, тесты 6–9 недели дают 5 %, все практические задания дают 10 %, кроме итогового практического задания по OpenMP, которое дает 20 %.
Сертификат о прохождении данного курса дает дополнительные баллы при поступлении в магистратуру Национального исследовательского Томского государственного университета. Перечень магистерских программ находится по ссылке: https://pro-online.tsu.ru/edu/student/table.php
Широкое распространение параллельные вычисления приобрели с переходом компьютерной индустрии на массовый выпуск многоядерных процессоров с векторными расширениями. В настоящие время практически все устройства – от карманных гаджетов и до самых мощных суперкомпьютеров – оснащены многоядерными процессорами. И если вы пишите последовательную программу, не применив распределение работы между разными ядрами центрального процессора и не проведя векторизацию, то вы используете только часть вычислительных возможностей центрального процессора.
Пройдя этот курс, вы познакомитесь с основными архитектурами МВС, с двумя стандартами (OpenMP и MPI), позволяющими писать параллельные программы для систем с общей и распределенной памятью. На простых примерах будут разобраны основные конструкции и способы распределения работы. Выполнение практических заданий позволит вам приобрести практические навыки создания параллельных программ. Курс будет интересен всем, кто занимается программированием.
Для участия в курсе слушателю необходимо иметь базовые знания по программированию с использованием С/С++.
Курс состоит из 9 недель. Каждая неделя курса содержит видеолекции, а также проверочные задания. Сертификат получают слушатели, набравшие более 80 % от максимально возможного количества баллов. При этом итоговый результат, представленный как 100 %, складывается из следующих составляющих: тесты 1–5 недели дают 4 %, тесты 6–9 недели дают 5 %, все практические задания дают 10 %, кроме итогового практического задания по OpenMP, которое дает 20 %.
Сертификат о прохождении данного курса дает дополнительные баллы при поступлении в магистратуру Национального исследовательского Томского государственного университета. Перечень магистерских программ находится по ссылке: https://pro-online.tsu.ru/edu/student/table.php
Syllabus
- Добро пожаловать на курс «Введение в параллельное программирование с использованием OpenMP и MPI»
- Добро пожаловать на курс параллельного программирования! Надеемся вам будет интересно. Пожалуйста, внимательно прочитайте все инструкции.
- Введение в параллельный мир
- На этой неделе мы рассмотрим историю развития высокопроизводительных вычислительных систем. Разберемся, как устроена память в компьютере и какие есть у нее особенности. Также мы с вами узнаем, как устроена оперативная память в многопроцессорных вычислительных системах, и рассмотрим их основные архитектуры. Рассмотрим несколько примеров задач, для решения которых необходимо применять суперЭВМ, и некоторые инструменты создания параллельных программ.
- Основы OpenMP
- Добро пожаловать на вторую неделю курса! На этой неделе мы рассмотрим особенности программирования для систем с общей памятью. Разберемся с такими понятиями, как поток и многопоточность. Мы начнем изучение технологии OpenMP, научимся создавать параллельную область. На примерах рассмотрим директивы, которые позволяют управлять процессом исполнения кода в параллельной области.
- Директивы распределения работы и синхронизации работы
- Добро пожаловать на третью неделю курса! Надеемся, что вы получаете удовольствие от курса и обучения. На этой неделе мы изучим директивы OpenMP, которые позволяют распределять работу между потоками. Рассмотрим различные способы синхронизации выполнения потоков, научимся создавать критические секции и работать с общими переменными с использованием атомарных операций, а также изучим механизмы синхронизации на основе «замков».
- Векторные вычисления с помощью OpenMP 4.0
- Приветствуем вас на четвертой неделе курса! На этой недели мы разберемся с тем, что такое векторизация и зачем она нужна. Рассмотрим, как можно векторизовать код для современных процессоров, и познакомимся с новыми возможностями стандарта OpenMP 4.0.
- Анализ и оптимизация программ с использованием современных программных пакетов
- Вот вы и добрались до пятой недели курса! На этой неделе мы с вами рассмотрим основные опции компилятора Intel и то, как можно попробовать автоматически распараллелить программу. Мы также изучим основные возможности программного пакета Intel Parallel Studio, который упрощает и помогает создавать параллельные программы.
- Системы с распределённой памятью. Основы MPI
- Приветствуем вас на шестой неделе курса! Вы узнаете историю создания стандарта MPI и задачи, для решения которых он был разработан. Мы дадим основные термины и определения, используемые в рамках модели передачи сообщений. На нескольких примерах параллельных программ будут описаны шесть функций библиотеки MPI, использования которых уже достаточно для написания первых параллельных программ.
- Прием и передача сообщений между отдельными процессами
- На этой неделе будут изучены функции приема и передачи сообщений между отдельными процессами, будет дана классификация функций парного взаимодействия процессов. Также на ряде примеров будут показаны особенности использования функций приема и передачи сообщений.
- Коллективные операции
- Добро пожаловать на предпоследнюю неделю курса! На этой неделе мы изучим операции коллективного взаимодействия процессов, рассмотрим входные и выходные параметры для коллективных функций, опишем особенности их использования в зависимости от поставленной задачи.
- Производные типы данных. Группы и коммуникаторы
- Вот и подошла последняя неделя курса! Мы рассмотрим дополнительные возможности библиотеки MPI, опишем процедуры создания новых групп и коммуникаторов, а также рассмотрим создание и использование виртуальных топологий, таких как декартова решетка и топология графа.
Taught by
Николай Николаевич Богословский (Nikolai N. Bogoslovskiy) and Евгений Александрович Данилкин (Evgeniy A. Danilkin)
Tags
Related Courses
Computer Vision: The FundamentalsUniversity of California, Berkeley via Coursera Programming Languages
University of Virginia via Udacity Learn to Program: Crafting Quality Code
University of Toronto via Coursera Computational Photography
Georgia Institute of Technology via Coursera Algorithms: Design and Analysis, Part 2
Stanford University via Coursera