Лекция Stanford CS149: создание энергоэффективных аппаратных ускорителей

Stanford Online 4,7 тыс. 1 ч 11 мин 2 мин 29.09.2024
Главное

Энергоэффективные вычисления: от CPUs к специализированным ускорителям 🚀 0:05

Современные вычислительные среды сталкиваются с жестким пределом энергопотребления из-за окончания эры масштабирования Деннарда (Dennard scaling) около 10 лет назад. Теперь увеличение количества транзисторов неизбежно ведет к росту энергопотребления, что заставляет инженеров искать пути повышения производительности через повышение энергоэффективности на операцию. В лекции Стэнфордского университета, посвященной аппаратной специализации в рамках курса CS149: Parallel Computing, рассматриваются подходы к переходу от универсальных процессоров (CPUs) к специализированным архитектурам.

Проблема неэффективности CPUs ⚡ 5:41

Основная проблема современных CPUs заключается в их фундаментальной неэффективности при выполнении инструкций. Согласно данным лекции, на непосредственно вычислительную операцию (например, multiply-add) тратится лишь около 6% энергии. Остальные ресурсы уходят на:

Применение SIMD (Single Instruction, Multiple Data) позволяет несколько улучшить эту ситуацию, амортизируя затраты на управление за счет выполнения одной операции над множеством данных. Однако, как отмечают лекторы, широкие SIMD-блоки сложно утилизировать: их пиковая производительность высока, но средняя — значительно ниже из-за невозможности заполнить все слоты.

Спектр вычислительных технологий 📉 21:13

Выбор архитектуры всегда представляет собой компромисс между энергоэффективностью и программируемостью.

  1. CPUs: Максимальная программируемость, но минимальная эффективность.
  2. GPUs: Хороши для параллельных вычислений, требуют написания кода на CUDA.
  3. DSPs (Digital Signal Processors): Высокая эффективность для конкретных задач (например, FFT) за счет комплексных инструкций, но крайне сложны в программировании (часто требуют ассемблера).
  4. Специализированные ускорители (ASICs): Дают прирост эффективности до 100-1000 раз, но требуют огромных затрат времени (около 18 месяцев на дизайн) и ресурсов.
  5. FPGAs (Field Programmable Gate Arrays): «Золотая середина», позволяющая перепрограммировать логические блоки, хотя работа с ними требует навыков аппаратного дизайнера.

Язык Spatial: Программирование ускорителей 💻 27:57

Для решения проблемы сложности разработки аппаратного обеспечения лектор представляет Spatial — доменно-специфичный язык программирования для дизайна ускорителей. В отличие от высокоуровневого синтеза (HLS) на базе C, который часто страдает от нагромождения прагм, Spatial позволяет performance-ориентированным программистам явно управлять:

Streaming-модель и оптимизация внимания 🌊 54:26

Особое внимание уделяется «потоковой» (streaming) модели исполнения, которая позволяет достичь эффектов, схожих с FlashAttention, без необходимости написания сложных Fused-ядер. При kernel-по-ядерном подходе данные часто материализуются в промежуточных матрицах, что раздувает требования к памяти и пропускной способности. Потоковая модель через использование FIFOs позволяет соединять kernels в конвейер, где данные текут от одной операции к другой, не создавая полных промежуточных копий.

💬 Цитаты

«Если вы хотите получить больше производительности, то вам придется улучшить энергоэффективность.»

«Специализация — это единственный способ избавиться от лишней энергии, которую мы рассеиваем, делая вещи, не направленные на продвижение вычислений вперед.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Dennard scaling
Закон масштабирования, при котором уменьшение размеров транзисторов приводило к увеличению производительности при неизменной мощности.
ASIC
Интегральная схема, специализированная для решения одной конкретной задачи.
Spatial
Доменно-специфичный язык программирования для проектирования аппаратных ускорителей.
FIFO
Структура данных «первым пришел — первым ушел», используемая в аппаратном дизайне для буферизации потоков данных.
📊 Цифры
⚖️ Другая сторона
Технологии и IT Stanford CS149 Parallel Computing ASIC FPGA Spatial language