zbMATH — the first resource for mathematics

An object-oriented parallel programming language for distributed-memory parallel computing platforms. (English) Zbl 1410.68076
Summary: In object-oriented programming (OOP) languages, the ability to encapsulate software concerns of the dominant decomposition in objects is the key to reaching high modularity and loss of complexity in large scale designs. However, distributed-memory parallelism tends to break modularity, encapsulation, and the functional independence of objects, since parallel computations cannot be encapsulated in individual objects, which reside in a single address space. For reconciling object-orientation and distributed-memory parallelism, this paper introduces OOPP (Object-Oriented Parallel Programming), a style of OOP where objects are distributed by default. As an extension of C++, a widespread language in HPC, the PObC++ language has been designed and prototyped, incorporating the ideas of OOPP.
68N15 Theory of programming languages
68N19 Other programming paradigms (object-oriented, sequential, concurrent, automatic, etc.)
Full Text: DOI
[1] Baker, M.; Buyya, R.; Hyde, D., Cluster computing: a high performance contender, IEEE Computer, 42, 7, 79-83, (1999)
[2] Foster, I., The grid: blueprint for a new computing infrastructure, (1998), Morgan Kaufmann
[3] Post, D. E.; Votta, L. G., Computational science demands a new paradigm, Physics Today, 58, 1, 35-41, (2005)
[4] Bernholdt, D. E.; Nieplocha, J.; Sadayappan, P., Raising level of programming abstraction in scalable programming models, (IEEE International Conference on High Performance Computer Architecture (HPCA), Workshop on Productivity and Performance in High-End Computing (P-PHEC), Madrid, Spain, (2004), IEEE Computer Society), 76-84
[5] Dongarra, J.; Foster, I.; Fox, G.; Gropp, W.; Kennedy, K.; Torczon, L.; White, A., Sourcebook of parallel computing, (2003), Morgan Kauffman Publishers, (Chapters 20-21)
[6] Kuchen, H.; Cole, M.e., Algorithm skeletons, Parallel Computing, 32, 447-626, (2006)
[7] Cole, M., Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming, Parallel Computing, 30, 3, 389-406, (2004)
[8] Dongarra, J.; Otto, S. W.; Snir, M.; Walker, D., A message passing standard for MPP and workstation, Communications of ACM, 39, 7, 84-90, (1996)
[9] Dijkstra, E., The humble programmer, Communications of the ACM, 15, 10, 859-866, (1972)
[10] Dahl, O. J., SIMULA 67 common base language, (1968), Norwegian Computing Center
[11] Dahl, O. J., The birth of object orientation: the simula languages, (Software Pioneers: Contributions to Software Engineering, Programming, and Operating Systems Series, (2002), Springer), 79-90
[12] Goldberg, A.; Robson, D., Smalltalk-80: the language and its implementation, (1983), Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA · Zbl 0518.68001
[13] H. Milli, A. Elkharraz, H. Mcheick, Understanding separation of concerns, in: Workshop on Early Aspects — Aspect Oriented Software Development, AOSD’04, 2004, pp. 411-428.
[14] Taivalsaari, A., On the notion of inheritance, ACM Computing Surveys, 28, 438-479, (1996), URL: http://doi.acm.org/10.1145/243439.243441
[15] Meyer, B., Object-oriented software construction, (1988), Prentice Hall Upper Saddle River, NJ, USA
[16] M. Baker, B. Carpenter, G. Fox, S.H. Ko, X. Li, mpijava: a java interface to mpi, in: Procedings of the First UK Workshop on Java for High Performance Network Computing, 1998.
[17] Baker, M.; Carpenter, B., Mpj: a proposed Java message passing api and environment for high performance computing, (IPDPS’00: Proceedings of the 15 IPDPS 2000 Workshops on Parallel and Distributed Processing, (2000), Springer-Verlag London, UK), 552-559
[18] Mintchev, S., Writing programs in javampi, tech. rep. MAN-CSPE-02, (Oct. 1997), School of Computer Science, University of Westminster London, UK
[19] Zhang, B.-Y.; Yang, G.-W.; Zheng, W.-M., Jcluster: an efficient Java parallel environment on a large-scale heterogeneous cluster, Concurrency and Computation: Practice and Experience, 18, 12, 1541-1557, (2005)
[20] G. Douglas, T. Matthias, Boost.mpi website, May 2010. URL: http://www.boost.org/doc/html/mpi.html.
[21] Gregor, D.; Lumsdaine, A., Design and implementation of a high-performance mpi for c# and the common language infrastructure, (PPoPP’08: Proceedings of the 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, (2008), ACM New York, NY, USA), 133-142
[22] Kale, L. V.; Krishnan, S., Charm++: a portable concurrent object oriented system based on C++, tech. rep., champaign, IL, USA, (1993)
[23] Philippsen, M.; Zenger, M., Javaparty — transparent remote objects in Java, Concurrency and Computation: Practice and Experience, 9, 11, 1225-1242, (1997)
[24] Nguyen, T.; Kuonen, P., Paroc++: a requirement-driven parallel object-oriented programming language, (International Workshop on High-Level Programming Models and Supportive Environments, (2003), IEEE Computer Society Los Alamitos, CA, USA), 25 · Zbl 1033.68533
[25] Nguyen, T.; Kuonen, P., Programming the grid with pop-C++, Future Generation Computer Systems, 23, 1, 23-30, (2007)
[26] Aridor, Y.; Factor, M.; Teperman, A.; Eilam, T.; Schuster, A., A high performance cluster jvm presenting pure single system image, (JAVA’00: Proceedings of the ACM 2000 conference on Java Grande, (2000), ACM New York, NY, USA), 168-177
[27] Sarkar, V., X10: an object oriented aproach to non-uniform cluster computing, (OOPSLA’05: Companion to the 20th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, (2005), ACM New York, NY, USA), 393
[28] Chamberlain, B. L.; Callahan, D.; Zima, H. P., Parallel programmability and the chapel language, International Journal of High Performance Computing Applications, 21, 3, 291-312, (2007)
[29] E. Allen, D. Chase, J. Hallett, V. Luchangco, J.-W. Maessn, S. Ryu, G. Steele Jr., S. Tobin Hochstad, The Fortress Language Specification Version 1.0, Mar. 2008.
[30] Yelick, K. A.; Semenzato, L.; Pike, G.; Miyamoto, C.; Liblit, B.; Krishnamurthy, A.; Hilfinger, P. N.; Graham, S. L.; Gay, D.; Colella, P.; Aiken, A., Titanium: a high-performance Java dialect, Java for High-performance Network Computing, Concurrency: Practice and Experience, 10, 11-13, 825-836, (1998), (special issue)
[31] Lusk, E.; Yelick, K., Languages for high-productivity computing — the DARPA HPCS language support, Parallel Processing Letters, 1, 89-102, (2007)
[32] Carvalho, F. H.; Lins, R.; Correa, R. C.; Araújo, G. A., Towards an architecture for component-oriented parallel programming, Concurrency and Computation: Practice and Experience, 19, 5, 697-719, (2007)
[33] Grama, A.; Gupta, A.; Karypis, J.; Kumar, V., Introduction to parallel computing, (1976), Addison-Wesley
[34] Johnsson, S. L.; Harris, T.; Mathur, K. K., Matrix multiplication on the connection machine, (Proceedings of the 1989 ACM/IEEE Conference on Supercomputing, Supercomputing’89, (1989), ACM New York, NY, USA), 326-332, URL: http://doi.acm.org/10.1145/76263.76298
[35] Bertran, F.; Bramley, R.; Sussman, A.; Bernholdt, D. E.; Kohl, J. A.; Larson, J. W.; Damevski, K. B., Data redistribution and remote method invocation in parallel component architectures, (19th IEEE International Parallel and Distributed Processing Symposium, IPDPS, (2005), IEEE)
[36] McPeak, S. G., Elkhound: a fast, practical glr parser generator, tech. rep., Berkeley, CA, USA, (2003)
[37] J. Burkardt, NINTLIB — Multi-dimensional quadrature, web page. http://people.sc.fsu.edu/ burkardt/f_src/nintlib/nintlib.html.
[38] Cole, M., Algorithm skeletons: structured management of paralell computation, (1989), Pitman
[39] OpenMP Architecture Review Board, OpenMP: Simple, Portable, Scalable SMP Programming, 1997. URL: www.openmp.org.
[40] Bailey, D. H.; Harris, T.; Shapir, W.; van der Wijngaart, R.; Woo, A.; Yarrow, M., The NAS parallel benchmarks 2.0, tech. rep. NAS-95-020, (Dec. 1995), NASA Ames Research Center
[41] Jain, R., The art of computer systems performance analysis: techniques for experimental design, measurement, simulation, and modeling, (1991), Wiley-Interscience New York, NY, ISBN: 0471503361 · Zbl 0824.68013
[42] Batcher, K. E., Sorting networks and their applications, (Proceedings of AFIPS Spring Joint Computing Conference, vol. 32, (1980)), 307-314
This reference list is based on information provided by the publisher or from digital mathematics libraries. Its items are heuristically matched to zbMATH identifiers and may contain data conversion errors. It attempts to reflect the references listed in the original paper as accurately as possible without claiming the completeness or perfect precision of the matching.