Я нашел это параллельное сокращение код из Стэнфорда, использующий разделяемую память.
Код является примером 1‹‹18 элементов, что равно 262144 и дает правильные результаты.
Почему для определенного количества элементов я получаю правильные результаты, а для другого количества элементов, например 200000 или 25000, результаты отличаются от ожидаемых? Мне кажется, что он всегда назначает необходимые блоки потоков