GPU fails on Azure VM cloud server with Tesla Cards

I’m trying to do Pixel Streaming on a Microsoft Azure VM. I’ve chosen GPU instances that have Tesla cards. When I launch UE4 projects I get this error:

“DX11 feature level 10.0 is required to run the engine.”

I updated the drivers on the VM instance and dxdiag reports that DX12 is running with level 10. I’ve read that the DX12 install also installs DX10 and DX11 as well, so the machine meets the requirements.

I’ve tried a couple of different VM machine configurations and all of them fail. There are a couple of threads in the UE Forums that address this. One suggests it was solved but the link to the solution is bad. Others are left dangling and no solutions are given. I’ve read a few threads on the web about people streaming on Azure VMs so I know someone has figured it out.

Has anyone had this problem and solved it?

Anybody? Also looking for an answer…

I’m part way there but sill can’t get streaming to work. I got past the DX11 issue by creating an instance and making sure to use the GRID drivers for the GPU. Once I did that, the DX11 feature error went away. Even after that and opening up ports 80 and 8888, I could never get streaming to start. I didn’t get errors, it just would not start. Pixel Streaming worked fine if I used my local machine as a server and I set up the Azure the same way, but there was something blocking it that I could not find.

I was out of time as I spent 3-days trying to get it going so I had to change my project and deliver it a different way. Maybe I’ll try it again one day but it’s obviously not easy to set up unless you are an enterprise technician for a living.

You have to set your GPU to WDDM mode via cmd (by default it’s in TCC mode).

  1. Spin up your VM
  2. Open up CMD with admin rights
  3. While in cmd cd to C:\Program Files\NVIDIA Corporation\NVSMI folder, and run nvidia-smi. This will get you a table that gives you both what mode your Tesla is set to (which will be TCC by default, check under the heading TCC/WDDM), and the GPU_ID, which is the thing under the Bus-Id heading.
  4. Run nvidia-smi -g {GPU_ID} -dm {0|1} with your Bus-Id and 0 to set it to WDDM, like so:

nvidia-smi -g B794:00:00.0 -dm 0

Might need to restart VM. Your GPU will now be recognized and ready to run your apps.

This is really good information. I’ll incorporate it into my workflow. I’ve had to find another solution but soon as I need a VM again I’ll try it. Thank you.

Attacking this again. The suggestion posted by @VirtualLilies is not working for me. When I run ‘nvidia-smi’ it crashes the system and I have to log in again. I’ve tried it 20 times different ways and no luck.

So, I’m still looking for a solution.

Edit: I have something that is starting to work—

I created a Microsoft Azure NV6_Promo VM. During the setup, in Advanced, you need to add an ‘Extension.’ Once in that area, find the ‘NVidia Extension.’ It will inform you that it installs the CUDA or GRID drivers for the Tesla. By default, the NV instances get the GRID driver and that’s what you need to run UE. I have the VM running and I don’t get the video error and Built UE content will now run. These instances are more expensive than I wanted but at least I have something going. Now I just need to configure Pixel Streaming and I’ll be good to go.

I successfully set up Pixel Streaming with NV6 (M60) and NVv4 (MI25). The only two options imho usable for this streaming scenario. All other VM series are more oriented towards GPU computing of AI, ML, Mining, etc.

  • For the NV6 I just used the extension and it installed the CUDA drivers. No changes to nvidia-smi needed.
  • For the NVv4 there is currently no extension, however, following the documentationto install the driver worked fine.

However, although streaming is working fine, the value you get is rather bad. Azure is more focusing on computing workloads. From a pure rendering performance perspective, the VMs are somewhere comparable to older, mid-range end user GPUs, e.g. GTX 970. The additional shared memory does not yield much additional value for this scenario.
Still waiting for more streaming-oriented VMs.

Btw I also tried Unitys RenderStreaming solution on Azure. Not much difference (besides only working on NV6 since AMD is not supported yet). Unreal Pixel Streaming is subjectively is a bit more stable.