AMDs AMDVLK Vulkan Driver For Linux Remains Horribly Slow At Compute Compared To The Mesa RADV Driver
AMDVLK v-2021.Q1.4, released late last week, was a huge yawn with a Mad Max specific performance quirk and the API verison updated to Vulkan 1.2.169. The last half dozen releases were equally boring. It is therefore not shocking that the performance-differences between the AMD AMDVLK Vulkan driver and the Mesa RADV driver are the same today as they were half a year ago: The graphics performance is near-identical, with AMDVLK being slightly slower, while the gap between their respective compute performance remains significant.
All the modern GNU/Linux distributions come with the Mesa graphics stack as a standard component. It includes a Vulkan graphics driver for AMD cards called RADV and a Vulkan driver for Intel graphics called ANV. AMD offers Linux users another, completely different, Vulkan implementation called AMDVLK. It does not come with any modern GNU/Linux distributions, you will have to manually download and install it if you want it. Is it worth the hassle? Well, it depends..
How Fast Can They Compute?
Vulkan is generally thought of as a graphics API for games. And it is, but it can do a lot more. Vulkan can be used to do a lot of the same graphics cards computations that have traditionally been done using languages like OpenCL and CUDA.
Image processing is one of the tasks you can use Vulkan to do on a GPU. Batch-processing 20 images with the
realsr-ncnn-vulkan Vulkan implementation of the excellent RealSR image up-scaler shows that the Mesa RADV Vulkan driver is a lot faster than AMDs AMDVLK alternative when it comes to compute. This was the case six months ago and it is still the case today. The 20 anime girls with questionmarks benchmark takes two and a half minutes longer with the AMDVLK driver. Put differently, the Mesa RADV finishes in two thirds of the time it takes AMDVLK to produce bit-identical up-scaled images.
|AMD RADV ACO|
The waifu2x-ncnn-vulkan implementation of the waifu2x image up-sclaing algorithm is not all that unlike the
realsr-ncnn-vulkan implementation of RealSR, so it is not at all shocking that the results of this test are somewhat similar. Mesa RADV is, again, faster in this benchmark though the performance-gap here is smaller than it is in the
realsr-ncnn-vulkan test. You won't notice any performance-difference if you up-scale a single image with
waifu2x-ncnn-vulkan but it will add up if you batch-process 100 or 1000 images.
|AMD RADV ACO|
The AMDVLK driver and the Mesa RADV driver perform very similarly in the MSI Kombustor Vulkan benchmarks with the MSI Kombustor TessMark benchmark being a notable exception. This was the case half a year ago and it is still the case today. The difference between 50 and 51 frames per second in the Furmark-Donut VK benchmark is irrelevant but the difference between 13 and 104 FPS in the TessMark benchmark is significant.
|AMDVLK 2021.Q1.4||AMD RADV ACO, Mesa 20.3.4|
|Furmark-Donut VK||50 FPS||51 FPS|
|Furkmark-MSI VK||80 FPS||82 FPS|
|Phong-Donut||504 FPS||502 FPS|
|TessMark-X32 VK||13 FPS||104 FPS|
|TessMark-X16 VK||95 FPS||246 FPS|
The MSI Kombustor TessMark benchmarks are clearly doing something the AMDVLK is incapable of handling at acceptable framerates. This is the only test where there is such a gigantic difference so it will probably not matter in the vast majority of games and applications but there could be some that do the same thing - with a huge performance-penalty as a result.
Basemark GPU v1.2.3 tell as similar story of two nearly equal Vulkan drivers. The Mesa RADV driver has a one frame per second advantage at 4K, so it does get the higher score. The minimum and maximum values are exactly the same in both cases and practical difference just isn't there.
|Mesa RADV 20.3.4||3968||40||33||55|
The difference becomes slightly more pronounced in the Basemark GPU when going down to 1080p. AMD RADV gets the higher overall store with higher average and maximum framerates. However, the AMDVLK driver has a higher minimum frame value and that is, in some cases, more important.
|Mesa RADV 20.3.4||42379||424||234||786|
The AMDVLK driver is not worth the trouble from a pure performance standpoint. It is way slower at Vulkan compute and it is marginally, though hardly noticeable, slower at graphics. The difference in graphics performance is so low that it makes little difference, but AMDVLK is the slightly slower of the two and that is the one you would have to manually download and install..
Compatibility is of course a whole other story. If a game runs like it should with the AMDVLK driver and it doesn't run at all, or crashes, with the Mesa RADV driver then the choice is obvious. AMDVLK is definitively worth trying if you have a Vulkan game that does not work as it should with the Mesa RADV driver that comes with all the modern GNU/Linux distributions. Just make sure you don't accidentally use it if you need to batch-upscale hundreds of images using Vulkan compute, it really is significantly slower in that specific area.
You can get the AMDVLK driver from https://github.com/GPUOpen-Drivers/AMDVLK/releases/ if you happen to be using either a Ubuntu-based distribution or a distribution that can use RPM packages for RedHat 7.8 (they work on Fedora). The MIT licensed source code is also available at that location.