Skip to main content

Refactorings to Enable Parallelization

  • Conference paper
  • First Online:
Trends in Functional Programming (TFP 2014)

Abstract

We propose program analyses to identify parallelizable code fragments, and program transformations to change those fragments into applications of high-level parallel patterns. The methodology has been worked out, and is presented here, in the context of the Erlang programming language, but the approach is applicable in other languages as well.

This work has been supported by the European Union Framework 7 under contract no. 288570. ParaPhrase: Parallel Patterns for Adaptive Heterogeneous Multi-core System.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 34.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 44.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Hammond, K., Aldinucci, M., Brown, C., Cesarini, F., Danelutto, M., González-Vélez, H., Kilpatrick, P., Keller, R., Rossbory, M., Shainer, G.: The ParaPhrase project: parallel patterns for adaptive heterogeneous multicore systems. In: Beckert, B., Bonsangue, M.M. (eds.) FMCO 2011. LNCS, vol. 7542, pp. 218–236. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  2. Bozó, I., Fördős, V., Horváth, Z., Tóth, M., Horpácsi, D., Kozsik, T., Kőszegi, J., Barwell, A., Brown, C., Hammond, K.: Discovering parallel pattern candidates in erlang. In: Proceedings of the Thirteenth ACM SIGPLAN Workshop on Erlang, Erlang 2014, pp. 13–23. ACM, New York (2014)

    Google Scholar 

  3. Skel Tutorial (2014), http://chrisb.host.cs.st-andrews.ac.uk/skel-test-master/tutorial/bin/tutorial.html

  4. The ParaPhrase project (2014), http://www.paraphrase-ict.eu

  5. Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press, Cambridge (1991)

    Google Scholar 

  6. Brown, C., Danelutto, M., Hammond, K., Kilpatrick, P., Elliot, A.: Cost-directed refactoring for parallel erlang programs. Int’l J. of Parallel Programming (2013)

    Google Scholar 

  7. Brown, C., Janjic, V., Hammond, K., Goli, M., McCall, J.: Bridging the divide: intelligent mapping for the heterogeneous parallel programmer. In: ICPP 2013 (2013)

    Google Scholar 

  8. Tóth, M., Bozó, I.: Static analysis of complex software systems implemented in Erlang. In: Zsók, V., Horváth, Z., Plasmeijer, R. (eds.) CEFP. LNCS, vol. 7241, pp. 440–498. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  9. Hammacher, C., Streit, K., Hack, S., Zeller, A.: Profiling java programs for parallelism. In: Proc. IWMSE 2009, pp. 49–55 (2009)

    Google Scholar 

  10. Markstrum, S.A., Fuhrer, R.M.: Extracting concurrency via refactoring in X10. In: Proceedings of the 3rd ACM Workshop on Refactoring Tools, WRT 2009 (2009)

    Google Scholar 

  11. Markstrum, S.A., Fuhrer, R.M., Millstein, T.D.: Towards concurrency refactoring for x10. In: Proceedings of the 14th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2009, pp. 303–304. ACM, New York (2009)

    Google Scholar 

  12. Wloka, J., Sridharan, M., Tip, F.: Refactoring for reentrancy. In: ESEC/FSE 2009, pp. 173–182. ACM, Amsterdam (2009)

    Google Scholar 

  13. Molitorisz, K.: Pattern-based refactoring process of sequential source code. In: 2013 17th European Conference on Software Maintenance and Reengineering (CSMR), March 2013, pp. 357–360 (2013)

    Google Scholar 

  14. Molitorisz, K., Schimmel, J., Otto, F.: Automatic parallelization using autofutures. In: Pankratius, V., Philippsen, M. (eds.) MSEPT 2012. LNCS, vol. 7303, pp. 78–81. Springer, Heidelberg (2012)

    Chapter  Google Scholar 

  15. Dig, D.: A Refactoring Approach to Parallelism. IEEE Softw. 28, 17–22 (2011)

    Article  Google Scholar 

  16. Dig, D., Marrero, J., Ernst, M.D.: How do programs become more concurrent: A story of program transformations. In: Proceedings of the 4th International Workshop on Multicore Software Engineering, IWMSE 2011, pp. 43–50. ACM, New York (2011)

    Google Scholar 

  17. Dig, D., Marrero, J., Ernst, M.D.: Refactoring sequential java code for concurrency via concurrent libraries. In: Proceedings of the 31st International Conference on Software Engineering, ICSE 2009, pp. 397–407. IEEE Computer Society, Washington (2009)

    Google Scholar 

  18. Mak, J., Faxén, K.-F., Janson, S., Mycroft, A.: Estimating and exploiting potential parallelism by source-level dependence profiling. In: D’Ambra, P., Guarracino, M., Talia, D. (eds.) Euro-Par 2010, Part I. LNCS, vol. 6271, pp. 26–37. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  19. Cole, M.: Bringing Skeletons out of the Closet: A Pragmatic Manifesto for Skeletal Parallel Programming. Parallel Comput. 30(3), 389–406 (2004)

    Article  Google Scholar 

  20. Darlington, J., Guo, Y., Jing, Y., To, H.W.: Skeletons for structured parallel composition. In: Proc. of the 15th Symposium on Principles and Practice of Parallel Programming (1995)

    Google Scholar 

  21. Brown, C., Janjic, V., Hammond, K., Schöner, H., Idrees, K., Glass, C.W.: Agricultural reform: more efficient farming using advanced parallel refactoring tools. In: Proc. PDP 2014. IEEE (2014)

    Google Scholar 

  22. Aronis, S., Sagonas, K.: On using erlang for parallelization: experience from parallelizing dialyzer. In: Proceedings of the Symposium on Trends in Functional Programming (2012)

    Google Scholar 

  23. Aronis, S., Papaspyrou, N., Roukounaki, K., Sagonas, K., Tsiouris, Y., Venetis, I.E.: A scalability benchmark suite for Erlang/OTP. In: Proc. of 11th ACM SIGPLAN Workshop on Erlang, pp. 33–42. ACM, New York (2012)

    Google Scholar 

  24. Brown, C., Loidl, H., Hammond, K.: Paraforming: forming haskell programs using novel refactoring techniques. In: Twelth Symposium on Trends in Functional Programming, May 2011. Madrid, Spain (2011)

    Google Scholar 

  25. Michaelson, G., Ireland, A., King, P.: Towards a skeleton based parallelising compiler for SML. In: Proceedings of 9th International Workshop on Implementation of Functional Languages, pp. 539–546 (1997)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Melinda Tóth .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2015 Springer International Publishing Switzerland

About this paper

Cite this paper

Bozó, I. et al. (2015). Refactorings to Enable Parallelization. In: Hage, J., McCarthy, J. (eds) Trends in Functional Programming. TFP 2014. Lecture Notes in Computer Science(), vol 8843. Springer, Cham. https://doi.org/10.1007/978-3-319-14675-1_7

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-14675-1_7

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-14674-4

  • Online ISBN: 978-3-319-14675-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics