Increasing Parallelism on multicore processors using Induced Parallelism

Multicore processors give an opportunity to increase the performance of software programs by parallelizing them. However, it is not enough to have the hardware capability of parallelization through multicore. It is equally important to exploit this in software. The problem is compounded if there is a legacy sequential code written for a single processor. Parallelization can be achieved by executing different threads of a program on multiple cores. In this paper, a technique of Induced Parallelism is proposed to increase performance of branch statements like if-else. After resolving the dependencies between ‘if’ and ‘else’ block, new tasks formed from these blocks, are run on idle cores ahead of their actual execution time. Hence this technique improves performance of a program in terms of time, in spite of redundant execution of a section of the code. It can be extended to other branch statements for increasing parallelization of existing code.

[1]  Hironori Kasahara,et al.  Automatic Coarse Grain Task Parallel Processing on SMP Using OpenMP , 2000, LCPC.

[2]  Huiyang Zhou,et al.  A case for fault tolerance and performance enhancement using chip multi-processors , 2006, IEEE Computer Architecture Letters.

[3]  Andrew Lumsdaine,et al.  PFunc: modern task parallelism for modern high performance computing , 2009, Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis.

[4]  Hierarchically Tiled Array Vs. Intel Thread Building Blocks for Multicore Systems Programming , 2007 .

[5]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[6]  Scott A. Mahlke,et al.  Extending Multicore Architectures to Exploit Hybrid Parallelism in Single-thread Applications , 2007, 2007 IEEE 13th International Symposium on High Performance Computer Architecture.