LINUX.ORG.RU

Запилил memtest_vulkan - нагрузочный тест видеопамяти

 , ,


1

1

C момента появления vulkan была инфа что он может использоваться для вычислений без необходимости взаимодействия с визуальной составляющей оконной системы, через vulkan compute. Тогда я надеялся что это будет убийца cuda, однако технология не обрела популярности.

Решил потыкать её палочкой - а работает ли оно вообще. Оказалось что вполне работает и достаточно платформонезависима!

Основные проблемы - мало документации, мало средне-уровневых обёрток над низкоуровнеыом API.

Запилил на vulkan compute нагрузочный тест видеопамяти, может быть полезен при оценке стаильности при оверклокинге или ремонте - https://github.com/GpuZelenograd/memtest_vulkan

Бинарники есть в артефактах сборки (удалятся через 90 дней) https://github.com/GpuZelenograd/memtest_vulkan/actions/runs/3140130070 и в файлах релиза -https://github.com/GpuZelenograd/memtest_vulkan/releases/

Пример работы выглядит так:

https://github.com/GpuZelenograd/memtest_vulkan v0.4.0
To finish testing use Ctrl+C

1: Bus=0x04:00 DevId=0x1F07   8GB NVIDIA GeForce RTX 2070
2: Bus=0x03:00 DevId=0x1B82   8GB NVIDIA GeForce GTX 1070 Ti
3: Bus=0x00:00 DevId=0x0000   2GB llvmpipe (LLVM 13.0.1, 256 bits)
                                                   Override index to test:2
Testing 2: Bus=0x03:00 DevId=0x1B82   8GB NVIDIA GeForce GTX 1070 Ti
      1 iteration. Since last report passed 46.700972ms     written     3.2GB, read:     6.5GB    208.8GB/sec
     23 iteration. Since last report passed 1.023638989s    written    71.5GB, read:   143.0GB    209.5GB/sec
    131 iteration. Since last report passed 5.029294127s    written   351.0GB, read:   702.0GB    209.4GB/sec
    771 iteration. Since last report passed 30.041030795s   written  2080.0GB, read:  4160.0GB    207.7GB/sec
^C
memtest_vulkan: no any errors, testing PASSed.
  press any key to continue...

Пример, обнаруживший ошибки

https://github.com/GpuZelenograd/memtest_vulkan v0.3.0
To finish testing use Ctrl+C

1: Bus=0x01:00 DevId=0x1B87   8GB NVIDIA P104-100
Testing 1: Bus=0x01:00 DevId=0x1B87   8GB NVIDIA P104-100
      1 iteration. Since last report passed 52.20479ms      written     3.8GB, read:     7.5GB    215.5GB/sec
     21 iteration. Since last report passed 1.0515038s      written    75.0GB, read:   150.0GB    214.0GB/sec
    216 iteration. Since last report passed 10.021230569s   written   731.2GB, read:  1462.5GB    218.9GB/sec
   2125 iteration. Since last report passed 100.010942973s  written  7158.8GB, read: 14317.5GB    214.7GB/sec
Error found. Mode NEXT_RE_READ, total errors 0x3C7EC3 out of 0x3C000000 (0.39384872%)
Errors address range: 0x9D66148C..=0xDCD3036B  bit-level stats table:
         0x0 0x1  0x2 0x3| 0x4 0x5  0x6 0x7| 0x8 0x9  0xA 0xB| 0xC 0xD  0xE 0xF
SinglIdx                 |      1m         |                 |                 
   0x1?                  |      1m         |                 |                 
TogglCnt      3m 820k    |                 |                 |                 
1sInValu            1   2|  32 249 13645067| 15k 39k  81k142k|219k308k 398k468k
   0x1? 506k502k 448k353k|239k134k  63k 25k|79792113  310  43|   5        1    

Справочно - существует аналогичная штука для openCL, но с поддержкой openCL я ловил больше проблем чем с Vulkan - https://github.com/ihaque/memtestCL

★★

Последнее исправление: GPFault (всего исправлений: 3)

Работает, давайте померяемся

$ ./memtest_vulkan 
https://github.com/GpuZelenograd/memtest_vulkan v0.4.0 by GpuZelenograd
To finish testing use Ctrl+C

1: Bus=0x03:00 DevId=0x66AF   16GB AMD Radeon VII (RADV VEGA20)
Testing 1: Bus=0x03:00 DevId=0x66AF   16GB AMD Radeon VII (RADV VEGA20)
      1 iteration. Since last report passed 86.204415ms     written    10.9GB, read:    14.5GB    294.4GB/sec
     13 iteration. Since last report passed 1.037461928s    written   130.5GB, read:   174.0GB    293.5GB/sec
     71 iteration. Since last report passed 5.009650373s    written   630.8GB, read:   841.0GB    293.8GB/sec
    419 iteration. Since last report passed 30.028413026s   written  3784.5GB, read:  5046.0GB    294.1GB/sec
    767 iteration. Since last report passed 30.06367601s    written  3784.5GB, read:  5046.0GB    293.7GB/sec
^C
memtest_vulkan: no any errors, testing PASSed.

sehellion ★★★★★
()
Ответ на: комментарий от sehellion

О, интересно было увидеть результат на драйвере RADV c Radeon VII, спасибо.

Но он лишь подтверждает что memtest_vulkan не задуман как бенчмарк шины памяти, а только как тест на стабильность. 294.4GB/sec это раза в 3 меньше чем пиковая производительность памяти на Radeon VII. На картах с памятью GDDR* что я тестил достигало 60-80% пиковой производительности, указанной для NVidia и AMD

На Radeon VII вероятно упирается в производительность алгоритма рассчёта адреса и считываемого значения. На каждой следующей итерации используется смещённый относительно предыдущей паттерн доступа, и это может становиться узким местом производительности.

GPFault ★★
() автор топика
Последнее исправление: GPFault (всего исправлений: 2)

…однако технология не обрела популярности.

Обрела. Но в узких кругах. ;)

Например, в ncnn — фреймворке от Tencent для вычислений на нейросетках уже несколько лет вполне себе используется vk. Что позволяет строить приложения, отлично работающие на онтопике без opencl, cuda, ROCm и прочего вендоровского барахла.

Quote
()

врываться, так врываться >_>

[etwrq@werra debug]$ ./memtest_vulkan 
https://github.com/GpuZelenograd/memtest_vulkan v0.4.0 by GpuZelenograd
To finish testing use Ctrl+C

1: Bus=0x00:02 DevId=0x5917   12GB Intel(R) UHD Graphics 620 (KBL GT2)
Testing 1: Bus=0x00:02 DevId=0x5917   12GB Intel(R) UHD Graphics 620 (KBL GT2)
      1 iteration. Since last report passed 199.572951ms    written     0.9GB, read:     1.8GB     13.2GB/sec
      6 iteration. Since last report passed 1.03736312s     written     4.4GB, read:     8.8GB     12.7GB/sec
     32 iteration. Since last report passed 5.148547592s    written    22.8GB, read:    45.5GB     13.3GB/sec
    184 iteration. Since last report passed 30.037967958s   written   133.0GB, read:   266.0GB     13.3GB/sec
^C
memtest_vulkan: no any errors, testing PASSed.
  press any key to continue...

etwrq ★★★★★
()
Ответ на: комментарий от Quote

отлично что хоть какой-то движок нейронок это юзает. По идее он без проблем на nvidia jetson заработает. Моя тулза на нём с первого раза заработала просто после компиляции под aarch64, никакой критической специфики не всплыло.

GPFault ★★
() автор топика

1: Bus=0x03:00 DevId=0x15D8   3GB AMD RADV RAVEN
2: Bus=0x00:00 DevId=0x0000   2GB llvmpipe (LLVM 13.0.1, 256 bits)
(first device will be autoselected in 0 seconds)   Override index to test:
    ...first device autoselected
Testing 1: Bus=0x03:00 DevId=0x15D8   3GB AMD RADV RAVEN
      1 iteration. Since last report passed 417.867504ms    written     0.6GB, read:     1.2GB      4.5GB/sec
      4 iteration. Since last report passed 1.11842522s     written     1.9GB, read:     3.8GB      5.0GB/sec
     18 iteration. Since last report passed 5.205412423s    written     8.8GB, read:    17.5GB      5.0GB/sec
    100 iteration. Since last report passed 30.092033806s   written    51.2GB, read:   102.5GB      5.1GB/sec
    183 iteration. Since last report passed 30.348933861s   written    51.9GB, read:   103.8GB      5.1GB/sec
    266 iteration. Since last report passed 30.352419023s   written    51.9GB, read:   103.8GB      5.1GB/sec
tyamur ★★
()
1: Bus=0x03:00 DevId=0x21C4   6GB NVIDIA GeForce GTX 1660 SUPER
Testing 1: Bus=0x03:00 DevId=0x21C4   6GB NVIDIA GeForce GTX 1660 SUPER
      1 iteration. Since last report passed 31.856356ms     written     2.2GB, read:     4.5GB    211.9GB/sec
     34 iteration. Since last report passed 1.001475117s    written    74.2GB, read:   148.5GB    222.4GB/sec
    202 iteration. Since last report passed 5.006414084s    written   378.0GB, read:   756.0GB    226.5GB/sec
   1204 iteration. Since last report passed 30.023862532s   written  2254.5GB, read:  4509.0GB    225.3GB/sec
   2202 iteration. Since last report passed 30.01541942s    written  2245.5GB, read:  4491.0GB    224.4GB/sec
   3200 iteration. Since last report passed 30.017493915s   written  2245.5GB, read:  4491.0GB    224.4GB/sec
   4197 iteration. Since last report passed 30.004244954s   written  2243.2GB, read:  4486.5GB    224.3GB/sec
   5191 iteration. Since last report passed 30.021402513s   written  2236.5GB, read:  4473.0GB    223.5GB/sec
   6185 iteration. Since last report passed 30.001428884s   written  2236.5GB, read:  4473.0GB    223.6GB/sec
   7182 iteration. Since last report passed 30.025296723s   written  2243.2GB, read:  4486.5GB    224.1GB/sec
   8163 iteration. Since last report passed 30.000961715s   written  2207.2GB, read:  4414.5GB    220.7GB/sec
   9144 iteration. Since last report passed 30.003389329s   written  2207.2GB, read:  4414.5GB    220.7GB/sec
  10141 iteration. Since last report passed 30.013016739s   written  2243.2GB, read:  4486.5GB    224.2GB/sec

Jameson ★★★★★
()
$ ./memtest_vulkan 
https://github.com/GpuZelenograd/memtest_vulkan v0.4.0 by GpuZelenograd
To finish testing use Ctrl+C

1: Bus=0x01:00 DevId=0x1D01   2GB NVIDIA GeForce GT 1030
Testing 1: Bus=0x01:00 DevId=0x1D01   2GB NVIDIA GeForce GT 1030
      1 iteration. Since last report passed 34.392661ms     written     0.4GB, read:     0.8GB     32.7GB/sec
     31 iteration. Since last report passed 1.01663157s     written    11.2GB, read:    22.5GB     33.2GB/sec
    182 iteration. Since last report passed 5.01789803s     written    56.6GB, read:   113.2GB     33.9GB/sec
   1093 iteration. Since last report passed 30.002506629s   written   341.6GB, read:   683.2GB     34.2GB/sec
   1965 iteration. Since last report passed 30.032620332s   written   327.0GB, read:   654.0GB     32.7GB/sec
   2845 iteration. Since last report passed 30.001520881s   written   330.0GB, read:   660.0GB     33.0GB/sec
^C
memtest_vulkan: no any errors, testing PASSed.
  press any key to continue...

alex1101
()
Ответ на: комментарий от gtk3

да, без поддержки Vulkan 1.1 работать не будет. Для более старых платформ есть на тест памяти на openCL - https://github.com/ihaque/memtestCL

с openCL меньше проблем на старых платформах, а c vulkan - на новых.

GPFault ★★
() автор топика
Testing 1: Bus=0x01:00 DevId=0x1ED0   8GB NVIDIA GeForce RTX 2080 with Max-Q Design
      1 iteration. Since last report passed 36.966626ms     written     3.4GB, read:     6.8GB    273.9GB/sec
     31 iteration. Since last report passed 1.034194238s    written   101.2GB, read:   202.5GB    293.7GB/sec
    178 iteration. Since last report passed 5.018715896s    written   496.1GB, read:   992.2GB    296.6GB/sec
   1039 iteration. Since last report passed 30.024068756s   written  2905.9GB, read:  5811.8GB    290.4GB/sec
   1893 iteration. Since last report passed 30.026482228s   written  2882.2GB, read:  5764.5GB    288.0GB/sec
   2740 iteration. Since last report passed 30.001673651s   written  2858.6GB, read:  5717.2GB    285.8GB/sec
   3597 iteration. Since last report passed 30.0244507s     written  2892.4GB, read:  5784.8GB    289.0GB/sec
   4451 iteration. Since last report passed 30.026079567s   written  2882.2GB, read:  5764.5GB    288.0GB/sec
   5283 iteration. Since last report passed 30.030587984s   written  2808.0GB, read:  5616.0GB    280.5GB/sec

Anoxemian ★★★★★
()