Вопросы резидентских перекосов CUDA

Я использую CUDA уже месяц, а сейчас пытаюсь прояснить, сколько варпов / блоков необходимо, чтобы скрыть задержку обращений к памяти. Я думаю, что это связано с максимумом резидентных перекосов на мультипроцессоре.

Согласно Таблице 13 в CUDA_C_Programming_Guide (v-7.5), максимальное количество резидентных деформаций для каждого мультипроцессора составляет 64. Тогда мой вопрос: что такое резидентный деформация? это относится к тем перекосам с данными, считанными из памяти графических процессоров, и готовы ли они обрабатываться SP? Или обращайтесь либо к деформациям, которые могут прочитать память для дататора, либо к деформациям, которые готовы к обработке SP, что означает, что остальные деформации, кроме этих 64, не могут ни читать память, ни обрабатывать SP, пока не будут выполнены некоторые из этих 64 резидентных деформаций.,

1 ответ

Максимальное количество резидентных деформаций - это максимальное количество деформаций, которые могут обрабатываться параллельно на мультипроцессоре. Деформация активна, когда она запланирована планировщиком деформации и выделены регистры.

Если вы достигнете параллельного запуска этого количества перекосов, это теоретическая максимальная загруженность (100% или 1:1). Если нет, коэффициент занятости ниже.

Другие перекосы придется подождать.

Может быть связано с этим вопросом на SO.


Отредактированный ответ на дополнительные вопросы:

  1. Warps

О максимальном количестве перекосов, которые могут быть обработаны: SM (потоковые мультипроцессоры) имеют максимум процессорных ядер, а GPU имеет ограниченное количество SM. Даже если этот вебинар не соответствует новым архитектурам, он дает несколько хороших примеров:

SM - потоковые мультипроцессоры с несколькими ядрами обработки

Каждый SM содержит 32 ядра обработки

Выполнить в режиме однорядной многопоточности (SIMT)

До 16 SM на карте для максимум 512 вычислительных ядер

А также:

Fermi может иметь до 48 активных деформаций на SM (1536 нитей)

  1. Обработка перекосов

Во-первых, некоторые термины не всегда являются официальными, см., Например, эту тему от Nvidia DevTalk.

Как объяснено по этой теме, данная деформация активна, как только она была выделена на SM с ее ресурсами. Тогда это может быть:

  • имеет право: он может выдать операцию
  • остановился: не может из-за зависимости ресурса / данных

Это возможно, потому что у нас там есть SIMT-архитектура, то есть однорядная многопоточность. Вы найдете много материалов по этой теме, которые могут быть очень полезны, если вы планируете настроить занятость.

Другие вопросы по тегам