Скорость потока в группе остается одинаковой при уменьшении размера блока потоков, потому что выполнение программы параллельно происходит в рамках каждой группы потоков, и размер блока потоков не влияет на скорость выполнения конкретной группы.
Количество потоков в группе не всегда линейно влияет на скорость выполнения кода из-за различных факторов, таких как доступ к общим ресурсам, конкуренция за процессорное время и кэширование данных. При увеличении количества потоков скорость выполнения может не увеличиваться или даже снижаться из-за увеличения накладных расходов на управление потоками или из-за конфликтов при доступе к общим ресурсам.
При размере группы 128 скорость не снижается, хотя остаются неиспользуемые потоки, потому что выполнение программы ограничено временем, которое требуется каждой группе на выполнение необходимых задач, и неиспользуемые потоки просто ожидают своей очереди.
Разделяемая память распределяется между группами потоков таким образом, что общие данные доступны всем потокам, независимо от их принадлежности к определенной группе. При большом количестве потоков в каждой группе существует риск возникновения конфликтов при доступе к общим ресурсам, поэтому необходимо аккуратно управлять разделяемой памятью и обеспечивать синхронизацию потоков для избежания ошибок и ухудшения производительности.