CUDA device blocks or doesn't block?

This might be a pretty stupid question, but here goes.
We’re planning on buying a CUDA card, but first we want to check if it will suit our needs.
The problem is that the box that would have the card would be used by a person as a workstation, while another person would do the coding from a remote workstation (through an NX session probably).
The question is, would the first person notice any blockings, or any other inconvenience from the other person doing calculations on the card, or not?
This is important because that box can only have one graphics card.
Thanks in advance!

The person sitting at the CUDA box will be logged into the local X server. So this X server owns the cards resources. A remote login (ssh shell or virtual NX server) will not be allowed to access these resources.


Not good news, but thanks anyway. :)

Why not make the remote person code the program using the emulator and then check that it works on the device once in while?



I don’t quite understand the previous responses. I am new to CUDA development, but I can tell you that when I VNC into my Linux box, I can run my code. In fact, the box is in the server room and I only VNC into it.

Maybe I’m missing something here …

Of course, trying to play UT2004 on it doesn’t work… Is that what you folks are referring to?

VNC is not much pleasure for someone sitting at the remote machine (although fighting for the mouse and concurrent keyboard typing can be fun :) ). If you have a headless server, VNC is one solution. Although you could use CUDA without X in that case also.


That has not been my experience. I develop and run CUDA code remotely via ssh on a machine with RHEL4 and an 8800GTX, and the console user does notice some graphics slowdown when I run intense processes. I see only a 2% increase in compute speed when there is no console user and no X display (headless).

I can’t remember offhand if I had to set anything funky, like “xhost +” or something like that. I think I had to “su” and run my CUDA code once before running CUDA procs as me.


Well our application won’t be a graphical, we’ll be just using the GPU to help in some intense calculations, like the seti@home and folding@home projects, so no graphical output, just a bunch of calculations.

Could we do that in our setup?

By the way AFAIK VNC can be set up to use a different screen (like :1), so the person on the primary screen won’t be affected.

Thanks for the quick replies. :)

Yes, it is possible to run CUDA programs from a remote login (ssh).

The performance you will get depends on what the user sat at the machine is doing. I wouldn’t recommend it if they’re running graphically intensive applications (e.g. Maya), but otherwise it should be okay.

The X-server does use some of the GPUs resources, but it is just one client of the GPU.

OK, I had the impression that the remote user actually needs GL graphics output as you said you want to run an NX session. If that is not the case you don’t need NX or VNC at all, as mstock and Simon said you can simply ssh into the machine. If the app opens a window (Xlib drawing only), just pipe the X protocol to you local machine (ssh -X will set the remote display forwarding correctly).

@mstock: you can make the remote user suffer from slow graphics response times. Tried myself :) This happens very easily if you do bulk bus transfers (and maybe lock memory pages).


Don’t forget that the CUDA driver uses 100% of 1 CPU core while a kernel is running so this will impact upon the workstation user. Would be friendly to drop your priority.

This will no longer be true on CUDA 1.0.