alterna ai
ALTERNA AI / ГЛАВА 10 · 03

10.3 Много похожих действий одновременно

На предыдущей странице: размер записи и точность.

Клетки матричного результата можно вычислять параллельно. GPU хорошо подходит для большого числа таких похожих операций.

Числа имеют конечную точность; их нужно хранить и переносить. Матричные блоки дают много независимой работы, но память и организация групп также влияют на результат.

Независимые задачи ещё нужно распределить

CPU удобен для управляющей логики, ветвлений и последовательных зависимостей; GPU организует большое число потоков для throughput. Это не утверждение «CPU считает по одному, GPU всё одновременно»: современные CPU тоже векторизуют работу, а GPU ограничен ресурсами и зависимостями.

В учебной модели задачи объединяются в lockstep-группы шириныw. Группа длится столько условных ticks, сколько её самая долгая задача. Группы выполняются последовательно. Это не измеренная latency устройства.

Возьмём16задач:8по1tick и8по4ticks. Приw=8 и сгруппированном порядке группы длятся1и4ticks, всего5. При чередовании коротких и длинных обе группы длятся4ticks, всего8. Полезная работа40lane-ticks одинакова, выделенный бюджет40против64. Изменилась организация, не задача.

Эксперимент. Меняйте lanes и порядок при том же числе работ. Проверьте хвост, когда tasks не делится на width. Неиспользуемые слоты не должны исчезать из знаменателя эффективности.

Ограничение. Модель иллюстрирует простой lockstep и дисбаланс. Она не моделирует современное независимое планирование инструкций, occupancy, кеши, interconnect или частоты. Число lanes нельзя трактовать как «число ядер вашего GPU». Для реального выбора CPU/GPU нужны измерения конкретной реализации.

work=[1]*8+[4]*8
grouped=sum(max(work[i:i+8]) for i in range(0,16,8))
mixed=[1,4]*8
interleaved=sum(max(mixed[i:i+8]) for i in range(0,16,8))
assert grouped==5 and interleaved==8 and sum(work)==40

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Модель не профилирует оборудование и не знает его реальной частоты.

Как вычисляется одна клетка произведения. Как этот вопрос продолжает полученный результат?

Python-примеры главы 10 Академическая база →