Opened 15 years ago
Closed 15 years ago
#936 closed Enhancement (fixed)
CUDA devices not detected when logged in through Remote Desktop
Reported by: | mart0258 | Owned by: | |
---|---|---|---|
Priority: | Undetermined | Milestone: | Undetermined |
Component: | Undetermined | Version: | 6.6.31 |
Keywords: | Cc: |
Description
In Windows Vista on x64:
Connecting to a system via Remote Desktop (rather than through the primary display) and launching the Boinc Manager (as is normally done on said login) prevents BOINC from detecting any CUDA devices.
Change History (5)
comment:1 follow-up: 2 Changed 15 years ago by
comment:2 Changed 15 years ago by
Type: | Defect → Enhancement |
---|
Replying to Nicolas:
Windows allows logging in locally while you are connected to remote desktop, thus changing the display from a virtual to a physical one. As such, I probably would recommend redetecting CUDA devices when CPU benchmarks are run.
This may be messy if you rerun CPU benchmarks after switching from local to remote. As such, I'm changing the type from defect to enhancement.
comment:3 Changed 15 years ago by
The remote desktop function in Windows uses its own (built-in) graphics drivers. These aren't CUDA enabled. The only way around it is to use a third party app such as VNC (there are free versions such as OpenVNC available), which uses the graphics driver of the computer instead of its own built-in one.
And even if you can go around it by logging in locally on a remote desktop, then you are using the graphics driver of the machine you are using to look at the remote machine. BOINC won't be able to detect this driver, it can only detect the driver on the machine it is used on.
comment:4 Changed 15 years ago by
This problem description can be refined. My experience suggests this behaviour should be able to be resolved, or at least improved, in BOINC. Note: I am running BOINC as a service, not interactively.
My configuration
Windows XP x64 edition; using BOINC x64. nVidia 9800GT. Running BOINC as a service. This host is my primary workstation, so I'm usually logged on locally, but I regularly log in via Remote Desktop from off-site.
Starting BOINC client version 6.6.36 for windows_x86_64 Libraries: libcurl/7.19.4 OpenSSL/0.9.8j zlib/1.2.3 Running as a daemon Running under account boinc_master Processor: 2 GenuineIntel Intel(R) Core(TM)2 Duo CPU E8200 @ 2.66GHz OS: Microsoft Windows XP: Professional x64 Edition, Service Pack 1, (05.02.3790.00) CUDA device: GeForce 9800 GT (driver version 19038, compute capability 1.1, 512MB, est. 65GFLOPS)
Observed behaviour
- Boot host; service starts; CUDA hardware detected; GPU tasks will start; OK.
- Login locally; GPU task continues to run; new GPU tasks will start and run; OK.
- Login remotely via Remote Desktop; existing GPU task continues to run; OK.
- Login remotely via Remote Desktop; a new GPU task will start, but it will immediately fail with the error:
Failed to set low-cpu sync mode # Using CUDA device 0 # Device 0: "Device Emulation (CPU)" # Clock rate: 1.35 GHz # Total amount of global memory: -1 bytes # Number of multiprocessors: 16 # Number of cores: 128 Cuda error in file '..\cuda/cutil.h' in line 968 : no CUDA-capable device is available. Memory usage: host: bytes device: bytes Assertion failed: 0, file ..\cuda/cutil.h, line 968
Comments & Implications
- The CUDA hardware is clearly "available" to the task when BOINC is running as a service, even when the host is accessed via Remote Desktop (as evidenced by the fact that an existing task will continue to run). I understand the issue regarding the RDP video driver raised by Ageless, but I'm not sure that it is actually relevant.
- The assertion at cutil.h, near line 968 seems to be "broken" (Note: I haven't looked at the code yet). The immediate cause of the problem is the assertion failure, but perhaps the assertion test isn't valid/correct/complete.
- There is a nasty corollary to the current behaviour that needs to be resolved ASAP. Once the assertion has failed (e.g. a new task starts during a Remote Desktop session), this will:
a) Continue to error out tasks until the daily limit for the host is reached. This is bad for the project (tasks return a compute error) and uses host/project bandwidth inefficiently, since it downloads tasks that will immediately error out; and
b) Starve the host of work even when the issue is resolved; both immediately (daily limit reached) and in the longer term (reduced future daily limits, since the host is deemed "unreliable"), which is bad for the project and not good for volunteer morale.
I am a programmer (although not C++) and can provide testing resources for this issue if required. I will have a look at cutil.h as time permits, to see if I can suggest a fix.
comment:5 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
This is now fixed in the 6.10 version of the BOINC client.
When you connect through remote desktop, the graphics adapter is a virtual one for remote desktop, not your real CUDA-enabled graphics card. There is no way for BOINC to work around it.