I am attempting to remotely run an application that utilizes CUDA. The application is rpcminer-cuda.exe, from the RPCMiner suite. It’s CLI driven and I am able to run this program locally, but when attempting to execute remotely, I receive an error:
Unable to initialize CUDA.
The code I use to run this application is very straightforward and works for other applications:
import wmi
c = wmi.WMI(computer="HOSTNAME", user="USER", password="password")
c.Win32_Process.Create(c:\rpc\rpcminer.exe -flags)
I have investigated and discovered that CUDA leveraging software can not be ran from remote desktop. I do not understand how that is relevant to my ability to execute this over WMI calls. Is there a way to overcome this limitation of CUDA or manually initialize it?
The primary issue is that by default NVIDIA GPUs on Windows Vista and above use the Windows Display Driver Model (WDDM). When the user is not the console then Windows replaces the GPU driver with the remote desktop driver and CUDA fails to find a valid device.
If you have a Quadro or Tesla card you can consider using the Tesla Compute Cluster (TCC) driver as this is not based upon the WDDM driver. See http://de.download.nvidia.com/Windows/Quadro_Certified/295.73/295.73-Win7-WinVista-Quadro-Tesla-Release-Notes.pdf.
If the GPU is configured to use the WDDM driver (default on Windows) then you can run your own server process on the system and request it to launch the CUDA process bypassing the WMI issue.