Глава про CPU и GPU полезна не сравнением маркетинговых цифр, а объяснением самой природы вычислений: где важна быстрая реакция на один запрос, а где выигрывает массовый параллелизм.
На практике она помогает выбирать вычислительный контур по форме задачи: что чувствительно к задержке, что хорошо укладывается в пакетную обработку, а где цена передачи и подготовки данных съедает выигрыш от GPU.
В интервью и архитектурных обсуждениях это даёт внятный язык для выбора между CPU и GPU через форму нагрузки, пропускную способность и стоимость, а не через модные тренды.
Практическая польза главы
Профиль нагрузки
Помогает выбирать между CPU и GPU по чувствительности к задержке, размеру пакета и степени параллелизма.
Экономика ресурса
Учит смотреть не только на скорость вычислений, но и на цену ускорителей, передачу данных и резервные режимы.
Планирование ёмкости
Даёт практический способ считать ресурсы для вывода модели, аналитики и смешанных конвейеров.
Формулировка на интервью
Помогает объяснять выбор вычислительного контура через измеримые критерии, а не через тренды.
Источник
Central processing unit
Общее устройство CPU и роль в вычислениях.
Эта глава полезна, если нужно понять, когда важнее , а когда — . CPU обычно выигрывает там, где критична быстрая реакция на один запрос, предсказуемая и контроль , а GPU раскрывается там, где однотипные операции можно эффективно объединить через .
В реальных системах это почти всегда гибридная история: CPU держит , продуктовую логику и , а GPU ускоряет этапы . Архитектурный выбор упирается ещё и в , , требования к и цену передачи данных между контурами.
Поэтому здесь важны не только железки, но и измерения: на CPU, быстрые межсоединения вроде , а также инструменты наблюдения вроде и .
Как устроен CPU
- Ядра выполняют инструкции и координируют работу потоков.
- ALU выполняет арифметические и логические операции.
- Блок управления определяет порядок исполнения инструкций.
- Регистры — самая быстрая память рядом с ядром.
- Кэш L1/L2/L3 сокращает время доступа к данным.
- Контроллер памяти и шины связывают процессор с RAM и устройствами.
Источник
Graphics processing unit
Архитектура GPU и особенности параллельных вычислений.
Как устроен GPU
- SM/CU — блоки, в которых параллельно исполняются большие группы потоков.
- Пулы потоков позволяют запускать тысячи лёгких задач одновременно.
- Планировщик распределяет warps и wavefronts по вычислительным блокам.
- Видеопамять (VRAM) хранит данные рядом с вычислениями.
- Кэш и контроллеры памяти ускоряют доступ к данным.
- Командный процессор принимает задачи от CPU и ставит их в очередь.
Сравнение CPU и GPU
CPU
- Небольшое число сложных ядер с высокой производительностью на поток
- Хорошо справляется с ветвлениями и непредсказуемой логикой
- Лучше подходит для путей, где критична низкая задержка
Несколько мощных ядер выполняют разные задачи.
GPU
- Очень много более простых вычислительных блоков
- Высокая производительность на однотипных операциях
- Лучше раскрывается на массово-параллельных задачах
Много простых ядер выполняют одну задачу параллельно.
Динамическая визуализация: симулятор нагрузки
Выберите профиль нагрузки и размер батча. Ниже — упрощённая модель, которая показывает, когда выигрывает CPU, а когда — GPU.
Размер батча: 32
Диапазон: 8 - 256
CPU
Подходит для этого профиля: 88%
Время обработки пакета: 7 мс
Оценка производительности: 4571 ед./с
GPU
Подходит для этого профиля: 35%
Время обработки пакета: 8 мс
Оценка производительности: 4000 ед./с
Результат симуляции
Отношение времени CPU к GPU на один пакет: 0.88x (в этом сценарии быстрее CPU).
Узкое место: ветвления, блокировки и хвостовая задержка. Рекомендация: CPU использовать как основной вычислительный контур, а GPU подключать только для изолированных тяжёлых вычислений.
Динамическая визуализация: гибридный конвейер CPU + GPU
В реальной системе CPU и GPU почти всегда работают как один конвейер. Переключайте этапы, чтобы увидеть, где растёт нагрузка.
Особенно важен этап передачи: даже не отменяет цену копирования данных и подготовки запуска вычислительного ядра.
Проверка входа, извлечение признаков, сериализация и сборка пакета.
Ключевая метрика
Время подготовки пакета
Фокус оптимизации
векторизация, меньше копирований и меньше лишних выделений памяти
Где лучше подходит CPU, а где GPU
CPU
- API и сервисные запросы со сложной бизнес-логикой
- Транзакционные сценарии, координация сервисов и системные задачи
- Нагрузки с непредсказуемыми ветвлениями и жёсткими требованиями по задержке
GPU
- Графика и рендеринг
- Вывод и обучение моделей на однотипных тензорных операциях
- Массовые численные расчёты и симуляции
Частые ошибки при выборе CPU/GPU
GPU ради самого факта наличия ускорителя
Перенос тяжёлой логики с ветвлениями на GPU без оценки цены запуска ядра часто только ухудшает задержку.
Игнорирование цены передачи данных
При небольших пакетах время перемещения данных между CPU и GPU может съесть весь ожидаемый выигрыш.
Метрики только на уровне сервера
Недостаточно смотреть только на CPU и RAM: нужны ещё загрузка GPU, пропускная способность памяти и глубина очередей.
Нет резервного пути без GPU
Если нет резервного сценария на CPU, система теряет устойчивость при дефиците GPU-ресурсов или проблемах с планированием.
Профилирование должно показывать, где именно теряется время: на CPU полезны и , а на GPU — трассы запуска ядер и телеметрия очередей.
Практические рекомендации
Гибридный конвейер
Оставляйте управление потоком, продуктовую логику и резервные ветки на CPU, а GPU загружайте массивной математикой.
Размер пакета под целевой уровень сервиса
Подбирайте размер пакета под целевой уровень сервиса: слишком маленький недоиспользует GPU, слишком большой увеличивает хвостовую задержку.
Профилирование до и после
Снимайте профили CPU и GPU до и после оптимизаций, чтобы решения опирались на измерения, а не на гипотезы.
Планирование ёмкости по двум контурам
Считайте CPU- и GPU-ограниченные этапы отдельно, чтобы точнее планировать стоимость и масштабирование.
Практический вывод
В рабочих системах CPU и GPU почти всегда работают в паре: CPU управляет логикой, маршрутизацией и резервными ветками, а GPU берёт на себя массивные однотипные вычисления. Выбор между ними зависит прежде всего от формы нагрузки: задержка и ветвления тянут решение в сторону CPU, а однородный параллелизм — в сторону GPU.
Почему это важно при проектировании приложений
- Помогает выбрать основной вычислительный контур под тип нагрузки и правильно спроектировать конвейер обработки.
- Влияет на стоимость инфраструктуры: CPU- и GPU-доменные сервисы масштабируются по-разному.
- Показывает требования к памяти и сети: для GPU-контуров особенно важны пропускная способность памяти, путь передачи и размер пакета.
- Снижает архитектурные риски: резервный путь на CPU и явные SLO помогают пережить дефицит GPU-ресурсов.
Связанные главы
- Почему фундаментальные знания важны - показывает, как ограничения железа и среды выполнения превращаются в архитектурные решения.
- Structured Computer Organization (short summary) - даёт аппаратный фундамент: уровни абстракции, архитектура набора команд, память и работа CPU с устройствами.
- Операционная система: обзор - помогает связать тему с планированием потоков, системными вызовами и влиянием ядра ОС на задержку.
- RAM и хранилище - объясняет, почему пропускная способность памяти и локальность данных часто важнее пиковой вычислительной мощности.
- Performance Engineering в System Design - добавляет практику профилирования CPU и GPU и улучшения полной производительности системы.
- История появления Google TPU и их эволюции - расширяет сравнение аппаратных ускорителей и помогает понять, когда GPU или TPU дают лучший эффект.
