CUDA деформирует и заполняет - PullRequest
5 голосов
/ 19 апреля 2011

Я всегда думал, что планировщик деформации будет выполнять по одному деформации за раз, в зависимости от того, какой деформация готова, и эта деформация может происходить из любого из потоковых блоков в многопроцессорном процессоре. Однако на одном из слайдов веб-семинара Nvidia указано, что «Occupancy = количество деформаций, запущенных одновременно на многопроцессорном устройстве, деленное на максимальное количество деформаций, которые могут работать одновременно». Таким образом, более одного варпа могут работать одновременно? Как это работает?

Спасибо.

1 Ответ

9 голосов
/ 19 апреля 2011

«Выполнение» может быть лучше интерпретировано как «наличие состояния на SM и / или инструкции в конвейере».Аппаратное обеспечение графического процессора планирует столько блоков, сколько доступно или будет вписываться в ресурсы SM (в зависимости от того, что меньше), распределяет состояние для каждой деформации, которую они содержат (т. Е. Регистровый файл и локальная память), затем начинает планирование деформаций для выполнения,Кажется, что конвейер инструкций имеет длину около 21-24 циклов, и поэтому в любой момент времени на разных этапах "работы" имеется множество потоков.

Первые два поколения графического процессора с поддержкой CUDA (так G80/ 90 и G200) только удаляют команды из одной деформации за четыре такта.Вычислите устройства 2.0, выпуская инструкции двойного выпуска из двух перекосов за два такта, так что по одному отсеву выдается два перекоса.Compute 2.1 расширяет это, допуская то, что фактически выполняется не по порядку - по-прежнему только две деформации за такт, но потенциально две инструкции из одной и той же деформации одновременно.Таким образом, дополнительные 16 ядер на SM используются для параллелизма на уровне команд, которые все еще выдаются из того же общего планировщика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...