System Design Space
Граф знанийНастройки

Обновлено: 24 марта 2026 г. в 11:23

CPU и GPU: обзор и различия

medium

Сравнение архитектуры и типов нагрузок: универсальность CPU против параллелизма GPU.

Глава про CPU и GPU полезна не сравнением маркетинговых цифр, а разницей в самой природе вычислений: универсальное последовательное управление против массивного параллелизма.

На практике она помогает выбирать вычислительный контур по профилю задачи: что чувствительно к задержке, что хорошо уходит в batch, а где стоимость передачи и подготовки данных съедает выигрыш от GPU.

В интервью и design review это дает внятный язык для выбора compute-стека через форму нагрузки, пропускную способность и цену владения, а не через модные тренды.

Практическая польза главы

Профиль workload

Помогает выбирать CPU/GPU по природе задачи: latency-чувствительность, batch, параллелизм и объем данных.

Экономика ресурса

Учит оценивать не только производительность, но и стоимость владения вычислительным контуром.

Capacity planning

Формирует подход к расчету ресурсов для inference, аналитики и смешанных сценариев.

Interview framing

На интервью позволяет объяснять выбор compute-стека через измеримые критерии, а не через тренды.

Источник

Central processing unit

Общее устройство CPU и роль в вычислениях.

Перейти на сайт

CPU и GPU решают одну задачу — выполнение вычислений, но делают это по-разному. CPU ориентирован на универсальность и низкую задержку, а GPU — на массовый параллелизм и throughput.

Устройство CPU (базово)

  • Ядра (cores) — выполняют инструкции и управляют потоками.
  • ALU — выполняет арифметические и логические операции.
  • Control Unit — управляет порядком исполнения инструкций.
  • Регистры — самая быстрая память рядом с ядром.
  • Кэш L1/L2/L3 — снижает задержку доступа к данным.
  • Контроллер памяти и шины — связь с RAM и устройствами.

Источник

Graphics processing unit

Архитектура GPU и особенности параллельных вычислений.

Перейти на сайт

Устройство GPU (базово)

  • SM/CU (multiprocessors) — блоки массово-параллельного исполнения.
  • Пулы потоков — запуск тысяч lightweight threads.
  • Scheduler/dispatch — распределяет warps/wavefronts по вычислителям.
  • VRAM — локальная память высокой пропускной способности.
  • Кэш и контроллер памяти — ускоряют доступ к данным.
  • Command processor — принимает и ставит задачи от CPU.

Сравнение CPU и GPU

CPU

  • Небольшое число сложных ядер
  • Высокая производительность на поток
  • Хорошо для ветвлений и latency-критичных участков

Несколько мощных ядер выполняют разные задачи.

GPU

  • Много относительно простых ядер
  • Высокий throughput на однотипных операциях
  • Отлично для data-parallel вычислений

Много простых ядер выполняют одну задачу параллельно.

Динамическая визуализация: симулятор нагрузки

Выберите профиль нагрузки и размер батча. Ниже — упрощённая модель, которая показывает, когда выигрывает CPU, а когда — GPU.

Размер батча: 32

Диапазон: 8 - 256

CPU

Fit для профиля: 88%

Время обработки батча: 7 ms

Оценка throughput: 4571 req/s

GPU

Fit для профиля: 35%

Время обработки батча: 8 ms

Оценка throughput: 4000 req/s

Результат симуляции

Ускорение CPU/GPU по времени батча: 0.88x (CPU быстрее).

Узкое место: ветвления, локи и хвостовые задержки. Рекомендация: CPU как primary runtime, GPU только для отдельных вычислительных подзадач.

Динамическая визуализация: гибридный pipeline CPU + GPU

В реальных системах почти всегда работает связка CPU+GPU. Переключайте этапы и смотрите профиль загрузки.

Валидация входа, feature extraction, сериализация и формирование батча.

CPU load82%
GPU load12%

Ключевая метрика

Время подготовки батча

Фокус оптимизации

векторизация на CPU, уменьшение копирований и аллокаций

Где работает лучше

CPU

  • Серверные запросы с сложной бизнес-логикой
  • Транзакции, координация сервисов, задачи ОС
  • Сценарии с непредсказуемыми ветвлениями

GPU

  • Графика и рендеринг
  • Машинное обучение и матричные операции
  • Массовые параллельные вычисления и симуляции

Частые ошибки при выборе CPU/GPU

GPU ради самого факта GPU

Перенос branch-heavy логики на GPU без оценки kernel launch overhead часто ухудшает latency.

Игнорирование data transfer cost

При малых батчах время перемещения данных CPU→GPU и обратно может съесть весь выигрыш.

Метрики только на уровне хоста

Смотреть только на CPU/RAM недостаточно: нужны GPU utilization, memory bandwidth и queue depth.

Отсутствие деградации при недоступности GPU

Без fallback-пути на CPU система теряет устойчивость при дефиците GPU-ресурсов.

Практические рекомендации

Hybrid pipeline

Оставляйте orchestration, контроль потоков и бизнес-решения на CPU; массовые math-операции выносите на GPU.

Batch sizing by SLO

Подбирайте размер батча от SLA: слишком мелкий батч не раскрывает GPU, слишком крупный бьёт по latency.

Профилирование до и после

Снимайте flamegraph/pprof на CPU и kernel traces на GPU, чтобы решения опирались на измерения, а не на гипотезы.

Capacity planning по двум доменам

Считайте отдельно CPU-bound и GPU-bound участки, чтобы корректно планировать стоимость и масштабирование.

Практический вывод

В production-системах CPU и GPU почти всегда работают в связке: CPU управляет логикой и оркестрацией, а GPU берет на себя массовые вычисления. Архитектурный выбор зависит от характера нагрузки: latency и ветвления — в пользу CPU, параллельные и однотипные операции — в пользу GPU.

Почему это важно при проектировании приложений

  • Помогает выбрать целевой runtime под тип нагрузки и правильно спроектировать pipeline обработки.
  • Влияет на стоимость инфраструктуры: CPU-доменные и GPU-доменные сервисы масштабируются по-разному.
  • Определяет требования к памяти и сети: для GPU-контуров критичны bandwidth, transfer path и batch strategy.
  • Снижает архитектурные риски: fallback на CPU и корректные SLO защищают систему при дефиците GPU-ресурсов.

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки