Chociaż wydajna wersja wymaga więcej kroków, jest to równoważone przez fakt, że liczba aktywnych wątków zmniejsza się szybciej, a całkowita liczba aktywnych wątków we wszystkich iteracjach jest znacznie mniejsza. Jeśli osnowa nie ma aktywnych wątków podczas iteracji, przeskoczy tylko do następnej bariery i zostanie zawieszona, umożliwiając uruchomienie innych osnowy. Mając mniej aktywnych wypaczeń, często można się spłacić w czasie wykonania. (Implikuje to, że kod GPU musi być zaprojektowany w taki sposób, aby aktywne wątki były spakowane razem w jak najmniejszej liczbie wypaczeń - nie chcesz, aby były one rozproszone, ponieważ nawet jeden aktywny wątek zmusi całe wypaczenie pozostać aktywnym).
Rozważ liczbę aktywnych wątków w naiwnym algorytmie. Patrząc na rycinę 2 w tym artykule, widać, że wszystkie wątki są aktywne, z wyjątkiem pierwszych 2 k na k- tej iteracji. Tak więc w przypadku N wątków liczba aktywnych wątków jest równa N - 2 k . Na przykład przy N = 1024 liczba aktywnych wątków na iterację wynosi:
1023, 1022, 1020, 1016, 1008, 992, 960, 896, 768, 512
Jeśli przekonwertuję to na liczbę aktywnych wypaczeń (dzieląc przez 32 i zaokrąglając w górę), otrzymuję:
32, 32, 32, 32, 32, 31, 30, 28, 24, 16
za sumę 289. Z drugiej strony efektywny algorytm zaczyna się od połowy większej liczby wątków, a następnie zmniejsza o połowę liczbę aktywnych w każdej iteracji, aż spadnie do 1, a następnie zaczyna się podwajać, aż wróci do znów połowa wielkości tablicy:
512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
Konwertowanie tego na aktywne wypaczenia:
16, 8, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 8, 16
Suma wynosi 71, czyli tylko o jedną czwartą tyle. Widać więc, że w trakcie całej operacji liczba aktywnych wypaczeń jest znacznie mniejsza dzięki wydajnemu algorytmowi. (W rzeczywistości, w przypadku długiego przebiegu w środku jest tylko garść aktywnych wypaczeń, co oznacza, że większość układu nie jest zajęta. Jeśli uruchomione są dodatkowe zadania obliczeniowe, np. Z innych strumieni CUDA, mogą się rozwinąć, aby wypełnić to niezajęte miejsce).