I just read that the CUDA is a stream programing language.I have the idea of data and thread parallelism but still i have know clear idea about stream programing (kernels,input output streams).I would be very thankful if somebody can describe a little about stream programing
I asked myself this question, and I found that GPU Gems 2 Chapter 31 “Mapping Computational Concepts to GPUs” by Mark Harris gave a good answer to it along with Chapter 33 (Aaron Lefohn et al). Although these articles apply to traditional GPGPU it helped me map the ideas over to CUDA. Moreover, Owen’s et al 2007 “A Survey of General-Purpose Computation on Graphics Hardware” gave more insight, yet it does not consider CUDA either. A good starting point is to understand what stream programming actually is, and there is also a Wikipedia article (http://en.wikipedia.org/wiki/Stream_programming) which might give you a good definition. Also note the references therein.
Sorry for not describing stream programming itself - it might probably be too long here, but I guess the articles above should help :-)