While the potential of the NVIDIA GPU’s is impressive, I have some major concerns about investing my and my colleagues’ time and effort into rolling out the CUDA technology in our firm.
[list=1]
[*] The CUDA development software (NVCC) is not supported by NVIDIA. I would like to hear someone argue otherwise. The forum is loaded with posts of people who have experienced problems with NVCC, very few of them are answered, let alone addressed. There is no channel by which a user can pay NVIDIA for extended, direct one-on-one support, whether by phone or email.
[*]The CUDA software is not open-source. If NVIDIA does not support the software, what about the user community? NVIDIA has not released the source code for the NVCC package. The only source code which has been made available is NVIDIA’s modifications to Open64 (nvopencc). There is no current or correct documentation for this package, and as far as I can determine, it cannot be built on Windows in its current form (using cygwin, mingw, or whatever you propose). Again, if someone can argue otherwise, I would love to hear it.
[*] There are almost no CUDA debugging tools. Yes, I know that NSight is in beta (with no release date announced), but there are no debuggers for Linux, and the Emulation libraries are deprecated and slated to be removed. Also, NSight is not supported on Windows XP or on Visual Studio 2010.
[*] There are almost no CUDA optimization tools. The optimization strategy for CUDA, and GPU’s in general, seems to be “try it; change it; rerun it until it’s fast”. The profiler is not useful for trying to understand what is happening inside the processor.
Contrast this situation with Intel, who not only has a well supported software product (Intel C++ Compiler, Threading Build Blocks) but also provides excellent software support through their website. I understand that Intel C++ is a purchased product (as opposed to the free NVIDIA CUDA tools), but I would be certainly willing to pay NVIDIA for their software if it would make it usable in a corporate environment.
The alternative for GPU’s is of course OpenCL, which has a smaller user community, no debugger, and apparent performance issues.
While the cost of hardware in $ per GFLOP is much less for the GPU’s then for multicore CPU’s, it is not clear that this cost savings will offset the many weeks of trial and error to get our software running.
I would like to hear other opinions on this.