Работа планировщика CUDA

Как узнать поведение планировщика CUDA? Помимо тестирования с изменением размеров сетки, размеров блоков и т. д. в моем приложении есть ли какая-либо документация, предоставленная поставщиком, которая точно объясняет, каким образом распределяются блоки?


person Rakesh Kumar    schedule 16.02.2013    source источник


Ответы (1)


Это зависит от архитектуры, над которой вы работаете.

Например, в архитектуре Fermi у вас есть глобальный планировщик GigaThread, который распределяет блоки потоков по планировщикам потоковых мультипроцессоров (SM). Для каждого SM планировщик Dual Warp планирует потоки в группах по 32 параллельных потока, называемых warp.

Это хорошо объяснено в белой книге NVIDIA о Fermi. Я предлагаю также взглянуть на этот другой документ.

person Vitality    schedule 16.02.2013
comment
Ok. Это правильно. Спасибо. Мне на самом деле интересно узнать, есть ли какой-либо способ, с помощью которого я могу узнать, на какие SM планировщик недавно распределил потоки. т. е. существует ли какой-либо файл журнала (или что-то в этом роде), который планировщик обновляет каждый раз с этой информацией (чтобы, заглянув в файл журнала, мы могли узнать, какие все SM работают в данный момент)? - person Rakesh Kumar; 16.02.2013
comment
[продолжение..] Я использую Tesla M2050 fermi. Итак, если глобальный планировщик GigaThread распределяет блоки потоков по планировщикам SM, то какой именно планировщик решает, сколько SM использовать и какие SM? Когда потоки запланированы на эти конкретные SM, есть ли способ узнать идентификаторы этих SM? - person Rakesh Kumar; 16.02.2013
comment
Я не знаю ни одного способа узнать, какие блоки или потоки назначены каким SM. Что касается вашего вопроса, я бы сказал, что глобальный планировщик GigaThread определяет количество и идентификаторы используемых SM. - person Vitality; 16.02.2013
comment
Использование %smid в ядре помогает узнать, какой поток выполняется в каком SM. Я попробовал это. Но я хочу получить эту информацию без помощи приложения. Я хочу получить эту информацию от самого планировщика. По вашему мнению, мне нужно связаться с глобальным планировщиком GigaThread. Это вообще возможно? - person Rakesh Kumar; 16.02.2013