Вопросы резидентских перекосов CUDA
Я использую CUDA уже месяц, а сейчас пытаюсь прояснить, сколько варпов / блоков необходимо, чтобы скрыть задержку обращений к памяти. Я думаю, что это связано с максимумом резидентных перекосов на мультипроцессоре.
Согласно Таблице 13 в CUDA_C_Programming_Guide (v-7.5), максимальное количество резидентных деформаций для каждого мультипроцессора составляет 64. Тогда мой вопрос: что такое резидентный деформация? это относится к тем перекосам с данными, считанными из памяти графических процессоров, и готовы ли они обрабатываться SP? Или обращайтесь либо к деформациям, которые могут прочитать память для дататора, либо к деформациям, которые готовы к обработке SP, что означает, что остальные деформации, кроме этих 64, не могут ни читать память, ни обрабатывать SP, пока не будут выполнены некоторые из этих 64 резидентных деформаций.,
1 ответ
Максимальное количество резидентных деформаций - это максимальное количество деформаций, которые могут обрабатываться параллельно на мультипроцессоре. Деформация активна, когда она запланирована планировщиком деформации и выделены регистры.
Если вы достигнете параллельного запуска этого количества перекосов, это теоретическая максимальная загруженность (100% или 1:1). Если нет, коэффициент занятости ниже.
Другие перекосы придется подождать.
Может быть связано с этим вопросом на SO.
Отредактированный ответ на дополнительные вопросы:
- Warps
О максимальном количестве перекосов, которые могут быть обработаны: SM (потоковые мультипроцессоры) имеют максимум процессорных ядер, а GPU имеет ограниченное количество SM. Даже если этот вебинар не соответствует новым архитектурам, он дает несколько хороших примеров:
SM - потоковые мультипроцессоры с несколькими ядрами обработки
Каждый SM содержит 32 ядра обработки
Выполнить в режиме однорядной многопоточности (SIMT)
До 16 SM на карте для максимум 512 вычислительных ядер
А также:
Fermi может иметь до 48 активных деформаций на SM (1536 нитей)
- Обработка перекосов
Во-первых, некоторые термины не всегда являются официальными, см., Например, эту тему от Nvidia DevTalk.
Как объяснено по этой теме, данная деформация активна, как только она была выделена на SM с ее ресурсами. Тогда это может быть:
- имеет право: он может выдать операцию
- остановился: не может из-за зависимости ресурса / данных
Это возможно, потому что у нас там есть SIMT-архитектура, то есть однорядная многопоточность. Вы найдете много материалов по этой теме, которые могут быть очень полезны, если вы планируете настроить занятость.