Какая польза от графов задач в CUDA 10? - PullRequest
0 голосов
/ 25 октября 2018

В CUDA 10 добавлены вызовы API времени выполнения для перевода потоков (= очередей) в «режим захвата», чтобы вместо выполнения они возвращались в виде «графика».Затем эти графики могут быть выполнены для фактического выполнения или могут быть клонированы.

Но какова причина этой функции?Не маловероятно ли выполнить один и тот же «граф» дважды?В конце концов, даже если вы запускаете «один и тот же код», по крайней мере, данные отличаются, то есть параметры, которые принимают ядра, вероятно, изменятся.Или - я что-то упустил?

PS - я снял эту слайд-колоду , но все еще не получил ее.

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

При обучении модели глубокого обучения часто происходит повторный запуск одного и того же набора ядер в том же порядке, но с обновленными данными.Кроме того, я ожидаю, что Cuda выполнит оптимизацию, статически зная, какие будут следующие ядра.Мы можем представить, что Cuda может получать больше инструкций или адаптировать свою стратегию планирования, зная весь график.

0 голосов
/ 11 июня 2019

Мой опыт работы с графиками заключается в том, что они не так изменчивы.Вы можете изменить параметры с помощью 'cudaGraphHostNodeSetParams', но для того, чтобы изменение параметров вступило в силу, мне пришлось перестроить исполняемый файл графа с помощью 'cudaGraphInstantiate'.Этот вызов занимает так много времени, что любой выигрыш от использования графиков теряется (в моем случае).Настройка параметров работала только для меня, когда я строил график вручную.При получении графика с помощью захвата потока я не смог установить параметры узлов, так как у вас нет указателей узлов.Вы могли бы подумать, что вызов cudaGraphGetNodes для захваченного потока графа вернет вам узлы.Но возвращенный указатель узла был для меня NULL, хотя переменная 'numNodes' имела правильный номер.Документация явно упоминает это как возможность, но не объясняет почему.

0 голосов
/ 25 октября 2018

Графики задач довольно изменчивы.

Существуют API-вызовы для изменения / настройки параметров узлов графа задач различных типов, поэтому может использовать граф задач в качестве шаблона,так что вместо постановки в очередь отдельных узлов перед каждым выполнением можно изменять параметры каждого узла перед каждым выполнением (и, возможно, не все узлы действительно нуждаются в изменении своих параметров).

Например, см. документацию для cudaGraphHostNodeGetParams и cudaGraphHostNodeSetParams .

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