Вашему вниманию предлагается углубленный практический курс по технологии NVIDIA CUDA для разработчиков и исследователей, применяющих параллельные вычисления. В первой части последовательно излагаются основы программной модели CUDA применительно к языкам C и Fortran, сведения о типах памяти GPU и методы эффективного использования разделяемой памяти на примере некоторых алгоритмов. Затем даётся обзор основных прикладных библиотек и языковых средств со встроенной поддержкой вычислений на GPU. Отдельные лекции посвящены элементам профессиональной разработки — средствам анализа, отладки и диагностики. Рассмотрены методы управления несколькими GPU на рабочих станциях и распределенных кластерных системах. Курс проводится специалистами учебного центра Applied Parallel Computing совместно с компанией NVIDIA.
Время | Событие | Материалы |
---|---|---|
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. | — |
Время | Событие | Материалы |
---|---|---|
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. | — |
Время | Событие | Материалы |
---|---|---|
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» | — |
Время | Событие | Материалы |
---|---|---|
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» | Практикум |
Время | Событие | Материалы |
---|---|---|
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 МГУ. | — |
Время | Событие | Материалы |
---|---|---|
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-программы без исходного кода» | — |
Прикрепленный файл | Размер |
---|---|
Подробная программа трека | 204.75 KB |
nvacademy-6days-release.pdf | 383.77 KB |