4

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

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

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

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

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

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

1 ответ1

3

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .