>>8
OpenCL and DirectCompute merely call CUDA functions. Both architectures mirrors CUDA to allow Nvidia to minimize their work.
I had SO much more trouble using OpenCL than CUDA. It has a million states that you need to set and things that can go wrong. CUDA is much more straightforward to use. Of course the tradeoff is that OpenCL code will be cross-platform for years to come, whereas CUDA code will only run on Nvidia cards.