Indeed, they never intended it to be good. cut* funtions are designed only to be used within the SDK and are not meant to be used in user applications. Check the last several dozen posts by tmurray from NVIDIA for the same message over and over again…
I wonder–do people use cutil because we don’t tell them not to explicitly, they see that it’s in the “SDK” and think that it’s actually a part of the CUDA APIs, or are they just using SDK samples verbatim as a starting point?
(one and two are easily solved, three is harder, so if you have opinions, you should let me know…)
I don’t doubt that three is the major source of the problem. For many it appears to be easier to start hacking on the SDK samples that it is to actually read the documentation, especially for those with patchy or non-existent C/C++ chops. Anything you put into the SDK samples (for better or worse) becomes part of the CUDA lingua franca, no matter how broken or bad it is. I would personally put the SDK build system in the same category as cutil.
The build system and cutil from the SDK should not be used by anyone. Maybe I need to talk to the SDK maintainers and have them insert that in the documentation/etc.
I think part of it is convenience - providing the timer routines and SAFE_CALL macros can help speed up initial development (if you’re writing a code from scratch). Also, consider this… the CUDA SDK build system looks scary! The SDK build examples are quite hairy, yet (I think) they are the only concrete examples anywhere in the CUDA package. So it makes sense to build Makefiles off common.mk in the SDK. Doing so immediately gives access to cutil. Perhaps a full “Hello World!” SDK example (in practice, a saxpy or similar), completely independent of the main SDK examples would be very helpful. It could demonstrate emulation and release modes too (via makefile switch).
This is a side point, but I think people would be a lot less confused if the SDK were renamed to something like “CUDA Example Code” or something else. I was initially confused to learn that one does not need or even use the CUDA Software Development Kit to develop CUDA software. :)