Abstract
This paper presents an overview of our experiments in integrating modern software engineering tools and techniques with the process of developing parallel applications for distributed memory architectures. The main goal was to determine the methods that have the potential of reducing the complexities associated with explicit parallelization. We experimented with template metaprogramming, aspect-oriented programming, program transformation engine, and a domain-specific language called Hi-PaL. The pros and cons of using each technique for explicit parallelization are presented in this paper. Our experiments demonstrate that through a combination of modern software engineering tools and techniques, the effort involved in explicit parallelization can be reduced by 90 % without any significant loss in performance.
Similar content being viewed by others
References
Charles P, Grothoff C, Saraswat VA, Donawa C, Kielstra A, Ebcioglu K, von Praun C, Sarkar V (2005) X10: an object-oriented approach to non-uniform cluster computing. In: OOPSLA 2005, pp 519–538
Bal HE, Frans Kaashoek M, Tanenbaum AS (1992) Orca: a language for parallel programming of distributed systems. IEEE Trans Softw Eng 18(3):190–205
Feo JT, Cann DC, Oldehoeft RR (1990) A report on the Sisal language project. J Parallel Distrib Comput 10(4):349–366
Steele G (2006) Parallel programming and parallel abstractions in Fortress. In: Functional and logic programming, 8th international symposium (FLOPS 2006). LNCS, vol 3945. Springer, Berlin, p 1
Freeh VW (1996) A comparison of implicit and explicit parallel programming. J Parallel Distrib Comput 34(1):50–65
Gropp W, Lusk E, Skjellum A (1999) Using MPI: portable parallel programming with the message-passing interface. MIT Press, Cambridge, pp 1–371
The OpenMP API specification for parallel programming (2012) Access date: August 3, 2012, latest version date: September 2011. http://openmp.org/wp/
Arora R, Bangalore P, Mernik M (2010) Raising the level of abstraction for developing message passing applications. J Supercomput. doi:10.1007/s11227-010-0490-3
Czarnecki K, Eisenecker U (2000) Generative programming: methods, tools, and applications Addison-Wesley, Reading, pp 1–832
Mernik M, Heering J, Sloane AM (2005) When and how to develop domain-specific languages. ACM Comput Surv 37(4):316–344
Veldhuizen T (2012) Template metaprograms. http://www10.informatik.uni-erlangen.de/~pflaum/pflaum/ProSeminar/meta-art.html. Access date: August 3, 2012, latest revision date: October 3rd 1995
Arora R (2012) FraSPA: A framework for synthesizing parallel applications. Ph.D. dissertation, University of Alabama at Birmingham, 2010, pp 1–203. http://www.cis.uab.edu/sites/default/files/pubs/RituArora_Dissertation.pdf. Access date: August 3, 2012
Kiczales G, Lamping J, Mendhekar A, Maeda C, Lopes C, Loingtier J-M, Irwin J (1997) Aspect-oriented programming. In: European conference on object-oriented programming. LNCS, vol 1241. Springer, Berlin, pp 220–242
AspectC++ (2012) http://www.aspectc.org/. Access date: August 3, 2012, latest release date: 8th March 2012
AspectC++ (2012) https://sites.google.com/a/gapp.msrg.utoronto.ca/aspectc/. Access date: August 3, 2012, latest release date: August 12th 2010
Bangalore P (2007) Generating parallel applications for distributed memory systems using aspects, components, and patterns. In: 6th Workshop on aspects, components, and patterns for infrastructure software (ACP4IS ’07), Article 3. doi:10.1145/1233901.1233904
Arora R, Bangalore P (2008) Using aspect-oriented programming for checkpointing a parallel application. In: Parallel and distributed processing techniques and applications (PDPTA 2008), pp 955–961
Baxter I (1992) Design maintenance systems. Commun ACM 35(4):73–89
Koelbel C, Loveman DB, Steele GL, Zosel ME (1994) High performance FORTRAN handbook. MIT Press, Cambridge, pp 1–329
The AMMA Platform (2012) http://atlanmod.emn.fr/AMMAROOT/. Access date: August 3, 2012, revision date: September 18th 2008
Mattson TG, Sanders BA, Massingill BL (2004) Patterns for parallel programming. Addison-Wesley Professional, Reading, pp 1–384. ISBN-10: 0321228111
Zhang C, Chen X (2005) Region based image clustering and retrieval using multiple instance learning. In: Lecture notes in computer science, image/video annotation and clustering. Springer, Berlin, pp 194–204
Pescio C (1997) Template metaprogramming: make parameterized integers portable with this novel technique. C++ Report 9(7). http://www.eptacom.net/pubblicazioni/pub_eng/paramint.html
Harbulot B, Gurd J (2004) Using AspectJ to separate concerns in a parallel scientific Java code. In: International conference on aspect-oriented software development, pp 122–131
Harbulot B, Gurd J (2005) A join point for loops in AspectJ. In: Workshop on foundations of aspect-oriented languages. doi:10.1145/1119655.1119666
Chalabine M, Kessler C (2006) Crosscutting concerns in parallelization by invasive software composition and aspect weaving. In: 39th Hawaii international conference on system sciences. doi:10.1109/HICSS.2006.106
ROSE Compiler (2012) http://www.rosecompiler.org/. Access date: August 3, 2012, revision date: August 2nd 2012
Roychoudhury S., Jouault F, Gray J (2007) Model-based aspect weaver construction. In: International workshop on language engineering, pp 117–126
Dean J, Ghemawat S (2008) MapReduce: simplifed data processing on large clusters. Commun ACM 51(1):107–113
Goswami D, Singh A, Preiss BR (2002) Building parallel applications using design patterns. In: Advances in software engineering: topics in comprehension, evolution and evaluation. Springer, Berlin, pp 243–265
Mehta P, Amaral JN, Szafron D (2006) Is MPI suitable for a generative design-pattern system? Parallel Comput 32(7–8):616–626
Püschel M, Moura JMF, Johnson J, Padua D, Veloso M, Singer B, Xiong J, Franchetti F, Gacic A, Voronenko Y, Chen K, Johnson RW, Rizzolo N (2005) SPIRAL: code generation for DSP transforms. Proc IEEE 93(2) 232–275. Special issue on program generation, optimization and adaptation
DeVito Z, Joubert N, Palacios F, Oakley S, Medina M, Barrientos M, Elsen E, Ham F, Aiken A, Duraisamy K, Darve E, Alonso J, Hanrahan P (2011) Liszt: a domain specific language for building portable mesh-based PDE solvers. In: Proceedings of 2011 international conference for high performance computing, networking, storage and analysis (SC ’11). Article 9, 12 pages
Arora R, Bangalore P, Mernik M (2011) A technique for non-invasive application-level checkpointing. J Supercomput 57(3):227–255. doi:10.1007/s11227-010-0383-5
Acknowledgements
We would like to thank Dr. Jeff Gray, Dr. Frédéric Jouault, and Dr. Suman Roychoudhury for their guidance on the software engineering techniques used in this research. This work was made possible in part by a grant of high performance computing resources from the Department of Computer and Information Sciences at the University of Alabama at Birmingham, the School of Natural Sciences and Mathematics at the University of Alabama at Birmingham, and the National Science Foundation Award CNS-0420614.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Arora, R., Bangalore, P. & Mernik, M. Tools and techniques for non-invasive explicit parallelization. J Supercomput 62, 1583–1608 (2012). https://doi.org/10.1007/s11227-012-0822-6
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-012-0822-6