CUDA with no hardware


    I just started looking at CUDA an currently have no GPU hardware. Apparently you can run code with an emulator that is part of the dev kit. I'd like to know, other that knowing that you code works properly, if the emulator can be used to perform any kind of performance analysis on how fast your algorithm would run on specific GPU hardware. 

For instance, can you specify a device to emulate (ex GTX 280?). I understand that some things would probably be impossible to estimate (ie : host to device bandwidth etc) but I figure that it might be possible to get some numbers on anything that is internal to the device.

Can anyone help me out on that one ?

Thanks a lot for your time


The emulation mode is a lot less exciting than it sounds. All it does is compile your device code to run on the host in a straightforward, but spectacularly inefficient way. Emulation is good for allowing you to debug your device code with host debuggers that you are familiar with and running memory checkers like valgrind. Correct operation in emulation mode does not guarantee correct operation on the device because the emulation can hide race conditions that will cause incorrect results on the device.

Moreover, the performance in emulation mode has basically no correlation with the performance on a real CUDA device. You should not use emulation mode to benchmark anything, really.

You can get something of a handle on speed by using the Occupancy Calculator, to see how many blocks / threads can be “live” on each GPU given your current register usage and block dimensions, etc.

However, I’d start reading code and really try to get a good, intuitive understanding of how to do things in CUDA and how to make them fast.

I must mention that you should be able to scrape together some kind of CUDA-capable system for cheap … the Geforce 8000 series can probably be found in various used gamer rigs coming from people who are a bit short on cash these days … That way, you can run the profiler, and you’re in a much better position to estimate speed on a higher-end card. Also, it’s been known to happen that people here on the forums with different cards and setups have speed tested each other’s programs …

Thanks for the info guys.

                                I wanted to start playing now ... looks like I am going to have to start putting a rig together before. I'll keep reading in the meantime



The 8800 GT is quite a respectable device and is appears to be available on eBay for < $100. That wouldn’t be a bad starter card if you are looking to save money.