Skip to main content
Log in

Functional Program Transformation for Parallelisation Using Skeletons

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3

Similar content being viewed by others

References

  1. Iwasaki, H., Hu, Z.: A new parallel skeleton for general accumulative computations. Int. J. Parallel Program. 32, 389–414 (2004)

    Article  MATH  Google Scholar 

  2. Skillicorn, D.B., Talia, D.: Models and languages for parallel computation. ACM Comput. Surv. 30, 123–169 (1998)

    Article  Google Scholar 

  3. Hu, Z., Takeichi, M., Chin, W.-N.: Parallelization in calculational forms. In: ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. (1998)

  4. 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)

  5. 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)

  6. 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)

  7. 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)

  8. 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)

  9. Hu, Z., Takeichi, M., Iwasaki, H.: Diffusion: calculating efficient parallel programs. In: ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation. (1999)

  10. 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)

  11. 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)

  12. 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)

    Article  MathSciNet  MATH  Google Scholar 

  13. Chin, W.-N., Takano, A., Hu, Z.: Parallelization via context preservation. In: International Conference on Computer Languages. (1998)

  14. Gibbons, J.: The third homomorphism theorem. J. Funct. Program. 6(4), 657–665 (1996)

  15. 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)

    MATH  Google Scholar 

  16. Matsuzaki, K., Hu, Z., Takeichi, M.: Parallel skeletons for manipulating general trees. J. Parallel Comput. 32, 590–603 (2006)

    Article  Google Scholar 

  17. Ahn, J., Han, T.: An analytical method for parallelisation of recursive functions. Parallel Process. Lett. 10, 87–98 (2001)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Venkatesh Kannan.

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

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10766-017-0510-5

Keywords

Navigation