Я знаю, что число блоков, работающих на одном SM, ограничено номером блока, потоками, общей памятью и регистром. Есть ли стратегия избежать слишком большого количества регистров? Я имею в виду, что я просто не хочу иметь слишком много из них, в конечном итоге он ограничивает количество блоков, которые я запускаю на одном SM.Ограничение регистра Cuda SM
ответ
Одним из основных драйверов для количества регистров является количество локальных данных, которые вы заявляете в своем ядре. Тем не менее, ассемблер PTX может отлично справиться с повторным использованием регистров, поэтому не всегда легко определить, сколько будет использовано из кода PTX - вам нужно запустить ptxas
, чтобы получить реальный ответ.
Компиляция с nvcc -Xptxas -v
распечатает диагностическую информацию, о которой упоминал Эрик. Кроме того, вы можете заставить компилятор сохранять регистры с помощью квалификатора __launch_bounds__
. Например
__global__ void
__launch_bounds__(maxThreadsPerBlock, minBlocksPerMultiprocessor)
MyKernel(...)
{
...
}
гарантирует, что по крайней мере minBlocksPerMultiprocessor
блоки размером maxThreadsPerBlock
умещаются на одном СМ. См. Раздел B.16 of CUDA Programming Guide для полного объяснения __launch_bounds__
.
- 1. Использование регистра CUDA
- 2. Определение количества разрежений, разрешенных в CUDA SM
- 3. Cuda, определить последний блок на SM
- 4. Отслеживание использования регистра ядра cuda
- 5. Ограничение нижнего регистра - сервер Sql
- 6. Ошибка CUDA: MapSMtoCores undefined SM 3.5 не определено
- 7. Количество ядер на SM и потоки в блоке в CUDA
- 8. Как SM в CUDA запускает несколько блоков одновременно?
- 9. в CUDA. Как блок потока получает сопоставление с SM
- 10. CUDA - больше SM или более высокая тактовая частота?
- 11. В CUDA вычислить возможности 3.5+, могут ли все потоки (на SM) действительно иметь 255 регистров?
- 12. Регистры Cuda в потоке
- 13. error: невозможно ограничение регистра в 'asm'
- 14. Ограничение исключения без учета регистра Postgres
- 15. AT команды AT + CPMS = "SM", "SM", "МТ"
- 16. Каково поведение планирования блоков потоков для конкретных SM после запуска ядра CUDA?
- 17. Путаница с кодом CUDA PTX и память регистра
- 18. Может ли const * __restrict__ увеличить использование регистра cuda?
- 19. XPathMessageQuery sm: body() выражение
- 20. cuda gpu: разъяснение терминологии
- 21. sm-level: 1.3 vs 2.0 performance
- 22. База данных Oracle Может устанавливать ограничение для значений верхнего регистра?
- 23. Почему CUDA не позволяет использовать всю память SM в качестве кеша L1?
- 24. Boostrap Col не работает Sm
- 25. Управление слайдерами SM Dynamic Slideshow
- 26. Ответственное выравнивание SM и XS
- 27. col-sm-4 height bootstrap
- 28. Требования - Что такое диаграмма SM?
- 29. ZF2 SM, мне действительно нужно
- 30. Ограничение (amp) более ограничительное, чем код ядра CUDA?