23 июл. 2013 г.

Чем проверить GPU на стабильность?

Недавно в процессе сборки нескольких GPU-серверов (естественно, на базе платформ Supermicro) возникла необходимость поиска каких-либо средств диагностики и нагрузочного тестирования помимо ПО, предоставляемого клиентами.
У Nvidia существует пакет диагностических утилит, распространяемых только среди OEM партнеров. Доступ к этому пакету у нас есть, но хотелось найти еще какой-нибудь простой нагрузочный тест.

Таковым оказался gpu_burn. Работает под Linux, что хорошо - для тестирования GPU серверов мы как раз используем используем CentOS. Работает просто: в качестве аргумента задается время работы в секундах, найденные GPU нагружаются перемножением матриц, через определенные промежутки времени выводятся температуры GPU и количество ошибок:
[root@test1 gpuburn]# ./gpu_burn 20
GPU 0: Tesla K20m (UUID: GPU-76823a0b-33a5-0c08-93cb-c49dfb4b741c)
GPU 1: Tesla K20m (UUID: GPU-e152ec71-05ac-19e5-df4c-767c532e3a81)
GPU 2: Tesla K20m (UUID: GPU-c7de2170-01ff-67f4-45e6-bad5ed40f696)
Initialized device 0 with 4799 MB of memory (4708 MB available, using 4237 MB of it)
Initialized device 2 with 4799 MB of memory (4708 MB available, using 4237 MB of it)
Initialized device 1 with 4799 MB of memory (4708 MB available, using 4237 MB of it)
20.0%  proc'd: 1057 / 0 / 0   errors: 0 / 0 / 0   temps: 34 C / 39 C / 32 C
        Summary at:   Wed Jun 26 12:17:31 MSK 2013

30.0%  proc'd: 2114 / 1057 / 1057   errors: 0 / 0 / 0   temps: 37 C / 42 C / 35 C
        Summary at:   Wed Jun 26 12:17:33 MSK 2013

50.0%  proc'd: 3171 / 3171 / 3171   errors: 0 / 0 / 0   temps: 37 C / 42 C / 35 C
        Summary at:   Wed Jun 26 12:17:37 MSK 2013

60.0%  proc'd: 5285 / 4228 / 4228   errors: 0 / 0 / 0   temps: 38 C / 43 C / 37 C
        Summary at:   Wed Jun 26 12:17:39 MSK 2013

75.0%  proc'd: 6342 / 6342 / 6342   errors: 0 / 0 / 0   temps: 38 C / 43 C / 37 C
        Summary at:   Wed Jun 26 12:17:42 MSK 2013

90.0%  proc'd: 8456 / 7399 / 7399   errors: 0 / 0 / 0   temps: 39 C / 45 C / 38 C
        Summary at:   Wed Jun 26 12:17:45 MSK 2013

100.0%  proc'd: 9513 / 9513 / 9513   errors: 0 / 0 / 0   temps: 40 C / 45 C / 39 C
Killing processes.. done

Tested 3 GPUs:
        GPU 0: OK
        GPU 1: OK
        GPU 2: OK
Для сборки требуется предварительная установка CUDA SDK и, конечно, драйверов от Nvidia, в состав которых входит утилита nvidia-smi, умеющая отображать различную полезную информацию о платах Nvidia: серийные номера, частоты работы памяти и GPU, температуру и потребляемую мощность.
Кстати, в ветке обсуждения приводится ссылка на патч для gpu_burn, позволяющий дополнительно увеличить нагрузку (используются вычисления с двойной точностью вместо одинарной).
В качестве заключения хотелось бы напомнить, что не стоит собирать рабочие станции/сервера с несколькими GPU на чем попало. Сочетание геймерских материнских плат с красивыми геймерскими корпусами может стильно выглядеть, но принести массу проблем с охлаждением и стабильностью, вплоть до полного фиаско из-за невозможности задействовать Nvidia Maximus. Правильным решением будет использование специально предназначенных для размещения GPU платформ Supermicro и готовых серверов/рабочих станций на их основе от компании True System.