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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Aldinucci, M., Danelutto, M., Teti, P.: An advanced environment supporting structured parallel programming in Java. Future Gener. Comput. Syst. 19(5), 611–626 (2003)
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
Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press, Cambridge (1991)
Cooley, J., Tukey, J.: An algorithm for the machine calculation of complex fourier series. Math. Comput. 19(90), 297–301 (1965)
Cosmo, R.D., Li, Z., Pelagatti, S., Weis, P.: Skeletal parallel programming with OcamlP3l 2.0. Par. Proc. Lett. 18(1), 149–164 (2008)
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
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)
Falcou, J., Sérot, J., Chateau, T., Lapresté, J.T.: QUAFF: efficient C++ design for parallel skeletons. Parallel Comput. 32, 604–615 (2006)
Foster, I.: Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Addison-Wesley Longman Publishing Co., Inc., Boston (1995)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston (1995)
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)
Grama, A., Gupta, A., Karypis, G., Kumar, V.: Introduction to Parallel Computing. Addison Wesley, Boston (2003)
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
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
Jelly, I., Gorton, I.: Software engineering for parallel systems. Inf. Softw. Technol. 36(7), 381–396 (1994). Software Engineering for Parallel Systems
Kiefer, M.A., Warzel, D., Tichy, W.: An empirical study on parallelism in modern open-source projects. In: SEPS 2015 (2015)
Kornerup, J.: Data structures for parallel recursion. Ph.D. dissertation, University of Texas (1997)
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)
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)
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)
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
Marlow, S. (ed.): Haskell 2010 language report (2010). https://www.haskell.org/definition/haskell2010.pdf
Massingill, B.L., Mattson, T.G., Sanders, B.A.: A Pattern Language for Parallel Programming. Software Patterns Series. Addison Wesley, Boston (2004)
Minsky, Y.: OCaml for the masses. Commun. ACM 54(11), 53–58 (2011)
Misra, J.: Powerlist: a structure for parallel recursion. ACM Trans. Program. Lang. Syst. 16(6), 1737–1767 (1994)
Niculescu, V.: Pares - a model for parallel recursive programs. Roman. J. Inf. Sci. Technol. (ROMJIST) 14, 159–182 (2012)
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)
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)
Niculescu, V., Loulergue., F.: Transforming powerlist based divide&conquer programs for an improved execution model. J. Supercomput. 76 (2020)
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)
Pankratius, V.: Software engineering in the era of parallelism. In: KIT-Nachwuchswissenschaftler-Symposium (2010)
Pelagatti, S.: Structured Development of Parallel Programs. Taylor & Francis (1998)
Philippe, J., Loulergue, F.: PySke: algorithmic skeletons for Python. In: International Conference on High Performance Computing and Simulation (HPCS), pp. 40–47. IEEE (2019)
Pressman, R.: Software Engineering: A Practitioner’s Approach, 7th edn. McGraw-Hill Science, New York (2009)
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)
Skillicorn, D.B., Talia, D.: Models and languages for parallel computation. ACM Comput. Surv. 30(2), 123–169 (1998)
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)
Veldhuizen, T.: Techniques for scientific C++. Computer science technical report 542, Indiana University (2000)
X***: MPI: A message-passing interface standard. https://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf. Accessed 20 Nov 2019
X***: Oracle: The Java tutorials: ForkJoinPool. https://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html. Accessed 20 Nov 2019
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
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
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)