Есть ли способ найти идентификатор WARP потока в CUDA? Я хочу выполнить ветку на основе идентификатора WARP.
Филиал на основе WARP ID
Ответы:
Существует регистр %warpid, и он было бы несложно написать функцию, которая обращается к нему через встроенный ассемблер.
Однако крайне необычно, что вы когда-нибудь захотите его использовать; например
- потоки не остаются на месте и со временем меняют деформацию, на которой они работают
- это не глобально уникальный идентификатор
что делает его возможные варианты использования крайне ограниченными. Чтобы процитировать документацию:
... Идентификатор деформации обеспечивает уникальный номер деформации внутри CTA, но не между CTA в сетке. ...
Обратите внимание, что
%warpid
является изменчивым и возвращает местоположение потока в момент чтения, но его значение может измениться во время выполнения...%warpid
предназначен в основном для того, чтобы профилирующий и диагностический код мог собирать и регистрировать информацию, такую как сопоставление рабочих мест и распределение нагрузки.
%warpid
, присвоенное данной деформации, является временным. Но поток (и его 31 сосед) остаются в одном и том же варпе на протяжении всей своей жизни. Что вы не указали, так это текст, следующий за ним, в котором говорится, что вы можете использовать %ctaid и %tid для расчета уникального номера деформации. 24.07.2015