Question: i wrote a cuda program and i am testing it on ubuntu as a virtual machine. the reason for this is i have windows 7, i don't want to install ubuntu as a secondary operating system, and i need to use a linux operating system for testing.
my question is: will the virtual machine limit the gpu resources? So will my cuda code be faster if i run it under my primary operating system than running it on a virtual machine?

Answer: 
Unfortunately the virtual machine simulates a graphics device and as such you won't have access to the real GPU. This is because of the way the virtualisation handles multiple VMs accessing the same device - it provides a layer in between to share the real device.

It is possible to get true access to the hardware, but only if you have the right combination of software and hardware, see the [SLI Multi-OS site](http://www.nvidia.co.uk/object/sli_multi_os.html) for details.

So you're probably out of luck with the virtualisation route - if you really can't run your app in Windows then you're limited to the following:

1. Unrealistic: Install Linux instead
2. Unrealistic: Install Linux alongside (not an option)
3. Boot into a live CD, you could prepare a disk image with CUDA and mount the image each time
4. Setup (or beg/borrow) a separate box with Linux and access it remotely
I just heard a talk at NVIDIA's GPU technology conference by a researcher named Xiaohui Cui (Oak Ridge National Laboratory). Among other things, he described accessing GPUs from Virtual machines using something called gVirtuS. He did not create gVirtuS, but described it as an opensource "virtual cuda" driver. See following link:
<http://osl.uniparthenope.it/projects/gvirtus/>

I have not tried gVirtuS, but sounds like it might do what you want.