Прежде всего, как только блок потока запущен на многопроцессорном процессоре (SM), все его деформации являются резидентными, пока все они не выйдут из ядра.Таким образом, блок не запускается до тех пор, пока не будет достаточно регистров для всех деформаций блока, и пока не будет достаточно свободной разделяемой памяти для блока.
Таким образом, деформации никогда не "выключаются" - нет интер- резкое переключение контекста в традиционном смысле этого слова, когда переключение контекста требует сохранения регистров в памяти и их восстановления.
Однако SM выбирает инструкции для выдачи из всех резидентских деформаций.Фактически, SM с большей вероятностью будет выдавать две инструкции подряд из разных деформаций, чем из одной и той же деформации, независимо от того, какой это тип инструкций, независимо от того, сколько существует ILP (параллелизм на уровне инструкций).Невыполнение этого условия приведет к тому, что SM подвергнется зависанию.Даже «быстрые» инструкции, такие как add, имеют ненулевую задержку, потому что арифметический конвейер имеет длительность в несколько циклов.Например, в Fermi аппаратное обеспечение может выдавать 2 или более инструкций деформации за цикл (пик), а задержка арифметического конвейера составляет ~ 12 циклов.Поэтому вам нужно несколько перекосов в полете, чтобы скрыть арифметическую задержку, а не только задержку памяти.
В общем, детали планирования деформации зависят от архитектуры, не документированы публично и в значительной степени гарантированно изменяются со временем.Модель программирования CUDA не зависит от алгоритма планирования, и вы не должны полагаться на нее в своем программном обеспечении.