Online Tutorials:
Dr. Dobbs - CUDA, Supercomputing For the Masses: http://www.drdobbs.com/high-performance-computing/207200659
GTC Video Tutorials / Presentations: http://www.nvidia.com/object/gpu_technology_conference.html
University Courses:
GaTech ECE4893 - Multicore and GPU Programming for Video Games (not CUDA specific, but covered): http://users.ece.gatech.edu/lanterma/mpg/
UIUC ECE498AL - Applied Parallel Programming: http://courses.engr.illinois.edu/ece498/al/
Books:
Programming Massively Parallel Processors: http://www.amazon.com/Programming-Massively-Parallel-Process...
CUDA By Example: http://www.amazon.com/CUDA-Example-Introduction-General-Purp...
If you decide to go the CUDA route, as opposed to OpenCL, then NVIDIA has a lot of solid documentation that will help you get to a "Hello, World" level pretty quickly. This StackOverflow thread should help if you choose to go with an AMD OpenCL solution: http://stackoverflow.com/questions/780978/opencl-books-tutor.... Personally, I would stick with NVIDIA; they seem much more dedicated to advancing the cause and you have support for both API's.
A good book about CUDA is:"CUDA by Example"
However you should bare in mind that coding for OpenCL is, at least now, an order of magnitude more complicated (personal opinion) than CUDA programming.
With CUDA if you already know C is straightforward to get started.
http://mathema.tician.de/software/pycuda
even Matlab has some bindings for CUDA:
http://developer.nvidia.com/object/matlab_cuda.html
Bare in mind however that the original CUDA implementation uses C, so if you want the last drop of performance you will use C.
Open source Python library that automatically generates linear algebra code for the GPU, pretty awesome, seems to be a bit slanted toward machine learning but is not specific to it: http://deeplearning.net/software/theano/
Simpler GPU programming with Python (somewhat more low-level, but more friendly than using the plain C API): http://mathema.tician.de/software/pycuda