Узнайте все, что нужно знать о графических процессорах. Этот виртуальный семинар Корнелла будет полезен тем, кто программирует на CUDA.
Виртуальный семинар Корнелла - это обучающая платформа, разработанная для повышения квалификации исследователей в области вычислительной техники.
Она состоит из множества дорожных карт, посвященных различным темам вычислительной техники, которые сгруппированы по категориям. Каждая дорожная карта состоит примерно из 5-10 тем, которые перечислены в предложенном порядке. Вот некоторые из них:
Языки программирования
- Введение в программирование на языке Си
- Введение в программирование на языке Фортран
- Введение в программирование на языке Python
- Введение в R
Введение в передовые кластерные архитектуры
- Понимание архитектуры GPU
- Выполнение приложений
Параллельные вычисления
- Концепции
- Концепции параллельного программирования и высокопроизводительные вычисления
- Масштабируемость
- MPI
ИИ, машинное обучение, наука о данных
- Обзор искусственного интеллекта
- Python для науки о данных
- ИИ с глубоким обучением
- Визуализация
Визуализация больших данных
- ParaView
- ParaView - Advanced
- Интерактивная визуализация данных с помощью Bokeh
Из них мы выбрали «Понимание архитектуры GPU», поскольку мы в IProgrammer особенно заинтересованы в программировании на CUDA.
Этот rodamap посвящен подготовке прикладных программ к работе на GPU и рассказывает об основных особенностях аппаратного дизайна GPU. Она прекрасно сочетается с другими ресурсами, о которых мы недавно рассказывали: «Три суперресурса по программированию на NVIDIA CUDA»,
«LeetGPU - Проблемы CUDA» и, в частности, „Демистификация терминологии GPU“.
CUDA - это, конечно же, инструментарий и модель программирования от NVIDIA, которая предоставляет среду разработки для ускорения вычислительных приложений за счет использования мощности GPU. Но проблема при работе с GPU заключается в том, что :
документация фрагментирована, что затрудняет связь понятий на разных уровнях стека, таких как потоковая многопроцессорная архитектура, вычислительные возможности и флаги компилятора nvcc.
Поэтому люди из Modal создали глоссарий GPU («Demystifying GPU Terminology») для сбора, изменения и представления этой информации, приложив немало усилий для сбора материала из официальной документации, каналов, посвященных Discord, и даже пролистав старые добрые книги.
Этот виртуальный семинар будет проводиться по схожей схеме с «Глоссарием»:
- Основные архитектурные особенности GPU и объяснение их отличий от аналогичных особенностей CPU
- Обсуждение последствий создания программ для вычислений общего назначения на GPU (или GPGPU), а также того, какие виды программного обеспечения должны хорошо работать на этих устройствах.
- Описание названий, размеров и скоростей вычислительных компонентов и памяти конкретных моделей устройств NVIDIA GPU.
Семинар состоит из следующих разделов:
Характеристики GPU
Рассматривается аппаратный дизайн графических процессоров (GPU), оптимизированный для высокопараллельной обработки данных. В результате прикладные программы для GPU опираются на модели программирования типа NVIDIA CUDA, которые могут существенно отличаться от традиционных моделей последовательного программирования на базе CPU.
Память GPU
GPU требуют, чтобы данные находились в регистрах и были доступны для вычислений. В этой теме рассматриваются размеры и свойства различных элементов иерархии памяти GPU и их сравнение с памятью CPU.
Пример GPU: Графические процессоры Tesla V100 и Frontera: RTX 5000
Что представляет собой конкретный GPU на аппаратном уровне, если заглянуть «под капот»? Иногда лучший способ узнать об устройстве определенного типа - рассмотреть один или два конкретных примера. Сначала мы рассмотрим Tesla V100, одну из моделей NVIDIA, которую предпочитают использовать в HPC-приложениях, а затем аналогично глубоко изучим Quadro RTX 5000, GPU, который используется в TACC's Frontera.
Упражнения
которые покажут вам, как опрашивать устройства NVIDIA, чтобы определить определенные свойства оборудования.
Особых требований к этой дорожной карте нет, однако вам может пригодиться доступ к Frontera или к любому компьютеру с графическим процессором NVIDIA и установленным набором инструментов CUDA. Если у вас нет доступа ни к чему из перечисленного, не бойтесь, ведь LeetGPU уже позаботился о вас. LeetGPU, о котором мы уже рассказывали, - это платформа, на которой вы можете писать и тестировать CUDA-код, ничего не настраивая, просто используя браузер. Создатели AlphaGPU ставят перед собой цель «демократизировать доступ к языкам с аппаратным ускорением», эмулируя GPU на CPU с помощью симуляторов с открытым исходным кодом.
Дорожная карта делает одну вещь, и делает ее правильно. Ей удается разложить сложную тему на составные части, чтобы передать ее концепции как можно более ясно и просто.
Вместе с ней еще одна дорожная карта - «Концепции параллельного программирования и высокопроизводительных вычислений» - может рассматриваться как возможный компаньон для тех, кто стремится расширить свои знания о параллельных вычислениях в целом, а также о GPU.
Обязательно ознакомьтесь с остальными разделами Workshops; наверняка вы найдете для себя что-то интересное.