Как определить количество ядер GPU, используемых для процесса?

7941
Vanns

Как мы знаем, если в процессоре 4 ядра, то максимальное использование будет 400%, а если общее использование 200%, то оно будет проанализировано, так как 2 ядра были израсходованы среди 4 ядер.

Таким образом, в случае графических процессоров максимальное использование составляет 100%, а если общее использование составляет 80%, то как проанализировать, сколько ядер было использовано?

Для графики nvidia можно использовать nvidia-smi, чтобы увидеть использование GPU nvidia.

Для графики Intel можно использовать intel_gpu_time / intel-gpu-top, чтобы увидеть использование iGPU.

Но оба они не показывают количество используемых ядер GPU. Есть ли способ сделать это?

Я использую Linux. И Ubuntu 14.04, и Centos 7.2

4
gpu-utlization - это запутанный термин. для `nvidia-smi` он показывает процент от общего времени использования вашего одного или нескольких мультипроцессоров. Это не означает процент от общего количества используемых ядер. debonair 5 лет назад 0

1 ответ на вопрос

3
Bram

На GPU использование 100% означает, что все ядра в основном выполняют инструкции. Он работает с максимальной производительностью, когда все эти инструкции представляют собой операции слияния-умножения-добавления: a = a + b * cчто большинство современных графических процессоров может выполнять только с одной инструкцией.

Когда вы пишете программу, которая выполняет вычисления на GPU (с использованием CUDA или OpenCL), вы распределяете работу в так называемых сетках блоков потоков (терминология CUDA). GPU должен планировать все эти потоки (в «перекосах» 32 потоков), чтобы все ядра GPU были заняты. Я не знаю, насколько вы знакомы с этим предметом, но это введение может быть интересным чтением.

Пример объясняет, как это связано с использованием. Допустим, они не работают, а затем вы запускаете приложение, которое запускает ядро ​​только для одного потока, но с достаточным количеством вычислений в этом блоке. Графический процессор будет планировать блок потоков на одном из потоковых мультипроцессоров (SM = группа из 128 ядер) на графическом процессоре. В случае, например, Nvidia GTX 1080, который имеет 20 SM, это приведет к использованию только (1/20 * 100%) = 5%.

Имея базовые знания в области вычислений на GPU, вы можете запустить их через Nvidia Visual Profiler (для приложений CUDA) или через CodeXL for (приложения OpenCL), чтобы увидеть эти конфигурации потоков для любого ядра, которое приложение использует для обоснования использования GPU, Но это еще не все, этот инструмент неоценим, чтобы точно знать, какие операции (и насколько эффективно) выполняет графический процессор.

обновленное введение в CUDA https://devblogs.nvidia.com/parallelforall/even-easier-introduction-cuda/ Scott Stensland 6 лет назад 0