Tesla K80 loses Vulkan after passthrough

A bizzare problem to be sure…

I recently got into video AI upscaling with open source Tools like video2x. But with the current GPU market being what it is right now, it was not really possible to buy a RTX 3060 or the likes and put it into a linux server. So I went to ebay and bought a Nvidia Tesla K80. It was much cheaper than anything else on the consumer market and it would be put in a linux server at the end anyways, mitigating the missing display outputs.

By now I know that the K80 is a special kind of GPU that has special needs (e.g. did not work with an old amd fx system).
I managed to get it to work quite well in my Setup:

  • Asus x399 Prime
  • Threadripper 1950x
  • 32 GB 3200mhz corsair RAM running with XMP
  • Manjaro Linux
  • 1700 watt enermax PSU

I usually use Debian, but as video2x is kinda difficult to install on linux, I chose manjaro as it had a package in the AUR ready.

On Linux everything worked quite well. But i had some depedency problems which led to some upscaling algorithms not being available. So I turned to virtual machines and gpu passthrough to a win 10 guest.

That is working fine so far, though for some reason Vulkan is not working anymore. And for the life of me i cannot figure out why. On Linux Vulkan was working fine.
What i’ve tried so far:

  • trying out different Nvidia driver versions, especially the ones mentioned by the video2x dev
  • trying different tool versions of the upscaling software
  • tried different slots on the motherboard, to see if the card behaves differently
  • tried the “code 43” workaround if that helped in any way
  • tried to specifically assign the K80 as GPU for the upscaling software so that it does not try to use the virtual screen’s gpu
  • installed vulkan runtime and vulkan sdk separately

The weird thing is that this tester here: GitHub - skeeto/vulkan-test: Test if your system supports Vulkan runs successfully in the vm, but something like vulkan-info fails …

What i just thought of, is that i am using the vfio kernel of manjaro, i might try to use the default one. Ended up using vfio kernel because of iommu group issues and the board not booting randomly but that has been resolved and i might get away with a vanilla kernel.

Edit1: I only passed through one of the K80 chips, as the K80 is a dual GPU. The guests or vfio could not handle both gpus on one vm. Using 2 separate guests, each with a single K80 chip works fine and both of them can work on separate upscales.

Interested in a similar kind of setup, did you get any further with it?

Legit just created an account to respond to this to this, I should be able to figure out what your problem is with a program I’m building, and I want to help you because I’m considering getting a K80 and I want to get more info on the GPU’s capabilities before I commit to buying it.

The program sets up a Vulkan environment from scratch, its halfway complete but when it is it’ll be a slightly modified version of code from a tutorial. It diverges slightly from the tutorial one because it includes a couple extra things that make it easier to debug.

I tried to link the tutorial but it wouldn’t let me, it should be the first result if you search Vulkan Tutorial: Introduction