Meskipun versi yang efisien untuk pekerjaan membutuhkan lebih banyak langkah, ini diimbangi oleh fakta bahwa jumlah utas aktif berkurang lebih cepat, dan jumlah total utas aktif di semua iterasi jauh lebih kecil. Jika sebuah lungsin tidak memiliki utas aktif selama iterasi, lungsin itu hanya akan melompat ke penghalang berikut dan ditangguhkan, yang memungkinkan lungsin lain untuk berjalan. Jadi, memiliki warps aktif yang lebih sedikit sering dapat membayar dalam waktu eksekusi. (Secara implisit dalam hal ini adalah bahwa kode GPU perlu dirancang sedemikian rupa sehingga utas aktif dipersatukan menjadi beberapa warps mungkin — Anda tidak ingin mereka tersebar jarang, karena bahkan satu utas aktif akan memaksa seluruh lungsin untuk tetap aktif.)
Pertimbangkan jumlah utas aktif dalam algoritma naif. Melihat Gambar 2 dalam artikel, Anda dapat melihat bahwa semua utas aktif kecuali untuk 2 k pertama pada iterasi k . Jadi dengan N utas, jumlah utas aktif seperti N - 2 k . Misalnya, dengan N = 1024, jumlah utas aktif per iterasi adalah:
1023, 1022, 1020, 1016, 1008, 992, 960, 896, 768, 512
Jika saya mengonversikan ini ke jumlah warps aktif (dengan membaginya menjadi 32 dan mengumpulkannya), saya mendapatkan:
32, 32, 32, 32, 32, 31, 30, 28, 24, 16
untuk jumlah 289. Di sisi lain, algoritma kerja-efisien dimulai dengan setengah utas, kemudian membagi dua jumlah yang aktif pada setiap iterasi sampai turun ke 1, kemudian mulai dua kali lipat hingga kembali ke setengah ukuran array lagi:
512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
Konversi ini ke warps aktif:
16, 8, 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 8, 16
Jumlahnya 71, yang hanya seperempat. Jadi Anda dapat melihat bahwa selama seluruh operasi, jumlah warps aktif jauh lebih kecil dengan algoritma yang efisien kerja. (Bahkan, untuk jangka panjang di tengah hanya ada beberapa warp aktif, yang berarti sebagian besar chip tidak ditempati. Jika ada tugas komputasi tambahan yang berjalan, misalnya dari aliran CUDA lain, mereka dapat memperluas untuk mengisi itu ruang kosong.)