Блокировка шаблонов обработки карт GPU с использованием их ядер SM
У меня есть вопрос о процессах планирования вычислительных возможностей карт памяти 1.3 и 2.0. Максимальное количество блоков, запланированных каждый раз в потоковом мультипроцессоре, равно 8 в обоих случаях, по крайней мере, это то, что я заметил в калькуляторе занятости.
На карте 1.3 каждый SM имеет 8 ядер, а на карте 2.0 - 32 ядра на SM. Как распределяются ядра для блочного процесса?
Для 1.3 каждый ли процесс ядра 1 блок? И если да, то если на SM меньше 8 блоков, то для обработки блока назначено больше ядер, чем одно?
Для 2.0, если в SM запланировано 8 блоков, тогда 4 ядра назначены для обработки блока? Если в SM меньше блоков, то для расчета блока запланировано больше ядер?
Спасибо.
1 ответ
Все ядра в одном SM работают в непрерывном режиме (по крайней мере, до cc 2.0). Когда по какой-либо причине потоки, связанные с одной деформацией блокировки, попадают в стойло, планировщик вводит другую деформацию, если он готов к запуску. Новая деформация может быть из того же или другого потокового блока, т.е. из числа до 8 потоковых блоков, которые в настоящее время могут находиться на этом SM.
Возможно, вам будет интересно прочитать этот раздел руководства по программированию.