why CUDA doesn't support Object-Oriented Feature?

I am really a beginner in learning CUDA. This question is what I am confused for a long time.

Anybody can have same question?

Till now we didn’t had OOP support in CUDA. But, coming with Fermi, it seems that we will be having a support for OOP as well! hence, it’s just a matter of time :)

  1. http://www.pcmag.com/article2/0,2817,2353608,00.asp
  2. http://forums.nvidia.com/index.php?showtopic=107896

Thank you so much. Big help!

Note that some object-oriented features already work in CUDA (although they aren’t officially supported). You can use classes and templates, but nothing that requires virtual function calls.

@Simon Green:
That’s interesting! Are there any pointers/examples for this?

this Object Oriented support will apply to G80 and Gt200 cards too? or just fermi ?

As you can see in the second post, Fermi gets support for virtual function calls. So full OOP support is Fermi only.

Some of the SDK examples make use of classes etc.

I posted an OOP based sample in the programming forum. Look for “fun with complex numbers”. It shows you in a relatively clean and simple example what OOP features you can already use.

For more complex use of templates, have a look at the “thrust” template library. It collects a couple of useful algorithms and in many cases mimicks the APIs of the standard template library (STL). Due to the lack of function pointer support, in thrust these are replaced by the concept of so called “functors”, these are template classes that will perform a user-defined action on an object.