Таймер CPU и GPU в визуальном профилировщике cuda - PullRequest
2 голосов
/ 04 декабря 2010

Так что в cuda visual profiler есть 2 таймера,

GPU Time: время выполнения метода на GPU. CPU Time: это сумма времени GPU и загрузки процессора для запуска этого метода. На уровне данных, генерируемых драйвером, CPU Time - это только нагрузка на CPU для запуска метода для неблокирующих методов; для методов блокировки это сумма времени GPU и нагрузки на процессор. Все запуски ядра по умолчанию не блокируются. Но если какие-либо счетчики профилировщика включены, запуск ядра блокируется. Асинхронные запросы на копирование памяти в разных потоках не блокируются.

Если у меня есть настоящая программа, сколько сейчас времени? Я измеряю время, есть таймер GPU и таймер CPU, в чем разница?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2010

Вы почти на месте - теперь, когда вы знаете о некоторых различных вариантах, последний шаг - спросить себя, какое именно время вы хотите измерить. Там нет правильного ответа на это, потому что это зависит от того, что вы пытаетесь сделать с измерением. Время CPU и GPU - именно то, что вам нужно, когда вы пытаетесь оптимизировать вычисления, но они могут не включать такие вещи, как ожидание, которые на самом деле могут быть довольно важными. Вы упоминаете & ldquo; фактическое время показа & rdquo; & Mdash; это начало. Вы имеете в виду полное время выполнения задачи & mdash; с момента, когда пользователь запускает программу, пока ответ не выплевывается и программа не заканчивается? В некотором смысле, это действительно единственное время, которое действительно имеет значение.

Для таких чисел в системах типа Unix мне нравится просто измерять все время выполнения программы; /bin/time myprog, предположительно, есть эквивалент Windows. Это хорошо, потому что это совершенно неубедительно. С другой стороны, потому что это общий итог, он слишком широк, чтобы быть полезным, и не очень хорошо, если в вашем коде большой компонент GUI, потому что тогда вы также измеряете время, которое требуется пользователю, чтобы выбрать свой путь. к результатам.

Если вы хотите, чтобы по истечении некоторого периода вычислений у cuda были очень удобные функции cudaEvent *, которые можно размещать в различных частях кода & mdash; см. Руководство по рекомендациям CUDA , с. 2.1.2, Использование таймеров CUDA GPU & mdash; это вы можете поместить до и после важных битов кода и распечатать результаты.

0 голосов
/ 22 июня 2012
Таймер

GPU основан на событиях.это означает, что при создании события оно будет установлено в очередь на gpu для обслуживаниятак что там тоже есть небольшие накладные расходы.из того, что я измерил, хотя различия незначительны

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