Skip to main content

FooPar: A Functional Object Oriented Parallel Framework in Scala

  • Conference paper
  • First Online:
  • 1351 Accesses

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8385))

Abstract

We present FooPar, an extension for highly efficient Parallel Computing in the multi-paradigm programming language Scala. Scala offers concise and clean syntax and integrates functional programming features. Our framework FooPar combines these features with parallel computing techniques. FooPar is designed to be modular and supports easy access to different communication backends for distributed memory architectures as well as high performance math libraries. In this article we use it to parallelize matrix-matrix multiplication and show its scalability by a isoefficiency analysis. In addition, results based on a empirical analysis on two supercomputers are given. We achieve close-to-optimal performance wrt. theoretical peak performance. Based on this result we conclude that FooPar allows programmers to fully access Scalas design features without suffering from performance drops when compared to implementations purely based on C and MPI.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.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

Learn about institutional subscriptions

References

  1. Scala in the enterprise. Ecole Polytechnique Federale de Lausanne (EPFL). http://www.scala-lang.org/node/1658 (2013). Accessed 4 May 2013

  2. Abeles, P.: Java-Matrix-Benchmark - a benchmark for computational efficiency, memory usage and stability of Java matrix libraries. http://code.google.com/p/java-matrix-benchmark/ (2013). Accessed 12 Feb 2013

  3. Bosque, J.L., Robles, O.D., Toharia, P., Pastor, L.: H-Isoefficiency: scalability metric for heterogenous systems. In: Proceedings of the 10th International Conference of Computational and Mathematical Methods in Science and Engineering (CEMMSE 2010), pp. 240–250 (2010)

    Google Scholar 

  4. Darema, F.: The SPMD model: past, present and future. In: Cotronis, Y., Dongarra, J. (eds.) EuroPVM/MPI 2001. LNCS, vol. 2131, p. 1. Springer, Heidelberg (2001)

    Google Scholar 

  5. Dekel, E., Nassimi, D., Sahni, S.: Parallel matrix and graph algorithms. SIAM J. Comput. 10(4), 657–675 (1981)

    Article  MATH  MathSciNet  Google Scholar 

  6. Gabriel, E., Fagg, G.E., Bosilca, G., Angskun, T., Dongarra, J.J., Squyres, J.M., Sahay, V., Kambadur, P., Barrett, B., Lumsdaine, A., Castain, R.H., Daniel, D.J., Graham, R.L., Woodall, T.S.: Open MPI: Goals, concept, and design of a next generation MPI implementation. In: Proceedings of the 11th European PVM/MPI Users’ Group Meeting, pp. 97–104 (2004)

    Google Scholar 

  7. Grama, A., Gupta, A., Kumar, V.: Isoefficiency: measuring the scalability of parallel algorithms and architectures. IEEE Parallel Distrib. Technol. Syst. Appl. 1(3), 12–21 (1993)

    Article  Google Scholar 

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

    Google Scholar 

  9. Gupta, A., Kumar, V.: Scalability of parallel algorithms for matrix multiplication. In: Proceedings of the 22nd International Conference on Parallel Processing, ICPP, vol. 3, pp. 115–123 (1993)

    Google Scholar 

  10. Hundt, R.: Loop recognition in C++/Java/Go/Scala. In: Proceedings of Scala Days (2011)

    Google Scholar 

  11. Hwang, K., Xu, Z.: Scalable Parallel Computing. McGraw-Hill, New York (1998)

    MATH  Google Scholar 

  12. Kumar, V., Rao, V.N.: Parallel depth first search, part II: analysis. Int. J. Parallel Prog. 16(6), 501–519 (1987)

    Article  MATH  MathSciNet  Google Scholar 

  13. Loogen, R., Ortega-Mallén, Y., Peña, R.: Parallel functional programming in Eden. J. Funct. Program. 15, 431–475 (2005)

    Article  MATH  Google Scholar 

  14. Odersky, M.: The Scala language specification (2011)

    Google Scholar 

  15. Odersky, M., Moors, A.: Fighting bit rot with types (experience report: Scala collections). In: Proceedings of the 29th IARCS Annual Conference on Foundations of Software Technology and Theoretical Computer Science (FSTTCS 2009), vol. 4 of Leibniz International Proceedings in Informatics, pp. 427–451 (2009)

    Google Scholar 

  16. Odersky, M., Spoon, L., Venners, B.: Programming in Scala. Artima, New York (2010)

    Google Scholar 

  17. Quinn, M.J.: Parallel Programming in C with MPI and OpenMP. McGraw-Hill, Blacklick (2003)

    Google Scholar 

  18. Shafi, A., Manzoor, J.: Towards efficient shared memory communications in MPJ express. In: Proceedings of the 25th IEEE International Symposium on Parallel Distributed Processing 2009 (IPDPS), pp. 1–7 (2009)

    Google Scholar 

  19. Taboada, G.L., Touriño, J., Doallo, R.: F-MPJ: scalable Java message-passing communications on parallel systems. J. Supercomput. 1, 117–140 (2012)

    Article  Google Scholar 

  20. Thompson, S.J., Wadler, P.: Functional programming in education - introduction. J. Funct. Program. 3(1), 3–4 (1993)

    Article  Google Scholar 

  21. Zaharia, M., Chowdhury, N.M.M., Franklin, M., Shenker, S., Stoica, I.: Spark: cluster computing with working sets. Technical Report UCB/EECS-2010-53, EECS Department, University of California, Berkeley (2010)

    Google Scholar 

Download references

Acknowledgments

We acknowledge the support of the Danish Council for Independent Research, the Innovation Center Denmark, the Lawrence Berkeley National Laboratory, and the Scientific Discovery through Advanced Computing (SciDAC) Outreach Center. We thank Jakob L. Andersen for supplying a template C-implementation of the DNS algorithm.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Daniel Merkle .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2014 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Hargreaves, F.P., Merkle, D. (2014). FooPar: A Functional Object Oriented Parallel Framework in Scala. In: Wyrzykowski, R., Dongarra, J., Karczewski, K., Waśniewski, J. (eds) Parallel Processing and Applied Mathematics. PPAM 2013. Lecture Notes in Computer Science(), vol 8385. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-55195-6_11

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-55195-6_11

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-55194-9

  • Online ISBN: 978-3-642-55195-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics