2 x GTX-295's and Vista 32 & 64 bit How I fixed seeing only 3 GPU's in CUDA on Vista

For a long period of time I could only get BOINC to see 3 CUDA GPU’s on my 2 x eVGA GTX-295’s. This went on for about 2 months with much hair pulling. Below is the summary I posted to the BOINC and GPUGrid forums. This persisted when I had 2 monitors and 2 Dummy VGA adaters or 1 monitor and 3 Dummy VGA Adapters. I could see I had 4 desktops (and 4 in the control panel with all 4 having the desktop streached) on Vista yet still I had 3 CUDA GPU’s. :-

After I taught myself CUDA I wrote my own program to enumerate the CUDA drivers present and was seeing 3 even though the nVidia control panel and the MMC device panel was showing 4. So it’s not BOINC Manager.

I deinstalled all the nVidia drivers, rebooted and checked in the registry at

Hkey_Local_Machine\Hardware\DeviceMap\Video

to see what I had. There were 3 devices Video0, Video1 and Video2 present which were all standard VGA drivers. I then installed Forceware 185.68 and rebooted.

I now had 10 devices in the registry. I navigated down to

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\

and looked to see what was present. Here we see a list of registry keys like

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video(GPU ID)\0000

where there is a key for each GPU. I searched the list and for each GPU e.g.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video{D82C4D9A-396A-4292-A538-A8F8F22FFEB5}\0000\Settings field (where {D82C4D9A-396A-4292-A538-A8F8F22FFEB5} is a GPU id)

and looked for the words NVIDIA GeForce GTX 295.

I presumed (luckily correctly) that the 1st GPUID with those words i nthe Settings field had the monitor on it. To the following 3 GPU’s I added the following registry keys:-

DisplayLessPolicy DWORD 1
LimitVideoPresentSources DWORD 1

at the

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video(GPU ID)\0000

level in the registry tree and rebooted.

Now I only have 2 monitors showing in the nVidia control panel as having my desktop on them but my own CUDA program shows 4 GPUS. I fired up BOINC Manager which still displays that it found only 3 (due to the string length being exceeded I expect) but I have 4 running GPUS.

A link to an image showing the nVidia Control panel and RivaTuner etc. when only 3 GPU’s were worknig can be found Here