Максимальная занятость зависит от размера вашего блока, количества регистров, необходимых для функции ядра на поток, и количества разделяемой памяти, необходимого для блока.Вы можете вычислить его самостоятельно, основываясь на определенных для устройства пределах, которые вы можете запросить.Если вы используете относительно свежую версию CUDA, API-интерфейс драйвера *1001* *, а также API времени выполнения * имеют функции для расчета занятости.
Обратите внимание, что вы будете толькобыть в состоянии вычислить теоретическую максимальную занятость.Независимо от того, как вы вычислите это число, не гарантирует , что это фактическое число, которое будет работать на устройстве все время.Используйте этот номер в качестве ориентира, например, чтобы решить, какую конфигурацию запуска лучше всего запустить.Но не пишите свой код так, чтобы он зависел от конкретного количества блоков, работающих одновременно.Единственный способ получить гарантированное количество блоков, запущенных одновременно, - это использовать сравнительно недавнюю функцию Cooperative Kernel Launch в CUDA 9 +…