Skip to main content

Reflections on the Design of Parallel Programming Frameworks

  • Conference paper
  • First Online:
Evaluation of Novel Approaches to Software Engineering (ENASE 2020)

Abstract

Since parallel programming is much more complex and difficult than sequential programming, it is more challenging to achieve the same software quality in a parallel context. High-level parallel programming models, if implemented as software frameworks, could increase productivity and reliability.

Important requirements such as extensibility and adaptability for different platforms are required for such a framework, and this paper reflects on these requirements and their relation to the software engineering methodologies that could put them in practice. All these are exemplified on a Java framework – JPLF; this is a high-level parallel programming approach being based on the model brought by the PowerLists associated theories, and it respects the analysed requirements. The design of JPLF is analysed by explaining the design choices and highlighting the design patterns and design principles applied.

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

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

References

  1. Aldinucci, M., Danelutto, M., Teti, P.: An advanced environment supporting structured parallel programming in Java. Future Gener. Comput. Syst. 19(5), 611–626 (2003)

    Article  Google Scholar 

  2. Caromel, D., Leyton, M.: Fine tuning algorithmic skeletons. In: Kermarrec, A.-M., Bougé, L., Priol, T. (eds.) Euro-Par 2007. LNCS, vol. 4641, pp. 72–81. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-74466-5_9

    Chapter  Google Scholar 

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

    MATH  Google Scholar 

  4. Cooley, J., Tukey, J.: An algorithm for the machine calculation of complex fourier series. Math. Comput. 19(90), 297–301 (1965)

    Article  MathSciNet  Google Scholar 

  5. Cosmo, R.D., Li, Z., Pelagatti, S., Weis, P.: Skeletal parallel programming with OcamlP3l 2.0. Par. Proc. Lett. 18(1), 149–164 (2008)

    Article  Google Scholar 

  6. Danelutto, M., Torquati, M.: Structured parallel programming with “core” FastFlow. In: Zsók, V., Horváth, Z., Csató, L. (eds.) CEFP 2013. LNCS, vol. 8606, pp. 29–75. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-15940-9_2

    Chapter  Google Scholar 

  7. Di Cosmo, R., Danelutto, M.: A “minimal disruption” skeleton experiment: seamless map & reduce embedding in OCaml. In: Proceedings of the International Conference on Computational Science, vol. 9, pp. 1837–1846. Elsevier (2012)

    Google Scholar 

  8. Falcou, J., Sérot, J., Chateau, T., Lapresté, J.T.: QUAFF: efficient C++ design for parallel skeletons. Parallel Comput. 32, 604–615 (2006)

    Article  Google Scholar 

  9. Foster, I.: Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Addison-Wesley Longman Publishing Co., Inc., Boston (1995)

    MATH  Google Scholar 

  10. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston (1995)

    MATH  Google Scholar 

  11. Gorlatch, S., Lengauer, C.: Abstraction and performance in the design of parallel programs: an overview of the sat approach. Acta Inf. 36(9–10), 761–803 (2000)

    Article  Google Scholar 

  12. Grama, A., Gupta, A., Karypis, G., Kumar, V.: Introduction to Parallel Computing. Addison Wesley, Boston (2003)

    MATH  Google Scholar 

  13. Hammond, K., Rebón Portillo, Á.J.: HaskSkel: algorithmic skeletons in haskell. In: Koopman, P., Clack, C. (eds.) IFL 1999. LNCS, vol. 1868, pp. 181–198. Springer, Heidelberg (2000). https://doi.org/10.1007/10722298_11

    Chapter  Google Scholar 

  14. Javed, A., Qamar, B., Jameel, M., Shafi, A., Carpenter, B.: Towards scalable Java HPC with hybrid and native communication devices in MPJ Express. Int. J. Parallel Prog. 44(6), 1142–1172 (2016). https://doi.org/10.1007/s10766-015-0375-4

    Article  Google Scholar 

  15. Jelly, I., Gorton, I.: Software engineering for parallel systems. Inf. Softw. Technol. 36(7), 381–396 (1994). Software Engineering for Parallel Systems

    Article  Google Scholar 

  16. Kiefer, M.A., Warzel, D., Tichy, W.: An empirical study on parallelism in modern open-source projects. In: SEPS 2015 (2015)

    Google Scholar 

  17. Kornerup, J.: Data structures for parallel recursion. Ph.D. dissertation, University of Texas (1997)

    Google Scholar 

  18. Légaux, J., Loulergue, F., Jubertie, S.: OSL: an algorithmic skeleton library with exceptions. In: Proceedings of the International Conference on Computational Science, pp. 260–269. Elsevier, Barcelona (2013)

    Google Scholar 

  19. Leyton, M., Piquer, J.M.: Skandium: multi-core programming with algorithmic skeletons. In: 18th Euromicro Conference on Parallel, Distributed and Network-based Processing (PDP), pp. 289–296. IEEE Computer Society (2010)

    Google Scholar 

  20. Lopes, S.F., Afonso, F., Tavares, A., Monteiro, J.: Framework characteristics - a starting point for addressing reuse difficulties. In: 2009 Fourth International Conference on Software Engineering Advances, pp. 256–264 (2009)

    Google Scholar 

  21. Loulergue, F., Philippe, J.: Automatic optimization of python skeletal parallel programs. In: Wen, S., Zomaya, A., Yang, L.T. (eds.) ICA3PP 2019. LNCS, vol. 11944, pp. 183–197. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-38991-8_13

    Chapter  Google Scholar 

  22. Marlow, S. (ed.): Haskell 2010 language report (2010). https://www.haskell.org/definition/haskell2010.pdf

  23. Massingill, B.L., Mattson, T.G., Sanders, B.A.: A Pattern Language for Parallel Programming. Software Patterns Series. Addison Wesley, Boston (2004)

    MATH  Google Scholar 

  24. Minsky, Y.: OCaml for the masses. Commun. ACM 54(11), 53–58 (2011)

    Article  Google Scholar 

  25. Misra, J.: Powerlist: a structure for parallel recursion. ACM Trans. Program. Lang. Syst. 16(6), 1737–1767 (1994)

    Article  Google Scholar 

  26. Niculescu, V.: Pares - a model for parallel recursive programs. Roman. J. Inf. Sci. Technol. (ROMJIST) 14, 159–182 (2012)

    Google Scholar 

  27. Niculescu, V., Bufnea, D., Sterca, A.: MPI scaling up for powerlist based parallel programs. In: 27th Euromicro International Conference on Parallel, Distributed and Network-Based Processing, PDP 2019, Pavia, Italy, 13–15 February 2019, pp. 199–204. IEEE (2019)

    Google Scholar 

  28. Niculescu., V., Loulergue., F., Bufnea., D., Sterca., A.: Pattern-driven design of a multiparadigm parallel programming framework. In: Proceedings of the 15th International Conference on Evaluation of Novel Approaches to Software Engineering - Volume 1: ENASE, pp. 50–61. INSTICC, SciTePress (2020)

    Google Scholar 

  29. Niculescu, V., Loulergue., F.: Transforming powerlist based divide&conquer programs for an improved execution model. J. Supercomput. 76 (2020)

    Google Scholar 

  30. Niculescu, V., Loulergue, F., Bufnea, D., Sterca, A.: A Java framework for high level parallel programming using powerlists. In: 18th International Conference on Parallel and Distributed Computing, Applications and Technologies, PDCAT 2017, Taipei, Taiwan, 18–20 December 2017, pp. 255–262. IEEE (2017)

    Google Scholar 

  31. Pankratius, V.: Software engineering in the era of parallelism. In: KIT-Nachwuchswissenschaftler-Symposium (2010)

    Google Scholar 

  32. Pelagatti, S.: Structured Development of Parallel Programs. Taylor & Francis (1998)

    Google Scholar 

  33. Philippe, J., Loulergue, F.: PySke: algorithmic skeletons for Python. In: International Conference on High Performance Computing and Simulation (HPCS), pp. 40–47. IEEE (2019)

    Google Scholar 

  34. Pressman, R.: Software Engineering: A Practitioner’s Approach, 7th edn. McGraw-Hill Science, New York (2009)

    MATH  Google Scholar 

  35. Qamar, B., Javed, A., Jameel, M., Shafi, A., Carpenter, B.: Design and implementation of hybrid and native communication devices for Java HPC. In: Proceedings of ICCS 2014, Cairns, Queensland, Australia, 10–12 June 2014, pp. 184–197 (2014)

    Google Scholar 

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

    Article  Google Scholar 

  37. Vega-Gisbert, O., Román, J.E., Squyres, J.M.: Design and implementation of Java bindings in Open MPI. Parallel Comput. 59, 1–20 (2016)

    Article  Google Scholar 

  38. Veldhuizen, T.: Techniques for scientific C++. Computer science technical report 542, Indiana University (2000)

    Google Scholar 

  39. X***: MPI: A message-passing interface standard. https://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf. Accessed 20 Nov 2019

  40. X***: Oracle: The Java tutorials: ForkJoinPool. https://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html. Accessed 20 Nov 2019

  41. X***: Intel MPI library developer reference for Linux OS: Java bindings for MPI-2 routines (2019). https://software.intel.com/en-us/mpi-developer-reference-linux-java-bindings-for-mpi-2-routines. Accessed 20 Nov 2019

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Virginia Niculescu .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Niculescu, V., Sterca, A., Loulergue, F. (2021). Reflections on the Design of Parallel Programming Frameworks. In: Ali, R., Kaindl, H., Maciaszek, L.A. (eds) Evaluation of Novel Approaches to Software Engineering. ENASE 2020. Communications in Computer and Information Science, vol 1375. Springer, Cham. https://doi.org/10.1007/978-3-030-70006-5_7

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-70006-5_7

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-70005-8

  • Online ISBN: 978-3-030-70006-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics