We continue to get questions and suggestions from users -- thanks for your input! Some of the same questions have come up, so I thought I'd try to address them here.
To get some extra information on the GPU hardware (including memory available), you can do the following:
IDL> cardID = 0L ; the card ID you want to know more about
IDL> err = cudaGetDeviceProperties(prop, cardID)
IDL> print, prop.name
IDL> help, prop, /struct
The wrapper is a bit rough (it's a low level CUDA function), but it gives you a lot of useful information. Remember that your application will be limited by the amount of memory available on the GPU card -- if you go past this limit, you'll get unpredictable behavior.
We've also had some questions about the difference between CPU and GPU calculations. Right now we're shipping the library with the 'enable-fast-math' option turned on in CUDA. This uses the fastest, but least IEEE compliant form for floating point operations. It could easily be turned off and still yield good performance (as we're mainly memory bandwidth limited), and we may switch to this build method in the future. Hard numbers for the precision of GPU calculations can be found in the the CUDA user manual. In one of the appendices it has some documentation on the error bounds of the individual functions. It's usually within the last two bits of the mantissa.
Finally, som users are looking at investing in new hardware on which to run GPULib, and were looking for recommendations and comparison for different CUDA-enabled hardware. A starting point for evaluating such cards is at
Cost runs from left to right, performance runs roughly from top to bottom. If double support is important for your application, you have to go with either a GTX 260/280, a C1060, or the FX5800 right now.
If you have any questions about this (or anything else related to GPULib), feel free to post comments below, or email the user's list or Tech-X support. We're still working on the next release (1.0.4), and we'll let you know as soon as it's available.