Перепёлкин Е.Е.

Перепёлкин Е.Е.

 

Описание курса:

Вашему вниманию предлагается практический курс по технологии NVIDIA CUDA для разработчиков и исследователей, применяющих параллельные вычисления. Курс лекций рассчитан на широкий круг студентов, аспирантов, преподавателей ВУЗов и специалистов в различных областях математического моделирования и теоретической физики, для которых программирование не является основной специальностью, а используется ими как дополнительный инструмент в численном моделировании исследуемых задач. В курсе изложены базовые знания, необходимые, чтобы быстро и эффективно начать писать программы на графическом процессоре (GPU) без специальной подготовки в области программирования.

План курса (продолжение осеннего семестра лекции 1-17):

Лекция 18

Свободные параллельные библиотеки на GPU. Библиотека генератора псевдо-случайных числе CURAND. Библиотека для работы с разряженными матрицами CUSPARS. Библиотека шаблонов STL – Thrust. Библиотека примитивов NPP.

Лекция 19

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

Лекция 20

Уравнения гидро-газодинамики Навье-Стокса. Параллельный алгоритм численного моделирования течения несжимаемой жидкости на GPU. Схема расщепления, метод прогонки, оптимизация доступа в глобальную память. Оценка производительности.

Лекция 21

Задача трассировки лучей (Ray Tracing). Текстурная память. Компьютерная графика. Создание фотореалистичных изображений. Алгоритмы Boundary Volume Hierarchy (BVH) и kd-деревьев. Оценка эффективности алгоритмов.

Лекция 22

Использование метода трассировки лучей (Ray Tracing) в ускорительной физике при оценке потерь частиц пучка на структурных элементах установки (триангуляционный подход). Оптимизация, использование разделяемой памяти.

Лекция 23

Стандарт OpenMP. Основные директивы OpenMP. Использование OpenMP при распараллеливании на центральном процессоре (CPU): обработка данных, перемножение матриц, задача многих тел.

Лекция 24

Стандарт OpenACC для кросс-платформенных приложений. Описание стандарта OpenACC. Основные директивы OpenACC. Процесс компиляции приложения в OpenACC (оценка эффективности распараллеливания).

Лекция 25

Задача электростатики. Постановка задачи, численный метод и параллельный алгоритм реализации на GPU. 3D-моделирование распределения электрического поля банчера, инфлектора, дуантов, дефлектора в циклотроне.

Лекция 26

Задача магнитостатики. Постановка задачи, численный метод и параллельный алгоритм реализации на GPU. Моделирование распределения магнитного поля на примере установки ATLAS LHC CERN.

Лекция 27

Метод массивно-параллельной архитектуры GPU в задачах моделирования динамики пучка в ускорительной физике.

Лекция 28

Примеры оптимизация параметров циклотрона: AVF RIKEN Cyclotron (Japan).

Лекция 29

Примеры оптимизация параметров циклотронов: VINCY Cyclotron (Serbia), Custom Cyclotron (USA)

Лекция 30

Коллективные методы ускорения (В.И. Векслер). Постановка задачи, численные методы. Учёт собственного электрического и магнитного поля пучка.

Параллельный алгоритм на GPU для моделирования коллективных методов ускорения частиц на установке CUSP.

Лекция 31

Уравнение Кардара-Паризи-Жанга. Скейленговая гипотеза. Скейленговая функция и скейлинговый параметр. TASEP (Total Asymmetric Exclusion Process).

Параллельный алгоритм на GPU оценки скейленговой функции и скейленгового параметра для TASEP.

Лекция 32

Вычисления в режиме Multi-GPU. Использование нескольких графических процессоров GPU на одном узле. Обмен данными между GPU (Direct 2.0). Использование интерфейсов NVLink и PCI-E. Унифицированное адресное пространство (Unified Virtual Addressing). Оптимизация нагрузки между GPU.

Лекция 33

Распараллеливание нейро-сетевых алгоритмов. Обучение нейро-сети на GPU. Глубокое обучение (Deep Learning). Библиотеки, алгоритмы. Задача распознавания образов.