Abstract
New applications for parallel computing in today’s data centers, such as online analytical processing, data mining or information retrieval, require support for concurrency. Due to online query processing and multi-user operation, we need to concurrently maintain and analyze the data. While the Portable Operating System Interface (POSIX) defines a thread interface that is widely available, and while modern implementations of the Message Passing Interface (MPI) support threading, this combination is lacking in safety, security and reliability. The development of such parallel applications is therefore complex, difficult and error-prone. In response to this, we propose an additional layer of middleware for threaded MPI applications designed to simplify the development of concurrent parallel programs. We formulate a list of requirements and sketch a design rationale for such a library. Based on a prototype implementation, we evaluate the run-time overhead to estimate the overhead caused by the additional layer of indirection.
Keywords
- Threads
- Parallel programming
- Concurrent programming
- Message passing interface
This is a preview of subscription content, access via your 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
Latham, R., Ross, R., Thakur, R.: Can MPI Be Used for Persistent Parallel Services? In: Mohr, B., Träff, J.L., Worringen, J., Dongarra, J. (eds.) PVM/MPI 2006. LNCS, vol. 4192, pp. 275–284. Springer, Heidelberg (2006)
Dagum, L., Menon, R.: OpenMP: An Industry Standard API for Shared-Memory Programming. IEEE Computational Science and Engineering 5(1), 46–55 (1998)
OpenMP Architecture Review Board: The OpenMP API Specification for Parallel Programming (2008)
Duran, A., Gonzàlez, M., Corbalán, J.: Automatic Thread Distribution for Nested Parallelism in OpenMP. In: Proc. ICS, USA, pp. 121–130 (2005)
UPC Consortium: UPC Language Specifications, v1.2. Technical Report LBNL-59208, Lawrence Berkeley National Lab (2005)
Zheng, Y., Blagojevic, F., Bonachea, D., Hargrove, P.H., Hofmeyr, S., Iancu, C., Min, S.J., Yelick, K.: Getting Multicore Performance with UPC. In: Proc. PP, USA. SIAM (2010)
Mallón, D.A., Taboada, G.L., Teijeiro, C., Touriño, J., Fraguela, B.B., Gómez, A., Doallo, R., Mouriño, J.C.: Performance Evaluation of MPI, UPC and OpenMP on Multicore Architectures. In: Ropo, M., Westerholm, J., Dongarra, J. (eds.) PVM/MPI. LNCS, vol. 5759, pp. 174–184. Springer, Heidelberg (2009)
Balaji, P., Buntinas, D., Goodell, D., Gropp, W., Thakur, R.: Fine-Grained Multithreading Support for Hybrid Threaded MPI Programming. Int. J. High. Perform. C. 24, 49–57 (2010)
Thakur, R., Gropp, W.: Test Suite for Evaluating Performance of Multithreaded MPI Communication. Parallel Computing 35, 608–617 (2009)
Lusk, E., Chan, A.: Early Experiments with the OpenMP/MPI Hybrid Programming Model. In: Eigenmann, R., de Supinski, B.R. (eds.) IWOMP 2008. LNCS, vol. 5004, pp. 36–47. Springer, Heidelberg (2008)
Smith, L., Bull, M.: Development of Mixed Mode MPI / OpenMP Applications. Scientific Programming 9, 83–98 (2001)
Hoefler, T., Kambadur, P., Graham, R.L., Shipman, G., Lumsdaine, A.: A Case for Standard Non-Blocking Collective Operations, Germany. Springer (October 2007)
The Austin Group, The Open Group, The IEEE: ISO/IEC/IEEE 9945:2009 Information Technology – Portable Operating System Interface (POSIX©) Base Specifications (7) (2009)
Zhang, Z., Savant, J., Seidel, S.: A UPC Runtime System Based on MPI and POSIX Threads. In: Proc. PDP, USA, pp. 195–202. IEEE (2006)
Rodrigues, E.R., Navaux, P.O.A., Panetta, J., Mendes, C.L.: A New Technique for Data Privatization in User-Level Threads and its Use in Parallel Applications. In: Proc. SAC, USA, pp. 2149–2154. ACM (2010)
Alam, S.R., Kuehn, J.A., Barrett, R.F., Larkin, J.M., Fahey, M.R., Sankaran, R., Worley, P.H.: Cray XT4: An Early Evaluation for Petascale Scientific Simulation. In: Proc. SC, USA, pp. 39:1–39:12. ACM (2007)
Dongarra, J., Beckman, P., Aerts, P., Cappello, F., Lippert, T., Matsuoka, S., Messina, P., Moore, T., Stevens, R., Trefethen, A., Valero, M.: The International Exascale Software Project: A Call To Cooperative Action By the Global High-Performance Community. Int. J. High. Perform. C. 23, 309–322 (2009)
Buhr, P.A., Harji, A.S.: Concurrent Urban Legends: Research Articles. CCPE 17, 1133–1172 (2005)
Boehm, H.J.: Threads Cannot Be Implemented as a Library. SIGPLAN Notices 40, 261–268 (2005)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Berka, T., Hagenauer, H., Vajteršic, M. (2012). Portable Explicit Threading and Concurrent Programming for MPI Applications. In: Wyrzykowski, R., Dongarra, J., Karczewski, K., Waśniewski, J. (eds) Parallel Processing and Applied Mathematics. PPAM 2011. Lecture Notes in Computer Science, vol 7204. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-31500-8_9
Download citation
DOI: https://doi.org/10.1007/978-3-642-31500-8_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-31499-5
Online ISBN: 978-3-642-31500-8
eBook Packages: Computer ScienceComputer Science (R0)
