Abstract
There are several parallel programming models available for numerical computations at different levels of expressibility and ease of use. For the development of new domain specific programming models, a splitting into a distributed data container and parallel data iterators is proposed. Data distribution is implemented in application specific libraries. Data iterators are directly analysed and compiled automatically into parallel code. Target architectures of the source-to-source translation include shared (pthreads, Cell SPE), distributed memory (MPI) and hybrid programming styles. A model applications for grid based hierarchical numerical methods and an auto-parallelizing compiler are introduced.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Butenhof, D.R.: Programming with POSIX Threads. Addison-Wesley, Reading (1997)
Reinders, J.: Intel Threading Building Blocks. O’ Reilly (2007)
Blumofe, R.D., Joerg, C.F., Leiserson, C.E., Randall, K.H., Zhou, Y.: Cilk: An efficient multithreaded runtime system. In: 5th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming PPoPP 1995, pp. 207–216. ACM, New York (1995)
Sutter, H.: The Concur project: Some experimental concurrency abstractions for imperative languages (2006), slides at: http://www.nwcpp.org/Downloads/2006/The_Concur_Project_-_NWCPP.pdf
Chandra, R., Menon, R., Dagum, L., Kohr, D., Maydan, D., McDonald, J.: Parallel programming in OpenMP. Morgan Kaufmann, San Francisco (2000)
Pacheco, P.: Parallel programming with MPI. Morgan Kaufmann, San Francisco (1996)
Koelbel, C.: The High Performance Fortran handbook. MIT Press, Cambridge (1993)
Numrich, R.W., Reid, J.: Co-array Fortran for parallel programming. ACM Fortran Forum 17(2), 1–31 (1998)
Chamberlain, B.L., Callahan, D., Zima, H.P.: Parallel programmability and the Chapel language. Int. J. high perf. computing 21(3), 231–312 (2007)
Steele, G.: Parallel programming and parallel abstractions in Fortress. In: Proc. 14th Int. Conf. on Parallel Architectures and Compilation Techniques, pp. 157–160. IEEE, Los Alamitos (2005)
Ghazawi, T.E., Carlson, W., Sterling, T.L.: Distributed shared-memory programming with UPC. Wiley, Chichester (2005)
Charles, P., Grothoff, C., Saraswat, V., Donawa, C., Kielstra, A., Ebcioglu, K., von Praun, C., Sarkar, V.: X10: An object-oriented approach to non-uniform cluster computing. In: Proc. 20th ACM conf. on object oriented programming, pp. 519–538. ACM Press, New York (2005)
Herrmann, C., Lengauer, C.: HDC: A higher-order language for divide-and-conquer. Parallel Proc. Let. 10(2/3), 239–250 (2000)
Zumbusch, G.: Data parallel iterators for hierarchical grid and tree algorithms. In: Nagel, W.E., Walter, W.V., Lehner, W. (eds.) Euro-Par 2006. LNCS, vol. 4128, pp. 625–634. Springer, Heidelberg (2006)
Quinlan, D., Schordan, M., Yi, Q., de Supinski, B.R.: Semantic-driven parallelization of loops operating on user-defined containers. In: Rauchwerger, L. (ed.) LCPC 2003. LNCS, vol. 2958, pp. 524–538. Springer, Heidelberg (2004)
Oldham, J.D.: POOMA. A C++ Toolkit for High-Performance Parallel Scientific Computing. CodeSourcery (2002)
Griebel, M., Knapek, S., Zumbusch, G.: Numerical simulation in molecular dynamics. Springer, Heidelberg (2007)
Austern, M.H.: Generic programming and the STL. Addison-Wesley, Reading (1999)
Järvi, J., Powell, G.: The lambda library: Lambda abstraction in C++. In: Proc. 2nd workshop on C++ Template Programming at OOPSLA 2001 (2001), http://www.oonumerics.org/tmpw01
Birken, K.: Semi-automatic parallelisation of dynamic, graph-based applications. In: Proc. Conf. ParCo 1997, pp. 269–276. Elsevier, Amsterdam (1998)
Kahle, J.A., Day, M.N., Hofstee, H.P., Johns, C.R., Maeurer, T.R., Shippy, D.: Introduction to the Cell multiprocessor. IBM J. Res. & Dev. 49(4/5), 589–604 (2005)
Warren, M.S., Salmon, J.K.: A portable parallel particle program. Comput. Phys. Commun. 87(1–2), 266–290 (1995)
Lengauer, C.: Program optimization in the domain of high-performance parallelism. In: Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016, pp. 73–91. Springer, Heidelberg (2004)
Bailey, D.H., Barszcz, E., Barton, J.T., Browning, D.S., Carter, R.L., Dagum, L., Fatoohi, R.A., Frederickson, P.O., Lasinski, T.A., Schreiber, R.S., Simon, H.D., Venkatakrishnam, V., Weeratunga, S.K.: The NAS parallel benchmarks. Inter. J. Supercomp. Appl. 5(3), 63–73 (1991)
Zumbusch, G.: Data dependence analysis for the parallelization of numerical tree codes. In: Kågström, B., Elmroth, E., Dongarra, J., Waśniewski, J. (eds.) PARA 2006. LNCS, vol. 4699, pp. 890–899. Springer, Heidelberg (2007)
IBM: Cell Broadband Engine Programming Tutorial. 2.1 edn. (2007)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2008 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Zumbusch, G. (2008). A Container-Iterator Parallel Programming Model. In: Wyrzykowski, R., Dongarra, J., Karczewski, K., Wasniewski, J. (eds) Parallel Processing and Applied Mathematics. PPAM 2007. Lecture Notes in Computer Science, vol 4967. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-68111-3_120
Download citation
DOI: https://doi.org/10.1007/978-3-540-68111-3_120
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-68105-2
Online ISBN: 978-3-540-68111-3
eBook Packages: Computer ScienceComputer Science (R0)