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