11-08-2011, 12:45 PM
[attachment=15218]
[attachment=15219]
ABSTRACT
With multi-core processors gaining popularity in the hardware industry, it has become necessary for software technologists to write parallel applications to exploit the full potential of the multi-core architecture. Many programming languages provide hardware specific constructs and libraries to facilitate parallel programming. These constructs can be integrated in a program either by the compilers (auto-parallelizing compilers) or manually by the programmer. Performance delivered by auto-parallelizing compilers is poor as compared to the manual parallelization of programs because of their lack of information about the algorithm and the problem. Since parallel programming has a steep learning curve, we cannot expect domain engineers to quickly learn parallel programming.
Great success of design patterns in object oriented programming attracted the attention of researchers to use them in parallel programming. A lot of attempts have been made to educate programmers about parallel patterns and several research tools have been developed to support pattern (template) based programming. Major shortcomings of these tools are: lack of performance, extensibility and complexity of learning these tools. Generally, patterns offer generic solutions which include additional run-time overheads and most of the tools provide no support for hand-tuning of the generated code to improve performance.
In this work we have used parallel patterns to build a parallel programming plug-in for Eclipse which will help users in writing parallel programs without learning parallel programming constructs. With the help of hints provided by the programmer, our tool transforms users sequential code to parallel code. We have also provided the support for template based parallel programming. The tool provideds a tree view and source view of the program. A programmer can visually transform his sequential code to the parallel code using the tree view and the parallelization actions. Programmer can further hand-tune the generated code using the source view. The tool also helps programmer in learning the usage of parallel constructs and libraries by giving user a look at the generated high-level parallel code.