What's new in CUDA 2.1?

I just found the 2.1 beta releases on the download site. Does anyone know what changes are in there? I browsed through the doc/ folder, but did not find any elusive material. I hope the nvcc has become somewhat more stable. :rolleyes: In 2.0 I could get it to crash and/or produce incorrect code quite a few times.

Thanks in advance for any answers,


The release notes included in the toolkit cover this, but the new features in CUDA 2.1 are:

    TESLA devices are now supported on Windows Vista

    Support for using a GPU that is not driving a display on Vista (was already supported on Windows XP, OSX and Linux)

    VisualStudio 2008 support for Windows XP and Windows Vista

    Just-in-time (JIT) compilation, for applications that dynamically generate CUDA kernels

    New interoperability APIs for Direct3D 9 and Direct3D 10 accelerate communication with DirectX applications

    OpenGL interoperability improvements

    Debugger support using gdb for CUDA on RHEL 5.x (separate download)

    Linux Profiler 1.1 Beta (separate download)

    Support for recent releases of Linux including Fedora9, OpenSUSE 11 and Ubuntu 8.04

    Numerous bug fixes

We should be posting an updated FAQ soon that answers this and other questions.

Simon, is it possible to use any older graphics drivers with CUDA 2.1 beside 180.60? I couldn’t find any information on 180.60. In particular, I am interested in 178.24 release which has support for many 6 and 7-series chips. Again, I couldn’t find any information on compatibility of 178.24 with the versions of CUDA. I would like to use 178.24 (or any later one)that supports both 200-series and GeForce 6200 and I wonder what version of CUDA I should use in this case. I would appreciate a word of advice. :)

If you want CUDA_2.1 support, you must use 180.60 (or newer). If you use 178.24, you’re running CUDA_2.0.

The drivers (Vista 64) refuse to install on my 8600M. Will the final version allow us laptop users to use CUDA 2.1?

I certainly would like to use CUDA_2.1. Why would’t I?

Does it mean that I should move to 180.70 then ?

The following site claims that “NVIDIA GeForce 6200” is supported by 180.70:


I wish I could find anything about 180.70 at Nvidia’s web site.

Would you be able to confirm please that I can use GeForce 6200 and GeForce GTX 260 with ForceWare 180.70 (32-bit) ?

As a side note, there is no information at NVidia’s web site that would clarify compatibilities.

A compatibility matrix would certainly help the users to see what valid CUDA_Version-Driver_Version-GPGPU_ProductID combinations exist.

Someone attempted it at http://www.gpugrid.net/forum_thread.php?id=316.

It would be nice if someone at NVidia maintained it.

Thanks for your support.

180.60 is the only released, supported CUDA_2.1-beta driver at this time. A GeForce 6200 should work with that driver as well, however a GeForce 6200 is not a CUDA capable GPU.

I’m not really clear on what kind of information you’re seeking in a compatibility matrix. All GPUs since the GeForce 8800 (G80) have CUDA support. All future GPUs will have CUDA support.

I am not going to run CUDA on GeForce 6200 and I am happy to hear your answer. Thank-you.

Let me explain why I asked my question.

As you know I have to make sure that the NVidia graphics driver (ForceWare) used by CUDA also supports my main graphics card, even though the main graphics card doesn’t have to be CUDA-capable. This is were a potential problem is (in MS Windows only). For example, I can’t use GeForce 5200 with CUDA 2.0, but I still can with CUDA 1.0 and CUDA 1.1. It is tricky, especially when support for the old cards is unexpectedly abandoned.

Also, there is no information on NVidia’s web pages what boards 180.60 supports and I wondered whether GeForce 6200 is supported or not. You did clarify it.

Regarding your statement “All GPUs since the GeForce 8800 (G80) have CUDA support”, do you mean CUDA_2.1 support or CUDA support in general? According to


you don’t support GeForce 8800 GTX.

GPUGrid doesn’t run on Compute 1.0 cards (which is G80). It has nothing to do with our support for a particular CUDA version.

It all comes to backward compatibility and dependencies. If all versions of NVidia software (CUDA and ForceWare) were backward compatible, it wouldn’t be an issue. If we state that they can’t be (for whatever valid reasons), there must be a way to clearly communicate it to the developers through the documentation. This is the reason why I suggested some sort of a matrix to do it.

Unfortunately there is wealth of information at the various sites of NVidia enthusiasts (with all sorts of disclaimers) and Nvidia users’ forums. Authenticity of such information is always in question unless it comes directly from NVidia.

Let me give you a few concrete examples.

Example 1. Software compatibility.

We could use CUDA 1.0 and CUDA 1.1 to develop our application to run on GeForce 8800 GTX, but we couldn’t use Visual Studio 2008 at the time.

Is it true that if we were to move to the newly arrived CUDA 2.1 now, then we won’t be able to build the same application with CUDA 2.1 in order to still run it on 8800 GTX?

I understand that 8800 GTX cards lack the advanced compute capabilities (above 1.0), but it would be nice to be able to install CUDA 2.1 for the development and use this CUDA for whatever capabilities 8800 GTX do have. Is it possible? My understanding is that it is NOT possible. If it is so, than it is not very helpful to say that “all GPUs since the GeForce 8800 (G80) have CUDA support”. Stating all other constraints and limitations on either GPGPU (board) selection or the supported development environment is critical.

Example 2. Hardware compatibility.

We could use FX5200 and 8800 GT while using CUDA 1.1 with ForceWare 175.19.

If we were to move to CUDA 2.0, then we have to move to a newer version of ForceWare (compatible with CUDA 2.0).

Let’s say it is 178.24.

The problem is that this newer ForceWare driver doesn’t support FX5200 any longer.

In fact, I believe that support of ForceWare for all 5-series boards was completely abandoned.

Unfortunately the developers usually don’t know about it until they run into a compatibility problem.

I am sorry for the long message. I am trying to help everybody (me included :haha: )


All CUDA capable cards are fully supported by CUDA 2.1–your understanding that you can’t use 2.1 with an 8800 GTX is wrong. It works fine.

victor_gorin, I suppose you are confused by gpugrid.net FAQ which tells you that

This is not true. CUDA 2.0 programs as well as CUDA 2.1 programs will run on all CUDA-compatible devices. Yes, G80-based devices are lacking some features but there is no way “CUDA 2.0 relies on” them. It is developer who may rely on them, but not CUDA itself.

NVIDIA, maybe it’s a good idea to provide link to driver release notes next to driver doenload link at CUDA Zone (and a separate link for Toolkit relnotes as well)? It may answer a lt of questions and save some bandwidth :)

That’s true. But what you can do is just search for FX5200 drivers (incl beta drivers), and see what comes up. I see you get 96.85, so right away it’s a no-go. 6-series and 7-series turn up 178.24, but not 180.x. So should we assume CUDA 2.1 drivers only work on 8-series and up?

EDIT: then again you say you used 175.19 with FX5200. Wow, this really is confusing.

Thanks for adding this! It saves me from having to call nvcc externally.

I have abandoned the 2.1 driver 180.60 ( or in the case of linux 180.06?) - it was behaving very poorly on my system, which is Suse linux 10.3. As reported elsewhere (though I can’t find it now), the system behaved very sluggishly, with X windows sucking up 100% of cpu. This was particularly apparent when browsing with firefox - which eventually became practically unusable. I have a GTX260 and a Q6600 cpu. I “downgraded” back to 177.73 and the problem has gone away. As I recall, CUDA ran o.k. for my application with the 180.06 driver, however.

One thing I’ve really disliked about previous (well, pre-2.1) versions of CUDA is that even though it is meant to work with Visual Studio, there is not much in the way of integration. Project templates, syntax highlighting, etc. is all provided by forum users, or must be ‘hacked’ in order to work. Since nVidia is adding support for VS2008, I would love to see a more streamlined development process in CUDA 2.1; perhaps just a driver install, then a single SDK/toolkit install that also adds the aforementioned settings to Visual Studio? I know that Windows Installer now supports single installers containing both x86 and x64 binaries, so this shouldn’t be too hard to accomplish.

I’ve also had a heck of a time getting CUDA/VS2005 to work properly on my XP x64 box because the folder structure is a bit different on XP 32-bit vs. XP 64-bit. Spending a bit more time on the installer and VS settings to get it all working ‘out of the box’ would mean a huge deal to me.

nVidia Team – please don’t take my comment too harshly, I love working with CUDA, but the learning curve was quite steep for me due to the troubles I had getting everything integrated into Visual Studio, and I fear that it might scare some people away that might otherwise be able to create some great software with CUDA.

EDIT: One more thing…I read somewhere in the nvcc documentation that there is a switch to get nvcc compile either x86 or x64 binaries, but it was only supported on one platform (64-bit, I think). Since VS2008 lets you switch between target platforms with a simple drop-down, it would be awesome if the switch was supported on both platforms (and again, integrated into VS solution templates), since some developers only have one machine to work with, but need to target both platforms.

Yes, elementary integration into Visual Studio is very important. It is also somewhat trivial to do.

But it’s even possible to create your own stand-alone IDE based on the VS backend via the new Shell feature. That would be very cool and a great way to do branding. It will also allow custom syntax highlighting for the CUDA language and integration with GDB for debugging, as well as just creating a nice, streamlined, user-friendly interface for CUDA (e.g., assign toolbar/menu buttons for various compiler options). This requires knowledgeable .NET programmers, but in VS2008 this is overall pretty easy.

Hmm, getting the debugger on all platforms and getting nvcc bug-free are more important to me ;)
(yeah, I use the matlab editor on linux and run make in a terminal :P)

There are significant installer improvements (plus lots of VS integration improvements) coming in the not-too-distant future. (Including the 32-bit and 64-bit compilation issue–that is possibly the most annoying thing ever.)

I have a .cu file that includes some kernel functions that use templates and a normal cpu function that uses the STL that was compiling fine using the 2.0 driver in Visual studio 2005 SP1. It is a dll (mex).

Here are the .cu build instructions:
(CUDA_BIN_PATH)\nvcc.exe" -ccbin "(VCInstallDir)bin” -c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MD -I"(CUDA_INC_PATH)" -I./ -I../../common/inc -o (ConfigurationName)$(InputName).obj $(InputFileName)

I installed the new driver and toolkit and am now (EDITED had accidentally typed “not”) trying to compile it in vs2008 sp1 but i get the maximum possible number of errors, things like:
1>cuSVMSolver.cu(405): error: inline specifier allowed on function declarations only
1>cuSVMSolver.cu(405): error: incomplete type is not allowed
1>cuSVMSolver.cu(405): error: identifier “vector” is undefined
1>cuSVMSolver.cu(405): error: type name is not allowed

I can compile another CUDA project (less c++) I converted to vs2008 fine.

Any ideas where to look?

Also what other information would be useful?