У меня есть небольшой вопрос об активных деформациях в графическом процессоре (я бы предпочел узнать это в Fermi). Для конкретного ядра количество активных варпов в любом цикле SM одинаково для всего времени выполнения ядра? Как я экспериментировал, есть некоторая корреляция между общим количеством активных варпов (за все время выполнения) и количеством синхронизаций в ядре программы. Кто-нибудь может прояснить это отношение? Спасибо
Количество активных деформаций в графическом процессоре (Fermi)
Ответы (2)
Количество активных деформаций может меняться со временем, поскольку:
- Другие блоки нитей могут завершаться или начинаться на одном и том же SM, поэтому, если у вас есть четыре деформации на блок нитей, то, если только один блок нитей находится в SM, у вас будет до четырех деформаций, но с двумя или тремя блоками нитей у вас будет до восьми или двенадцать соотв.
- Если варп достигает конца своего кода, он больше не будет выполнять код (естественно).
Количество активных деформаций для выполнения всей программы будет зависеть от ряда факторов, но помните, что оно увеличивается на количество активных деформаций в каждом цикле. Это означает, что если вы увеличите количество синхронизаций, что также приведет к увеличению количества циклов, требуемых для каждого варпа для выполнения ядра, то вы ожидаете более высокого количества активных варпов.
Также обратите внимание, что некоторые производные статистические данные в профилировщике являются приблизительными, поскольку они часто используют значения из более чем одного прогона, поэтому может быть некоторая изменчивость.
Связь между барьерной синхронизацией и переносом объясняется в этой статье Демистификация микроархитектуры GPU с помощью микробенчмаркинга а>.