Diagrams for CUDA kernels?

Let’s assume you are developing some big and clumsy kernel in CUDA. To find order in the messy code, you decide to draw some diagrams. For single-threaded algorithm, flow charts suffice. There are additional constructs to handle multi-threaded algorithms, but this work well with only few threads (unless I am mistaken). CUDA programs however have thousants of threads, each of them doing usually the same work.

So my question is - is there some well defined, proven useful (and not too big) standard on how to draw such algorithms? What would you recommend? Some links please? :)

I have always felt a requirement for “Code Visualization” – It would come handy in MAINTAINING code… THis is especially true of CUDA and parallel technologies…

There r some products who help visualize serial code (google for “code visualization”)…

But if some1 could develop a product for this – it would be HUGE hit! Its a great concept for a startup company.

Code Visualisation sounds like a nice tool (never used it), but I was thinking about a method rather than softare.
I can create diagrams by hand, but just want to know what are standard components of such diagram so that everyone can understand.

I don’t know that there are any widely used standards.

As an example though, I tend to draw the data structures and then add arrows to indicate what the threads are doing and how they progress across the data structure. You can see examples of these (at least for slide presentations) here: http://www.ncsa.illinois.edu/Conferences/a…ors/agenda.html (I’m Joshua Anderson). There are lots of other presentations on CUDA algorithms there, so you can see what other people are doing.

Sarnath: could you please describe “code visualization”, and how can you say it will have a good market.


I got introduced to the concept of “Beer Truck” when I worked as a contractor for a company.

They asked me to document each and everything I did… especially design **** code documentation.

The arhitect explained me that they face the repeated learning curve problems when it comes to software maintenance.

So, the code that I develop today, will be maintained by some other guy tomorrow and so on…
So, he used to say “If tomorrow u get hit by a beer truck, I can still maintain ur code without much problems…”
Of course, in light vein… but it is a big point.

CUDA programs are already complicated… You cant understand ur own code after a happy weekend…
So, I feel this will become a problem soon.
Companies will feel the pinch when they find that new programmers no more understand what the previous
programmer had written…
Its really messy if u dont find a better way to document things… (especially the parallel logic).

So, it is all my personal opinion… You may want to run a FFT on it and filter out the weed frequencies :-)

Try this: http://star-syssolutions.com/Products/Prod…SAD_Studio.html

Version for nVidia are not ready yet, but you can ask anyway.