Хоча для ефективної роботи потрібна більше кроків, це компенсується тим, що кількість активних потоків зменшується швидше, а загальна кількість активних потоків за всіма ітераціями значно менша. Якщо під час ітерації у основи немає активних ниток, вона буде просто переходити до наступного бар'єру та призупинятись, дозволяючи запускати інші основи. Отже, менша кількість активних деформацій часто може окупитися за час виконання. (Імпліцитне в цьому полягає в тому, що код GPU повинен бути сконструйований таким чином, щоб активні потоки були зібрані в якомога менше витворів - ви не хочете, щоб вони були рідко розкидані, оскільки навіть одна активна нитка змусить весь деформацію залишатися активними.)
Розглянемо кількість активних ниток у наївному алгоритмі. Дивлячись на малюнок 2 у статті, ви бачите, що всі потоки активні, за винятком перших 2 k на k- й ітерації. Отже, з N потоків кількість активних потоків іде як N - 2 k . Наприклад, при N = 1024 кількість активних потоків за ітерацію становить:
1023, 1022, 1020, 1016, 1008, 992, 960, 896, 768, 512
Якщо я перетворять це на кількість активних деформацій (діленням на 32 та округленням), я отримую:
32, 32, 32, 32, 32, 31, 30, 28, 24, 16
на суму 289. З іншого боку, алгоритм ефективності роботи починається вдвічі менше ниток, потім він вдвічі зменшує кількість активних на кожній ітерації, поки не зменшиться до 1, потім почне подвоюватися, поки не повернеться до знову половина розміру масиву:
512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
Перетворення цього типу на активні основи:
16, 8, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 8, 16
Сума - 71, що становить лише чверть. Таким чином, ви можете бачити, що протягом всієї операції кількість активних деформацій значно менша за алгоритмом ефективної роботи. (Насправді, для тривалого запуску в середині є лише кілька активних деформацій, а це означає, що більшість мікросхем не зайняті. Якщо є додаткові обчислювальні завдання, наприклад, з інших потоків CUDA, вони можуть розширитися, щоб заповнити це незайнятий простір.)