I am doing some experiments with two GPU Cards:
Card A: GeForce GTX 560 Ti Card B: GeForce 9800 GTX+ Setup: an Asus Mother Board with Intel Core i7 that supports SLI Intended Experiment: Use Card B for all graphic purpose usage such as display the OS and applications; Use Card A solely for GPU Kernel computations
I know both cards are pretty old, but I think they are set up alright as far as I can tell - I can see them in the Device Manager, as well as when I run CUDA query about the devices
My question is this:
is there a way to absolutely 'turn off' Card A for any other purposes in the OS, and Card A will only be 'triggered' to run CUDA kernel when cudaSetDevice() 'targets' at it?
So far, the naive way I used is just to connect 1 monitor to Card B. This approach seems to work - with the Card B incurs some GPU memory activities and GPU Load when playing youtube videos on the monitor and no such GPU activity were detected on Card A. And as soon as I run some CUDA code with cudaSetDevice() 'targets' at just Card A, it incurs some GPU activities.
But I assume there must be some more accurate way to do this. Could someone give me some pointers, if it is relates to play with the BIOS, it will be appreciated if you can provide me with some details as I have done little of that in the past.
Extension to My Question (I guess):
Is there a way to really switch between two NVidia GPUs (I think this should be a separate question to the ones associated with the much talked about NVidia Optimus Technology where an Intel GPU unit is involved, isn't it?)
cudaSetDevice(int n)
function call to choose the same GPU each time? The device offsets should stay the same between subsequent runs, but you can also use thecudaChooseDevice
function to match to a particular card based on it's specifications. However, given you're programmatically doing this, why not just have a piece of code select the GPU as opposed to physically plugging/unplugging a cable from the GPU?