Abstract
Most recursive functions hide a significant degree of inherent parallelism. Much research work has been done in detecting and exploiting this parallelism, mainly by focusing on calls which can be invoked in parallel. However, not all recursive algorithms allow concurrent execution of function calls. In this paper we study how we can extract concurrency from those recursive functions which cannot be parallelized with the commonly used methods. The key idea is to parallelize them in a finer level, using as infrastructure a multi-core, multi-thread architecture. Multi-core architectures give us the opportunity to achieve higher degree of fine grained parallelism than the conventional parallel architectures, by providing real thread level parallelization and low overhead in the communication between different threads. For our experiments we use the SVP processor and model, a novel multi-core architecture which supports threads of execution with rapid communication between “neighboring” threads. The mapping of recursive functions onto the SVP processor is part of a more general framework the C2μTC/SL source to source compiler, developed to support the automatic extraction of parallelism from C programs and the exploitation of the special characteristics of the SVP processor. The experimental results are very encouraging and show satisfactory speedups between the parallel execution and the automatically produced code.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Ahn, J., Han, T.: An analytical method for parallelization of recursive functions. Parallel Processing Letters, 87–98 (2000)
Bernard, T., Bousias, K., Guang, L., Jesshope, C., Lankamp, M., van Tol, M., Zhang, L.: A general model of concurrency and its implementation as many-core dynamic RISC processors. In: Proc. of SAMOS 2008, Samos, Greece (2008)
Collins, R.L., Vellore, B., Carloni, L.P.: Recursion-driven parallel code generation for multi-core platforms. In: Design, Automation and Test in Europe, DATE (2010)
Gupta, M., Mukhopadhyay, S., Sinha, N.: Automatic parallelization of recursive procedures. Int. J. Parallel Program. 28(6), 537–562 (2000)
Harrison, W.L.: The interprocedural analysis and automatic parallelization of Scheme programs. LISP and Symbolic Computation 1(1), 35–47 (1990)
Jesshope, C., Lankamp, M., Zhang, L.: The implementation of an SVP many-core processor and the evaluation of its memory architecture. SIGARCH Comput. Archit. News 37, 38–45 (2009)
Jesshope, C.R.: μTC - an intermediate language for programming chip multiprocessors. In: Proc. of Pacific Computer Systems Architecture Conference 2006, Shanghai, China (2006)
Morihata, A., Matsuzaki, K.: Automatic Parallelization of Recursive Functions Using Quantifier Elimination. In: Blume, M., Kobayashi, N., Vidal, G. (eds.) FLOPS 2010. LNCS, vol. 6009, pp. 321–336. Springer, Heidelberg (2010)
Rugina, R., Rinard, M.: Automatic parallelization of divide and conquer algorithms. In: PPoPP 1999: Proceedings of the Seventh ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pp. 72–83 (1999)
Saougkos, D., Manis, G.: Specifying loop transformations for C2μTC source to source compiler. In: Proc. of Compilers for Parallel Computers, Zurich, Switzerland (2009)
Saougkos, D., Manis, G.: Run–time scheduling with the C2μTC/SL parallelizing compiler. In: Proc. of 2nd Workshop on Parallel Programming and Run–Time Management Techniques for Many-core Architectures, Como, Italy (2011)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Saougkos, D., Mastoras, A., Manis, G. (2012). Fine Grained Parallelism in Recursive Function Calls. In: Wyrzykowski, R., Dongarra, J., Karczewski, K., Waśniewski, J. (eds) Parallel Processing and Applied Mathematics. PPAM 2011. Lecture Notes in Computer Science, vol 7204. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-31500-8_13
Download citation
DOI: https://doi.org/10.1007/978-3-642-31500-8_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-31499-5
Online ISBN: 978-3-642-31500-8
eBook Packages: Computer ScienceComputer Science (R0)