Этот вопрос относится к: Выходит ли Планировщик деформации Nvidia Cuda?
Тем не менее, мой вопрос заключается в том, чтобы заставить блок потока уступить, выполнив некоторую контролируемую операцию с памятью (которая достаточно тяжелая, чтобы сделать выход блока потока). Идея состоит в том, чтобы позволить другому готовому блоку потока выполняться на теперь свободном мультипроцессоре.
В руководстве по PTX v2.3 упоминается (раздел 6.6):
... Большая часть задержки в памяти может быть скрыта разными способами. Первый состоит в том, чтобы иметь несколько потоков выполнения, чтобы оборудование могло выполнить операцию с памятью, а затем переключиться на другое выполнение. Другой способ скрыть задержку - выполнить инструкции загрузки как можно раньше, поскольку выполнение не блокируется до тех пор, пока в последующей (по времени) инструкции не будет использован нужный результат ...
Похоже, что этого можно достичь (несмотря на то, что он безобразный хакер). Кто-нибудь пробовал что-то подобное? Возможно, с настройкой типа block_size = warp_size?
РЕДАКТИРОВАТЬ: Я поднял этот вопрос без четкого понимания разницы между резидентными и нерезидентными (но назначенными на один и тот же SM) блоками потоков. Таким образом, вопрос должен заключаться в переключении между двумя резидентными (размером с варп) блоками потоков. Извиняюсь!