Abstract
OpenMP has become a successful programming model for developing multi-threaded applications. However, there are still some challenges in terms of OpenMP’s interoperability within itself and with other parallel programming APIs. In this paper, we explore typical use cases that expose OpenMP’s interoperability challenges and report our proposed solutions for addressing the resource oversubscription issue as the efforts by the OpenMP Interoperability language subcommittee. The solutions include OpenMP runtime routines for changing the wait policies, which include ACTIVE(SPIN_BUSY or SPIN_PAUSE), PASSIVE (SPIN_YIELD or SUSPEND), of idling threads for improved resource management, and routines for supporting contributing OpenMP threads to other thread libraries or tasks. Our initial implementations are being done by extending two OpenMP runtime libraries, Intel OpenMP (IOMP) and GNU OpenMP (GOMP). The evaluation results demonstrate the effectiveness of the proposed approach to address the CPU oversubscription challenge and detailed analysis provide heuristics for selecting an optimal wait policy according to the oversubscription ratios.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
On Intel platforms, this can be implemented using monitor-mwait. Blue Gene/Q supported a “wake-up unit” for fast thread resumption. Other processors may have similar features.
References
INTERTWinE: Programming Model INTERoperability ToWards Exascale. http://www.intertwine-project.eu
Chatterjee, S., Tasirlar, S., Budimlic, Z., Cavé, V., Chabbi, M., Grossman, M., Sarkar, V., Yan, Y.: Integrating asynchronous task parallelism with MPI. In: 2013 IEEE 27th International Symposium on Parallel Distributed Processing (IPDPS), pp. 712–725, May 2013
Cray. Cray C/C++ Reference Manual. http://docs.cray.com/cgi-bin/craydoc.cgi?mode=View;id=S-2179-82;right=/books/S-2179-82/html-S-2179-82//z1050591602oswald.html%23section-6yjyhx7c-esti
Dinan, J., Balaji, P., Goodell, D., Miller, D., Snir, M., Thakur, R.: Enabling MPI interoperability through flexible communication endpoints. In: Proceedings of the 20th European MPI Users’ Group Meeting, EuroMPI 2013, pp. 13–18. ACM, New York, NY, USA (2013)
Epperly, T., Prantl, A., Chamberlain, B.: Composite parallelism: Creating interoperability between PGAS languages, HPCS languages and message passing libraries. Technical report LLNL-AR-499171 (2011)
Harris, T., Maas, M., Marathe, V.J.: Callisto: Co-scheduling parallel runtime systems. In: Proceedings of the Ninth European Conference on Computer Systems, EuroSys 2014, p. 24:1–24:14. ACM, New York, NY, USA (2014)
Hugo, A., Guermouche, A., Wacrenier, P.-A., Namyst, R.: Composing multiple StarPU applications over heterogeneous machines: a supervised approach. Int. J. High Perform. Comput. Appl. 28(3), 285–300 (2014)
IBM Knowledge Center. XLSMPOPTS Runtime options: IBM XL C/C++ for Linux 12.1.0. http://docs.oracle.com/cd/E24457_01/html/E21996/aewcb.html#gentextid-475
Intel. User and Reference Guide for the Intel\(^{\textregistered }\)C++ Compiler 15.0. https://software.intel.com/en-us/compiler_15.0_ug_c
ORACLE. Oracle Solaris Studio 12.3: OpenMP API User’s Guide. http://docs.oracle.com/cd/E24457_01/html/E21996/aewcb.html#gentextid-475
Pan, H., Hindman, B., Asanović, K.: Lithe: enabling efficient composition of parallel libraries. In: Proceedings of the First USENIX Conference on Hot Topics in Parallelism, HotPar 2009, pp. 11–11. Berkeley, CA, USA (2009)
Pérache, M., Jourdren, H., Namyst, R.: MPC: a unified parallel runtime for clusters of NUMA machines. In: Luque, E., Margalef, T., Benítez, D. (eds.) Euro-Par 2008. LNCS, vol. 5168, pp. 78–88. Springer, Heidelberg (2008)
Pheatt, C.: Intel\(^{\textregistered }\)threading building blocks. J. Comput. Sci. Coll. 23(4), 298–298 (2008)
Tian, X., Girkar, M., Shah, S., Armstrong, D., Ernesto, S., Petersen, P.: Compiler and runtime support for running OpenMP programs on pentium-and itanium-architectures. In: 2003 Proceedings of International Parallel and Distributed Processing Symposium, p. 9. IEEE (2003)
Wang, E., Zhang, Q., Shen, B., Zhang, G., Xiaowei, L., Qing, W., Wang, Y.: Intel math kernel library. In: Wang, E., Zhang, Q., Shen, B., Zhang, G., Xiaowei, L., Qing, W., Wang, Y. (eds.) High-Performance Computing on the Intel\(^{\textregistered }\)Xeon Phi™, pp. 167–188. Springer, Heidelberg (2014)
Acknowledgments
We thank members from the OpenMP Interoperability language subcommittee and the language committee in general for providing insightful comments of the design. We are also grateful to Terry Wilmarth and Brian Bliss from Intel for providing information that help our implementation. This material is based upon work supported by the National Science Foundation under Grant No. SHF-1409946 and SHF-1551182. This work performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2016 Springer International Publishing Switzerland
About this paper
Cite this paper
Yan, Y., Hammond, J.R., Liao, C., Eichenberger, A.E. (2016). A Proposal to OpenMP for Addressing the CPU Oversubscription Challenge. In: Maruyama, N., de Supinski, B., Wahib, M. (eds) OpenMP: Memory, Devices, and Tasks. IWOMP 2016. Lecture Notes in Computer Science(), vol 9903. Springer, Cham. https://doi.org/10.1007/978-3-319-45550-1_14
Download citation
DOI: https://doi.org/10.1007/978-3-319-45550-1_14
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-45549-5
Online ISBN: 978-3-319-45550-1
eBook Packages: Computer ScienceComputer Science (R0)