Обычно это хороший подход для использования в качестве небольших блоков, насколько это возможно, но достаточно больших для насыщения устройства (64 или 128 потоков на блок в зависимости от устройства) - это не всегда возможно, так как вы можете синхронизировать потоки или общаться через общий доступ память.
Наличие большого количества маленьких блоков позволяет графическому процессору выполнять своего рода «автоматическую балансировку» и поддерживать работу всех SM.
То же самое относится к процессору - если у вас есть 5 независимых тактов, и каждый занимает 4 секунды для завершения, но у вас есть только 4 ядра, то это закончится через 8 секунд (в течение первых 4 секунд 4 ядра работают на первых 4 задачах и затем на последнем задании работает 1 ядро, а 3 ядра работают на холостом ходу).
Если вы можете разделить всю работу на 20 задач, которые занимают 1 секунду, то вся работа будет выполнена за 5 секунд. Таким образом, наличие множества небольших задач помогает использовать оборудование.
В случае графического процессора вы можете иметь большое количество активных блоков (на Titan X это 24 SM x 32 активных блока = 768 блоков), и было бы хорошо использовать эту мощность.
В любом случае не всегда верно, что нужно полностью насытить устройство. Во многих задачах я вижу, что использование 32 потоков на блок (т.е. 50% возможного заполнения) дает такую же производительность, как использование 64 потоков на блок.
В конце концов, все зависит от выполнения некоторых тестов и выбора того, что лучше для вас в данном случае с данным оборудованием.