CUDA on external GPU?

I’m planning on getting an external set-up of GTX460 because a desktop would be very inconvenient for me since I spend most of my free time in a hostel.

While the external set-up for GTX460 has been proven to have no problem with games, I’m not sure if it would work with CUDA. Basically, my connection will be done through a single-lane mPCIe port. I wouldn’t care about the slow transfer between host and device memory, I’m just worried that the set-up may not work for CUDA at all. (I remember reading from somewhere that for CUDA programs to run successfully another Nvidia GPU/motherboard would be needed, apart from the main GPU on which CUDA runs, so that the normal system graphics processing can be done on that Nvidia GPU/integrated unit)

Is there anyone who has any idea of why CUDA wouldn’t work with such a set-up?

Also, I’m sure some other people have been looking for this kind of external set-up for CUDA too. I’ll get the external accessories in 2 weeks and will then try to beg some retailers to let me try with an actual GTX460 to see how it works.

I’m planning on getting an external set-up of GTX460 because a desktop would be very inconvenient for me since I spend most of my free time in a hostel.

While the external set-up for GTX460 has been proven to have no problem with games, I’m not sure if it would work with CUDA. Basically, my connection will be done through a single-lane mPCIe port. I wouldn’t care about the slow transfer between host and device memory, I’m just worried that the set-up may not work for CUDA at all. (I remember reading from somewhere that for CUDA programs to run successfully another Nvidia GPU/motherboard would be needed, apart from the main GPU on which CUDA runs, so that the normal system graphics processing can be done on that Nvidia GPU/integrated unit)

Is there anyone who has any idea of why CUDA wouldn’t work with such a set-up?

Also, I’m sure some other people have been looking for this kind of external set-up for CUDA too. I’ll get the external accessories in 2 weeks and will then try to beg some retailers to let me try with an actual GTX460 to see how it works.

I have no experience with external GPU devices, but CUDA programs run just fine on the primary display GPU. The only limitations are that individual kernels cannot take longer than a few seconds to run, and you cannot use the hardware debugger.

I have no experience with external GPU devices, but CUDA programs run just fine on the primary display GPU. The only limitations are that individual kernels cannot take longer than a few seconds to run, and you cannot use the hardware debugger.

But if my laptop has an ATI GPU as its primary GPU, would I be able to run kernels continuously on the secondary GTX460?

is it that the GTX460 would lock itself when it sees another ATI card being active? If that’s the case, maybe I could remove the ATI driver and use Win7’s driver for the ATI GPU?

But if my laptop has an ATI GPU as its primary GPU, would I be able to run kernels continuously on the secondary GTX460?

is it that the GTX460 would lock itself when it sees another ATI card being active? If that’s the case, maybe I could remove the ATI driver and use Win7’s driver for the ATI GPU?

The first thing you have to worry about is whether your computer manufacturer disables the on-board GPU when an external one is present. There are reports of some Dells turning off the on-board GPU (which is probably an Intel or worse) when a discrete GPU is present.

If the BIOS isn’t turning off the primary GPU when the external one is present, then the next thing you have to worry about are OS drivers. If you can have both the NVIDIA and ATI drivers present at the same time, then everything “should work.” On Linux, this is trivial, and I’m told this should work on Win7, but I also have never tried it. Windows XP, however, can’t handle this.

The first thing you have to worry about is whether your computer manufacturer disables the on-board GPU when an external one is present. There are reports of some Dells turning off the on-board GPU (which is probably an Intel or worse) when a discrete GPU is present.

If the BIOS isn’t turning off the primary GPU when the external one is present, then the next thing you have to worry about are OS drivers. If you can have both the NVIDIA and ATI drivers present at the same time, then everything “should work.” On Linux, this is trivial, and I’m told this should work on Win7, but I also have never tried it. Windows XP, however, can’t handle this.

Hmm… we’ll see how it is when I do the actual test.

Hmm… we’ll see how it is when I do the actual test.

CUDA is working fine already, though Nsight is still giving me trouble. I have my ATI card as primary and the GTX 460 secondary, but Nsght still says that it cannot work on my computer because only one graphics card is detected…

Anyone has any idea how to fix this? I don’t want to use printf forever…

My ATI card is connected to a PCI-e port on the northbridge

CUDA is working fine already, though Nsight is still giving me trouble. I have my ATI card as primary and the GTX 460 secondary, but Nsght still says that it cannot work on my computer because only one graphics card is detected…

Anyone has any idea how to fix this? I don’t want to use printf forever…

My ATI card is connected to a PCI-e port on the northbridge

I asked a similar question on the NSight forum, and got this answer. It worked for me. I think it might fix your problem.

  1. Under Nsight options in VS, under CUDA > Override local debugging checks settings, set it to True. This will overcome the “only one GPU detected on the system” problem. Also please make sure your laptop display is driven by the integrated graphics and not the NVIDIA GPU.

(Taken from http://forums.nvidia.com/index.php?showtopic=176206)

I asked a similar question on the NSight forum, and got this answer. It worked for me. I think it might fix your problem.

  1. Under Nsight options in VS, under CUDA > Override local debugging checks settings, set it to True. This will overcome the “only one GPU detected on the system” problem. Also please make sure your laptop display is driven by the integrated graphics and not the NVIDIA GPU.

(Taken from http://forums.nvidia.com/index.php?showtopic=176206)

Thanks rjl! Now it’s working for me too!

Anyone interested in hearing the full story of how to get a gtx 460 to run on a normal laptop?

Thanks rjl! Now it’s working for me too!

Anyone interested in hearing the full story of how to get a gtx 460 to run on a normal laptop?

Yes, that would be nice

Yes, that would be nice

Actually I wouldn’t recommend this unless you have a really tight budget and definitely cannot work with a desktop. Also, if you don’t need to run CUDA with some decent speed, you could just get a $400 Ion laptop.

Anyway, here’s how to set up a GTX 460

First, read through this thread:
DIY ViDock Experiences
It lists most of the things that you’re going to need and gives you a rough idea of how things are going to work.

Things needed:

  1. gtx 460
  2. PE4L/PE4H+PC2C/EM3M adaptor from www.hwtools.net
  3. A power supply that can handle more than 20A (better be 25+A if using GTX 480) on its second rail or just a single-rail PSU greater than 300W
  4. Download DIY ViDock Setup 1.x from the repository and follow the instructions in that page.
  5. Download RW-everything from jacky5488.myweb.hinet.net

When you have all the things above and have completed the steps listed in the DIY ViDock Setup page, you’re ready to get started.

  1. Short the PS_ON on the 20(+4)pin connector of the power supply, so the PSU would start working. www.techpowerup.com/articles/other/22.
  2. Connect the 4 pin connector to the PE4L/PE4H; mount yout graphics card on PE4L/PE4H. Now you should see the fans of your graphics card running.
  3. Connect the other 6pin connectors to the graphics card. For GTX 460 and above, there should be 2 6pin connectors. Also, connect the PE4L/PE4H to the PC2C/EM3M
  4. Boot your laptop without the PC2C/EM3M connected to the laptop. Enter the DIY ViDock Setup Boot menu. This will take you to a DOS program with some menu
  5. [may not be needed] choose pci config -> run compaction.
  6. connect PC2C/EM3M to your laptop, press F5, you should see a NVIDIA card being listed on the right hand side of the screen.
  7. choose videocard -> create PCI dump win (for the NVIDIA card, it may be vid 2, if you have another card onboard). This will give you the instructions of how to get the PCI dump of your NVDIA card. Follow these instructions.
  8. Boot to the setup menu again, load the PCI dump and do compaction. Now Chainload into your OS (better be win7), it should work.

There are many other issues you may encounter, such as whitelisting and so on… read the help in the setup menu or in the threads and you should be fine.

Note that when you boot your laptop you better do it without the PC2C/EM3M connected to it. Otherwise it would either hang or boot with your laptop LCD off (fine if you have another monitor connected to your NVIDIA card)

Actually I wouldn’t recommend this unless you have a really tight budget and definitely cannot work with a desktop. Also, if you don’t need to run CUDA with some decent speed, you could just get a $400 Ion laptop.

Anyway, here’s how to set up a GTX 460

First, read through this thread:
DIY ViDock Experiences
It lists most of the things that you’re going to need and gives you a rough idea of how things are going to work.

Things needed:

  1. gtx 460
  2. PE4L/PE4H+PC2C/EM3M adaptor from www.hwtools.net
  3. A power supply that can handle more than 20A (better be 25+A if using GTX 480) on its second rail or just a single-rail PSU greater than 300W
  4. Download DIY ViDock Setup 1.x from the repository and follow the instructions in that page.
  5. Download RW-everything from jacky5488.myweb.hinet.net

When you have all the things above and have completed the steps listed in the DIY ViDock Setup page, you’re ready to get started.

  1. Short the PS_ON on the 20(+4)pin connector of the power supply, so the PSU would start working. www.techpowerup.com/articles/other/22.
  2. Connect the 4 pin connector to the PE4L/PE4H; mount yout graphics card on PE4L/PE4H. Now you should see the fans of your graphics card running.
  3. Connect the other 6pin connectors to the graphics card. For GTX 460 and above, there should be 2 6pin connectors. Also, connect the PE4L/PE4H to the PC2C/EM3M
  4. Boot your laptop without the PC2C/EM3M connected to the laptop. Enter the DIY ViDock Setup Boot menu. This will take you to a DOS program with some menu
  5. [may not be needed] choose pci config -> run compaction.
  6. connect PC2C/EM3M to your laptop, press F5, you should see a NVIDIA card being listed on the right hand side of the screen.
  7. choose videocard -> create PCI dump win (for the NVIDIA card, it may be vid 2, if you have another card onboard). This will give you the instructions of how to get the PCI dump of your NVDIA card. Follow these instructions.
  8. Boot to the setup menu again, load the PCI dump and do compaction. Now Chainload into your OS (better be win7), it should work.

There are many other issues you may encounter, such as whitelisting and so on… read the help in the setup menu or in the threads and you should be fine.

Note that when you boot your laptop you better do it without the PC2C/EM3M connected to it. Otherwise it would either hang or boot with your laptop LCD off (fine if you have another monitor connected to your NVIDIA card)