You are here

Высокопроизводительные вычисления на кластерах с использованием графических ускорителей NVIDIA

Информация о треке

  • Место проведения: воскресенье — ауд. 685, понедельник—пятница — ауд. 238
  • Руководитель трека: Андрей Комиссаров
  • Максимальное число участников: 25

Аннотация

Вашему вниманию предлагается углубленный практический курс по технологии NVIDIA CUDA для разработчиков и исследователей, применяющих параллельные вычисления. В первой части последовательно излагаются основы программной модели CUDA применительно к языкам C и Fortran, сведения о типах памяти GPU и методы эффективного использования разделяемой памяти на примере некоторых алгоритмов. Затем даётся обзор основных прикладных библиотек и языковых средств со встроенной поддержкой вычислений на GPU. Отдельные лекции посвящены элементам профессиональной разработки — средствам анализа, отладки и диагностики. Рассмотрены методы управления несколькими GPU на рабочих станциях и распределенных кластерных системах. Курс проводится специалистами учебного центра Applied Parallel Computing совместно с компанией NVIDIA.

Минимальные знания и навыки, необходимые для участия в треке

  • Владение языками программирования C, C++ или Fortran.
  • Навыки эффективной работы в консольной среде UNIX (текстовые редакторы, поиск, компиляторы и системы сборки приложений).
  • Технический английский для самостоятельного изучения документации и научных статей.

Расписание

1 июля (воскресение). Вводная часть.

Время Событие Материалы
10:30—12:00 Лекция Евгений Перепёлкин (APC) «Принципы работы графических ускорителей, программная модель CUDA» N-body 1 N-body 2
12:15—13:45 Практическое занятие Minh Đức Nguyễn, Дмитрий Телегин (APC) «Вычислительный комплекс с GPU: получение информации о системе, средства мониторинга и диагностики, среды разработки и исполнения приложений»
13:45—15:30 Обед
15:30—17:00 Практическое занятие Андрей Сафронов (APC) «Создание простейших программ для GPU: sum kernel, sine calc»
17:15—20:30 Лекция Андрей Сафронов (APC) «Устройство CUDA-компилятора: стадии обработки кода, промежуточные представления, загрузка ядер, JIT-компиляция» Задание для самостоятельной работы: видимость глобальных данных в CUDA.

2 июля (понедельник). Эффективные алгоритмы и быстрая разработка.

Время Событие Материалы
10:30—12:00 Лекция Евгений Перепёлкин (APC) «Иерархия памяти CUDA, эффективное использование разделяемой памяти. Общее виртуальное адресное пространство (UVA)»
12:15—13:45 Лекция Minh Đức Nguyễn (APC) «Разработка CUDA-приложений на языке Fortran. ISO C binding, замечания о способе передачи аргументов»
13:45—15:30 Обед
15:30—17:00 Практическое занятие Дмитрий Телегин (APC) «Эффективная реализация редукции или перемножения плотных матриц с использованием разделяемой памяти и UVA»
17:15—18:45 Лекция Дмитрий Телегин, Александр Шевченко (APC) «Быстрая разработка приложений на C++ с помощью Thrust. Библиотека алгоритмов линейной алгебры с разреженными матрицами CUSP. Использование C и Fortran» Thrust CUSP
19:00—20:30 Практическое занятие Дмитрий Телегин, Александр Шевченко (APC) «Реализации алгоритмов saxpy и сортировка пар (ключ, значение) c помощью Thrust» Задание для самостоятельной работы: решение 5-диагональной линейной системы с помощью CUSP.

3 июля (вторник). Прикладные библиотеки.

Время Событие Материалы
10:30—12:00 Лекция Александр Шевченко (APC) «Прикладные библиотеки со встроенной поддержкой GPU, часть I: CUBLAS, MAGMA, CUSPARSE, CUFFT, CURAND» CUBLAS&CURAND
12:15—13:45 Практическое занятие Александр Шевченко (APC) «Реализация собственного метода поиска наибольшего собственного значения плотной или разреженной матрицы»
13:45—15:30 Обед
15:30—17:00 Практическое занятие Александр Шевченко (APC) «Реализация метода покоординатного расщепления с помощью CUFFT и прогонки для задачи Дирихле с границами различных типов» Самостоятельная доработка.
17:15—18:45 Лекция Олег Рябков, Дмитрий Голицин, Дмитрий Буров (МГУ) «Прикладные библиотеки со встроенной поддержкой GPU, часть II: PetSc, Trilinos»
19:00—20:30 Практическое занятие Олег Рябков, Дмитрий Голицин, Дмитрий Буров (МГУ) «Решение уравнения Пуассона с помощью PetSc и Trilinos»

4 июля (среда). MultiGPU.

Время Событие Материалы
10:30—12:00 Лекция Дмитрий Телегин (APC) «Асинхронное выполнение, CUDA Streams. Измерение времени, CUDA Events. Управление несколькими GPU: взаимодействие CUDA с другими программными моделями параллельных вычислений» CUDA Streams
12:15—13:45 Практическое занятие Дмитрий Телегин (APC) «Реализация конкурентного исполнения нескольких ядер на GPU с промежуточными синхронизациями. Асинхронные и блокирующие операции»
13:45—15:30 Обед
15:30—17:00 Практическое занятие Александр Шевченко (APC) «Параллельное использование нескольких GPU в последовательном приложении: serial cuda. Несколько GPU в многопоточном приложении на основе интерфейса POSIX: pthreads_cuda_p2p» Задание для самостоятельной работы: использование нескольких GPU в многопоточном приложении, управляемом директивами OpenMP
17:15—18:45 Практическое занятие Александр Шевченко (APC) «Расширения OpenMPI для CUDA, обмен данными в памяти GPU с помощью MPI: mpi_cuda_sendrecv»
19:00—20:30 Практическое занятие Дмитрий Телегин (APC) «Реализация взаимодействия между несколькими CUDA-приложениями с помощью интерфейса IPC» Практикум

5 июля (четверг). Анализ, диагностика, отладка.

Время Событие Материалы
10:30—12:00 Лекция Дмитрий Телегин (APC) «Средства анализа, диагностики и отладки CUDA-приложений. Профилировка с помощью CUDA Profiler, диагностика ошибок памяти (cuda-memcheck), интерактивная отладка GPU-ядер (cuda-gdb)»
12:15—13:45 Практическое занятие Дмитрий Телегин (APC) «Анализ эффективности приложения с помощью CUDA Profiler. Основные аппаратные счётчики»
13:45—15:30 Обед
15:30—17:00 Практическое занятие Дмитрий Телегин (APC) «Демонстрация работы отладчика: основные возможности, стандартные сценарии использования. Типичные ошибки в приложениях»
17:15—20:00 Конкурс CUDA Center of Excellence МГУ.

6 июля (пятница). Оптимизация программ, архитектура и внутренее устройство GPU.

Время Событие Материалы
10:30—12:00 Лекция Максим Милаков (NVIDIA) «Вычислительные особенности архитектуры NVIDIA Kepler»
12:15—13:45 Практическое занятие Николай Лихогруд (APC) «Управление кэшем GPU, эффект на производительность при различных шаблонах доступа к памяти» Задание для самостоятельной работы: кэширование данных в текстурной памяти.
13:45—15:30 Обед
15:30—17:00 Лекция Николай Лихогруд (APC) «Язык промежуточного представления программы PTX и Fermi ISA. Формат исполняемого образа ядра CUBIN, начальная загрузка. Ассемблер и дизассемблер»
17:15—18:45 Практическое занятие Николай Лихогруд (APC) «Анализ эффективности компилятора на низком уровне: распределение регистров, локальная память, векторизация. Отладка GPU-программы без исходного кода»
Прикрепленный файлРазмер
PDF icon Подробная программа трека204.75 KB
PDF icon nvacademy-6days-release.pdf383.77 KB