Независимые задачи ещё нужно распределить
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 нужны измерения конкретной реализации.