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 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 :-)