Parallel Programming Concepts

6. Serial to Parallel

There are a number of bottlenecks typically encountered in the transition from serial processing to parallel processing. One of the most pernicious is that of mindset: people who have been in the computing business for a long time are understandably reluctant to have to learn a new way of designing their codes, and an efficient parallel algorithm often has little similarity to an efficient serial algorithm. The very first task in the conversion effort is to step way back from the existing serial application, and re-examine the intent it was written to serve: can this task be effectively and efficiently performed in parallel, and, if so, how best can that be accomplished?

Very often existing serial code has to be almost completely ignored, and the parallel version written virtually from scratch. This can be a major commitment of resources, and for some dusty-deck codes the projected return from such an investment is often considered to be insufficient to warrant the effort.

However, once the decision has been made to move from serial to parallel, the real nitty-gritty work of code conversion can very often be helped along by application of the growing number of automatic tools, well seasoned by the manual use of hard-learned rules of thumb.