Введение в параллельное программирование с использованием 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 ArchitecturePrinceton University via Coursera CUDA at Scale for the Enterprise
Johns Hopkins University via Coursera Parallel Programming with Dask in Python
DataCamp Writing Efficient R Code
DataCamp Asynchronous Programming in C# and .NET Core
Microsoft via edX