+Внедрение новых технологии и методик распараллеливания

advertisement
Саровский физико-технический институт
Внедрение новых технологий и
методик распараллеливания
Цель программы
по проектированию и разработке
программ для численного моделирования
различных процессов, с применением
технологий CUDA, MPI, OpenCL и
OpenMP
Категория слушателей
инженеры-программисты
Компетенции, подлежащие
формированию по итогам
обучения
• слушатель в области по проектированию и
разработке программ для численного
моделирования различных процессов, с
применением технологий CUDA, MPI, OpenCL
и OpenMP.
– знает об архитектуре параллельных
вычислительных комплексов;
– знает о методах анализа алгоритмов;
– знает о концепциях взаимодействия
параллельных процессов;
– знает о типовых задачах, решаемых с
применением параллельного программирования;
–
–
–
–
–
–
–
–
–
–
–
Компетенции, подлежащие
формированию по итогам
обучения
знает о базовых операциях MPI;
знает о коллективных операциях обмена;
знает об алгоритме map-reduce;
знает о возможностях и применимости OpenMP;
знает о синхронизации выполнения потоков
параллельной программы;
знает об алгоритме fork-join;
знает о возможностях OpenCL;
знает о коллективных взаимодействий;
знает об устройстве OpenCL-программы.
знает о возможностях CUDA;
знает об устройстве CUDA-программы;
–
–
–
–
–
Компетенции, подлежащие
формированию по итогам
обучения
знает о коллективных взаимодействий;
знает об устройстве OpenCL-программы.
знает о возможностях CUDA;
знает об устройстве CUDA-программы;
умеет выявлять внутренний параллелизм последовательных
программ;
– умеет выявлять и устранять зависимости по данным и
управлению;
– умеет планировать выполнение параллельной программы с
применением передачи сообщений, разделяемой памяти и
возможностей графических процессоров;
– умеет реализовывать программы, написанные с
использованием различных методик и технологий
распараллеливания, на основе итеративного и
функционального параллелизма;
Компетенции, подлежащие
формированию по итогам
обучения
– умеет организовывать взаимодействие вычислительных
ядер с различными типами областей памяти;
– обладает навыком написания параллельных программ с
использованием современных технологий
распараллеливания;
– обладает навыком запуска параллельных программ на
вычислительном комплексе.
Объем программы и виды
учебной работы
Вид учебной работы
Всего
часов
Общий объем программы
80
Лекционные занятия
25
Лабораторные и практические занятия
40
Выполнение итоговой / выпускной
аттестационной работы
15
Учебный план
№
п/п
Наименование модулей
Всего
часов
В том числе
Лекции
1
Модуль 1. Основные сведения о
предмете параллельного
программирования
2
Модуль 2. Программирование с
использованием MPI
3
Модуль 3. Программирование с
использованием OpenMP
4
5
Модуль 4. Программирование с
использованием OpenCL
Модуль 5. Программирование с
использованием CUDA
5
15
15
15
15
Практические
(лабораторные)
занятия с указанием
мест проведения
5
5
10
(на базе СарФТИ
НИЯУ МИФИ)
5
10
(на базе СарФТИ
НИЯУ МИФИ)
5
10
(на базе СарФТИ
НИЯУ МИФИ)
5
10
(на базе СарФТИ
НИЯУ МИФИ)
Учебный план
№
п/п
Наименование модулей
Всего
часов
В том числе
Лекции
Самостоятельная работа
Итоговая аттестация по программе
ИТОГО
Практические
(лабораторные)
занятия с указанием
мест проведения
5
10
(на базе СарФТИ
НИЯУ МИФИ)
10
80
25
50
Программа
профессионального
модуля №1
«Основные сведения о
предмете параллельного
программирования»
Компетенции, подлежащие
формированию по итогам
прохождения модуля
• навыки
– анализа алгоритмов;
– анализа корректности программы;
– устранения общих проблем, возникающих в параллельных
программах.
• умеет
– выявлять внутренний параллелизм последовательных
программ;
– выявлять и устранять зависимости по данным и управлению.
• знает
–
–
–
–
об архитектуре параллельных вычислительных комплексов;
о методах анализа алгоритмов;
о концепциях взаимодействия параллельных процессов;
о типовых задачах, решаемых с применением параллельного
программирования.
Тематический план модуля
№
п/п
Наименование
разделов и тем профессионального модуля
Всего
часов
В том числе
Лекции
Практические
(лабораторные)
занятия
1
Тема 1. Классы задач
1
1
-
2
Тема 2. Концепции взаимодействия
1
1
-
3
Тема 3. Примеры задач
1
1
-
4
Тема 4. Общие проблемы
1
1
-
5
Тема 5. Способы решения проблем
1
1
-
Всего
5
5
-
Основные сведения о предмете
параллельного программирования
Тема 1. Классы задач
• Классы задач, при решении которых оправдано применение
параллельных вычислений: научные вычисления;
статистические задачи; имитационное моделирование.
Основные показатели: большой объем обрабатываемых
данных и/или действий. Применяются: итеративный,
функциональный параллелизм; портфель задач и архитектура
классной доски.
Тема 2. Концепции взаимодействия
• В параллельной программе предполагается определенная
степень взаимодействия между исполнителями. Для этого
используются два основных подхода: разделяемая память и
передача сообщений. Каждый подход имеет свои сильные и
слабые стороны, определяющие, когда их можно использовать
и в какой комбинации.
Основные сведения о предмете
параллельного программирования
Тема 3. Примеры задач
• Примерные задачи показываются, как выделить независимые
(по данным/управлению) операции в разных типах конкретных
задач. Рассматриваются: сумма ряда, префиксные вычисления,
умножение матриц, рекурсивный параллелизм,
распараллеливание рекуррентных отношений, портфель задач
и агенты.
Тема 4. Общие проблемы
• Общие проблемы параллельных вычислений: условия гонок,
согласованность локальной памяти, издержки коммуникаций.
Дополнительно рассматривается параметризация
планирования параллельной программы: задача
распределения объемов и работ в параллельной программе,
исходя из конфигурации запуска.
Основные сведения о предмете
параллельного программирования
Тема 5. Способы решения проблем
• Чтобы максимально исключить вероятность появления
проблем, необходимо обеспечить корректную работу
параллельной программы независимо от конфигурации запуска.
Аксиоматическая семантика предоставляет ряд техник для
решения этой задачи. На практике, для обеспечения корректной
работы программы (выполнения условий, выведенных с
помощью аксиоматической семантики) используются
механизмы синхронизации, позволяющие гарантировать
исполнение определенных требований по доступу и
согласованию работы исполнителей в параллельной
программе.
Программа
профессионального
модуля №2
«Программирование с
использованием MPI»
Компетенции, подлежащие
формированию по итогам
прохождения модуля
• навыки
– написания параллельных программ с использованием MPI;
– запуска параллельных программ на вычислительном
комплексе.
• умеет
– планировать выполнение параллельной программы с
применением передачи сообщений;
– реализовывать итеративный и функциональный параллелизм в
программах, написанных с использованием MPI.
• знает
– о базовых операциях MPI;
– о коллективных операциях обмена;
– об алгоритме map-reduce.
Тематический план модуля
№
п/п
Наименование
разделов и тем профессионального модуля
Всего
часов
В том числе
Лекции
Практические
(лабораторные)
занятия
1
Тема 1. Вычислительная модель MPI
1
1
-
2
Тема 2. Коммуникационные возможности MPI
2
2
-
3
Тема 3. Приемы программирования
12
2
10
Всего
5
5
10
Программирование с использованием
MPI
Тема 1. Вычислительная модель MPI
• MPI содержит требования, определяющие структуру алгоритма,
определяет доступные коммуникационные возможности и способ
взаимодействия с реализацией MPI, являющие общими для всех
программ, написанных с применением MPI. Параллельная программа MPI
ис-пользует передачу сообщений для взаимодействия изолированных
процессов. Большая часть возможностей MPI не зависит от конкретной
реализации, что повышает переносимость программ и позволяет на уровне
реализации учесть особенности аппаратной составляющей.
Тема 2. Коммуникационные возможности MPI
• Для взаимодействия процессов MPI предоставляет два вида функций:
двухточечные и коллективные. Первые используются для связи отдельных
процессов; вторые — применяются для взаимодействия в группе.
Операции обменов могут синхронными, асинхронными,
буферизированными или совершаться по готовности. При этом выбор
конкретной операции влияет только на тот процесс, который ее
использует; с другой стороны может использоваться ответная операция
другого типа. Важно обеспечить согласованность операций, чтобы не
возникало взаимных блокировок.
Программирование с использованием
MPI
Тема 3. Приемы программирования
• Типовая структура MPI-программы и ее наиболее вероятные
варианты. Планирование выполнения программы после
определения конфигурации запуска. Решение задачи с
управляющими и рабочими процессами. Способы
динамической балансировки нагрузки.
• Лабораторные работы
– Параллельная реализация матричных операций
– Сеточные методы решения задач
– Решение задачи имитационного моделирования
Программа
профессионального
модуля №3
«Программирование с
использованием OpenMP»
Компетенции, подлежащие
формированию по итогам
прохождения модуля
• навыки
– написания параллельных программ с использованием OpenMP;
– управления запуском параллельной программы.
• умеет
– планировать выполнение параллельной программы с
применением разделяемой памяти;
– реализовывать итеративный и функциональный параллелизм в
программах, написанных с использованием OpenMP.
• знает
– о возможностях и применимости OpenMP;
– о синхронизации выполнения потоков параллельной
программы;
– об алгоритме fork-join.
Тематический план модуля
№
п/п
Наименование
разделов и тем профессионального модуля
Всего
часов
В том числе
Лекции
Практические
(лабораторные)
занятия
1
Тема 1. Вычислительная модель OpenMP
1
1
-
2
Тема 2. Взаимодействие потоков в OpenMP
2
2
-
3
Тема 3. Конструкции описания совместной работы
2
2
-
4
Тема 4. Лабораторный практикум
10
-
10
Всего
15
5
10
Программирование с использованием
OpenMP
Тема 1. Вычислительная модель OpenMP
• OpenMP использует параллелизм с разделяемой памятью, на
основе шаблона распределение-сведение. OpenMP может
использоваться для векторизации циклов (параллелизм по
данным) или для параллельного выполнения нескольких
независимых регионов программы (параллелизм по управлению).
В ряде случаев допускается различие результатов программы,
скомпилированной с поддержкой OpenMP, и той же программы, но
скомпилированной без OpenMP.
Тема 2. Взаимодействие потоков в OpenMP
• Особенности взаимодействия через разделяемые переменные и
побочные эффекты локализации данных. Использование
принудительного сброса изменений в разделяемую память: явное
и не явное. Конструкции синхронизации доступа к разделяемым
переменным и организации критических секций.
Программирование с использованием
OpenMP
Тема 3. Конструкции описания совместной работы
• Конструкции задания параллельных областей и способов
распараллеливания. Дополнительные атрибуты конструкций
совместной работы. Возможности для ограничения
параллельного выполнения определенных участков программы.
Тема 4. Лабораторный практикум
• Решение матричных задач средствами OpenMP
• Решение задач сеточными методами
• Решение статистических задач
Программа
профессионального
модуля №4
«Программирование с
использованием OpenCL»
Компетенции, подлежащие
формированию по итогам
прохождения модуля
• навыки
– написания параллельных программ с использованием OpenCL;
– запуска параллельных программ на вычислительном
комплексе.
• умеет
– планировать выполнение параллельной программы с
применением вычислительных возможностей графических
процессоров;
– организовывать взаимодействие вычислительных ядер с
различными типами областей памяти.
• знает
– о возможностях OpenCL;
– о коллективных взаимодействий;
– об устройстве OpenCL-программы.
Тематический план модуля
№
п/п
Наименование
разделов и тем профессионального модуля
Всего
часов
В том числе
Лекции
Практические
(лабораторные)
занятия
1
Тема 1. Архитектура OpenCL
1
1
-
2
Тема 2. Вычислительная модель OpenCL
2
2
-
3
Тема 3. Язык OpenCL C
2
2
-
4
Тема 4. Лабораторный практикум
10
-
10
Всего
15
5
10
Программирование с использованием
OpenCL
Тема 1. Архитектура OpenCL
• Компьютерная система с точки зрения OpenCL. Основные
понятия и термины OpenCL. Режимы работы исполнителей.
Тема 2. Вычислительная модель OpenCL
• Ядра, способ их запуска и синхронизации с ними. Совместное
выполнение нескольких ядер. Индексное пространство
исполнителей. События OpenCL и их применение. Виды ядер.
Особенности работы с памятью в ядрах OpenCL. Виды
объектов памяти. Модели программирования. Способы
синхронизации, применимые для ядер и основной программы.
Программирование с использованием
OpenCL
Тема 3. Язык OpenCL C
• Особенности OpenCL C, оформление ядер в программе.
Встроенные скалярные и векторные типы данных. Типы данных
для работы с изображениями. Доступ к компонентам векторов и
их подмножествам. Особенности выполнения арифметических
операций для различных типов данных OpenCL C. Ограничения,
связанные с поразрядными манипуляциями для вещественных
типов данных.
Тема 4. Лабораторный практикум
• Решение задач сеточными методами
• Решение статистических задач
• Решение задач имитационного моделирования
Программа
профессионального
модуля №5
«Программирование с
использованием CUDA»
Компетенции, подлежащие
формированию по итогам
прохождения модуля
• навыки
– написания параллельных программ с использованием CUDA;
– запуска параллельных программ на вычислительном
комплексе.
• умеет
– планировать выполнение параллельной программы с
применением вычислительных возможностей графических
процессоров;
– организовывать взаимодействие вычислительных ядер с
различными типами областей памяти.
• знает
– о возможностях CUDA;
– о коллективных взаимодействий;
– об устройстве CUDA-программы.
Тематический план модуля
№
п/п
Наименование
разделов и тем профессионального модуля
Всего
часов
В том числе
Лекции
Практические
(лабораторные)
занятия
1
Тема 1. Вычислительная модель CUDA
3
3
-
2
Тема 2. Модель выполнения CUDA-программы
1
1
-
3
Тема 3. Интерфейс программирования CUDA
1
1
-
4
Тема 4. Лабораторный практикум
10
-
10
Всего
15
5
10
Программирование с использованием
CUDA
Тема 1. Вычислительная модель CUDA
• Целевыми задачами для CUDA являются задачи с большей
арифметической нагрузкой по отношению к операциям с памятью. Это
предъявляет определенные требования к декомпозиции задачи.
Архитектура CUDA во многом перекликается с архитектурой OpenCL:
используются ядра, два уровня декомпозиции (блоки и решетка блоков).
Доступна синхронизация выполнения основной программы с
вычислениями на устройстве и в пределах одной очереди. CUDA
использует в качестве основы набор SIMD-мультипроцессоров,
разделяющих счетчик инструкций и выполняемый код.
Тема 2. Модель выполнения CUDA-программы
• Структурные блоки программы во время выполнения на устройстве CUDA.
Особенности выполнения ядер на устройстве. Особенности работы с
различными видами памяти: семантика неделимых и неатомарных
операции. Способы синхронизации потоков. Особенности запуска и работы
приложений CUDA, связанные с внешней средой и способом их
программирования. Преимущества и недостатки использования
библиотеки времени выполнения и драйвера CUDA.
Программирование с использованием
CUDA
Тема 3. Интерфейс программирования CUDA
• Набор расширений языка C для программирования CUDAприложений. Программная платформа CUDA. Квалификаторы
функций и переменных. Тип памяти и их особенности.
Встроенные переменные. Конфигурация запуска.
Использование потоков для управления параллелизмом.
Тема 4. Лабораторный практикум
• Решение задач сеточными методами
• Решение статистических задач
• Решение задач имитационного моделирования
Download