Aноним
- #1
[Udemy] Освоение параллельного программирования на GPU с CUDA: [HW & SW] [Hamdy egy]
- Ссылка на картинку
Освоение параллельного программирования
Оптимизация и анализ производительности для высокопроизводительных вычислений
Это практический курс, который показывает, как использовать огромную мощность параллельной обработки современных GPU с помощью CUDA. Вы начнёте с основ аппаратной части GPU, проследите эволюцию ключевых архитектур — Fermi, Pascal, Volta, Ampere, Hopper — и через практические задания научитесь писать, профилировать и оптимизировать высокопроизводительные CUDA kernels.
Это независимый обучающий материал. Он не спонсируется, не одобрен и не аффилирован с NVIDIA Corporation. Названия CUDA, Nsight и кодовые названия архитектур являются товарными знаками NVIDIA и используются только в справочных целях.
Чему вы научитесь:
Для кого этот курс:
Введение в аппаратную часть Nvidia GPU
Оптимизация и анализ производительности для высокопроизводительных вычислений
Это практический курс, который показывает, как использовать огромную мощность параллельной обработки современных GPU с помощью CUDA. Вы начнёте с основ аппаратной части GPU, проследите эволюцию ключевых архитектур — Fermi, Pascal, Volta, Ampere, Hopper — и через практические задания научитесь писать, профилировать и оптимизировать высокопроизводительные CUDA kernels.
Это независимый обучающий материал. Он не спонсируется, не одобрен и не аффилирован с NVIDIA Corporation. Названия CUDA, Nsight и кодовые названия архитектур являются товарными знаками NVIDIA и используются только в справочных целях.
Чему вы научитесь:
- получите комплексное понимание архитектуры GPU по сравнению с CPU
- изучите историю графических процессоров GPU вплоть до самых современных решений
- разберётесь во внутренней структуре GPU
- поймёте различные типы памяти и их влияние на производительность
- изучите современные технологии внутренних компонентов GPU
- освоите основы программирования CUDA на GPU
- начнёте писать программы для GPU с использованием CUDA в Windows и Linux
- поймёте наиболее эффективные способы распараллеливания
- освоите профилирование и настройку производительности
- научитесь использовать shared memory
- основы различий GPU и CPU и причины доминирования GPU в задачах параллельной обработки данных
- развитие архитектур GPU по поколениям и аппаратные особенности, влияющие на производительность
- установку CUDA Toolkit в Windows, Linux и WSL
- базовые концепции CUDA: threads, blocks, grids и иерархия памяти
- профилирование и оптимизацию через Nsight Compute и nvprof
- двумерную индексацию для работы с матрицами
- методы оптимизации: работа с данными, размер которых не равен степени двойки, использование shared memory, повышение пропускной способности, снижение warp divergence
- отладку и обработку ошибок через runtime API checks
Для кого этот курс:
- для всех, кто интересуется GPU и CUDA
- для студентов инженерных направлений
- для исследователей
- для всех, кто хочет глубже разобраться в параллельном программировании на GPU
- базовые знания C и C++
- базовые знания Linux и Windows
- базовые знания архитектуры компьютера
- 12 разделов
- 58 лекций
- 23 ч 3 мин общей продолжительности
Введение в аппаратную часть Nvidia GPU
- GPU vs CPU
- История Nvidia: как компания начала доминировать в секторе GPU
- Связь архитектур и поколений: Hopper, Ampere, GeForce, Tesla
- Как определить архитектуру и поколение
- Разница между GPU и чипом GPU
- Архитектуры и соответствующие им чипы
- Архитектуры Nvidia GPU от Fermi до Hopper
- Параметры для сравнения разных архитектур
- Half, single и double precision operations
- Compute capability и использование GPU
- Volta, Ampere, Pascal, SIMD
- Какие возможности устанавливаются вместе с CUDA Toolkit
- Установка CUDA в Windows
- Установка WSL для использования Linux в Windows
- Установка CUDA Toolkit в Linux
- GitHub-репозиторий курса
- Сопоставление программной части CUDA с аппаратной частью
- Hello World program: threads и blocks
- Компиляция CUDA в Linux
- Hello World program: Warp_IDs
- Сложение векторов и шаги для любого CUDA-проекта
- Индексация блоков и потоков
- Уровни параллелизма при работе с очень большими векторами
- Получение свойств устройства через Runtime API
- Nvidia-smi и его конфигурации
- Occupancy и скрытие задержек на GPU
- Количество активных блоков на один SM
- Сколько блоков можно выполнять одновременно на одном SM
- Начало работы с Nsight Compute
- Инструменты профилирования Nvidia: Nsight Systems, Nsight Compute, nvprof
- API для проверки ошибок
- Анализ производительности через командную строку
- Графический Nsight Compute в Windows и Linux
- Анализ производительности
- Сложение векторов с размером, не являющимся степенью двойки
- Сложение матриц с использованием двумерных блоков и потоков
- Почему L1 hit-rate равен нулю
- Shared memory
- Quiz 1
- Warp divergence
- Отладка с использованием Visual Studio
- Vector reduction только с использованием global memory
- Разбор кода и профилирование vector reduction
- Оптимизация vector reduction
- Race condition и возможности отладки
- Оптимизация использования потоков
- Оптимизация через shared memory и unrolling
- Оптимизация через shuffle operations
- Roofline analysis: приложения, ограниченные вычислениями и памятью
Показать больше
Зарегистрируйтесь
, чтобы посмотреть скрытый контент.