Abstract
It can be challenging to use algorithmic skeletons in parallel program development as it is tedious to manually identify parallel computations in an algorithm and there may be mismatches between the algorithm and skeletons. Also, parallel programs defined using skeletons often employ inefficient intermediate data structures. In this paper, we present a program transformation method to address these issues by using an existing technique called distillation to reduce the use of intermediate data structures and an encoding technique to combine the inputs of a program into a single input whose structure matches that of the program. This facilitates automatic identification of skeletons that suit the algorithmic structure of the transformed program.



Similar content being viewed by others
References
Iwasaki, H., Hu, Z.: A new parallel skeleton for general accumulative computations. Int. J. Parallel Program. 32, 389–414 (2004)
Skillicorn, D.B., Talia, D.: Models and languages for parallel computation. ACM Comput. Surv. 30, 123–169 (1998)
Hu, Z., Takeichi, M., Chin, W.-N.: Parallelization in calculational forms. In: ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. (1998)
Matsuzaki, K., Kakehi, K., Iwasaki, H., Hu, Z., Akashi, Y.: A fusion-embedded skeleton library. In: International Conference on Parallel and Distributed Computing (EuroPar), Lecture Notes in Computer Science, vol. 3149, pp. 644–653. Springer-Verlag (2004)
Hamilton, G.W., Jones, N.D.: Distillation with labelled transition systems. In: Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation. (2012)
Kannan, V., Hamilton, G.W.: Program transformation to identify parallel skeletons. In: Proceedings of the 24th Euromicro International Conference on Parallel, Distributed and Network-Based Processing. (2016)
Kannan, V., Hamilton, G.W.: Program transformation to identify list-based parallel skeletons. In: International Workshop on Verification and Program Transformation, Electronic Proceedings in Theoretical Computer Science. (2016)
Loogen, R.: Eden parallel functional programming with Haskell. In: Zsók, V., Horváth, Z., Plasmeijer, R. (eds.) Lecture Notes in Computer Science, Central European Functional Programming School, pp. 142–206. Springer, Berlin (2012)
Hu, Z., Takeichi, M., Iwasaki, H.: Diffusion: calculating efficient parallel programs. In: ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation. (1999)
Miller, G.L., Reif, J.H.: Parallel tree contraction and its application. In: Proceedings of the 26th Annual Symposium on Foundations of Computer Science. (1985)
Morihata, A., Matsuzaki, K.: A practical tree contraction algorithm for parallel skeletons on trees of unbounded degree. In: Proceedings of the International Conference on Computational Science (ICCS). (2011)
Backus, J.: Can programming be liberated from the Von Neumann style? A functional style and its algebra of programs. Commun. ACM 21, 613–641 (1978)
Chin, W.-N., Takano, A., Hu, Z.: Parallelization via context preservation. In: International Conference on Computer Languages. (1998)
Gibbons, J.: The third homomorphism theorem. J. Funct. Program. 6(4), 657–665 (1996)
Morihata, A., Matsuzaki, K., Hu, Z., Takeichi, M.: The third homomorphism theorem on trees: downward & upward lead to divide-and-conquer. ACM SIGPLAN SIGACT Symp. Princ. Program. Lang. 44, 177–185 (2009)
Matsuzaki, K., Hu, Z., Takeichi, M.: Parallel skeletons for manipulating general trees. J. Parallel Comput. 32, 590–603 (2006)
Ahn, J., Han, T.: An analytical method for parallelisation of recursive functions. Parallel Process. Lett. 10, 87–98 (2001)
Author information
Authors and Affiliations
Corresponding author
Additional information
This work was supported, in part, by the Science Foundation Ireland Grant 10/CE/I1855 to Lero - the Irish Software Research Centre (www.lero.ie)
Rights and permissions
About this article
Cite this article
Kannan, V., Hamilton, G.W. Functional Program Transformation for Parallelisation Using Skeletons. Int J Parallel Prog 46, 152–172 (2018). https://doi.org/10.1007/s10766-017-0510-5
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10766-017-0510-5