Abstract
This chapter explains the basics of speedup programs with simple examples for numerical computing. Parallel processing as well as the trends in computer hardware are explained in detail to understand how high-performance computing works. Several key technologies for code tuning, such as pipelining, cache optimizations, and numerical libraries, are also explained using sample programs from basic numerical computations.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
However, the size of problem n is large and data is on out of cache. Hence, the performance will go down even in the middle product form. To avoid this situation, cache blocking, which will be explained later, should be implemented.
- 2.
Several computer architectures provide a software control mechanism for the movement of data for cache.
- 3.
Another merit of loop unrolling is to reduce the time of branch control in loops.
- 4.
However, the efficiency of loop unrolling depends on code optimizations by the compiler. To do an effective implementation of loop unrolling, programmers need to know in advance the details of the code optimization by the compiler.
- 5.
In some numerical libraries, the best blocking size to do matrix–matrix multiplications is fixed by library developers in advance before the release time. Hence, library users do not tune the blocking size. In addition, some numerical libraries perform test execution to tune the blocking size automatically with respect to the amount of cache and considering computations of target loops in install time. These automations are called “Software Auto-tuning.” [3,4,5,6,7] Study on software auto-tuning is one of hot topics in high-performance computing. In Chap. 5, we will explain the details of the research on software auto-tuning.
References
X.S. Li, J.W. Demmel, D.H. Bailey, G. Henry, Y. Hida, J. Iskandar, W. Kahn, S.Y. Kang, A. Kapur, M.C. Martin, B.J. Thompson, T. Tung, D.J. Yoo. ACM Trans. Math. Softw. 28, 152 (2002)
A. Buttari, J. Dongarra, J. Kuzak, P. Luszczek, S. Tomov. ACM Trans. Math. Softw. 34 (2008)
T. Katagiri, K. Kise, H. Honda, Yuba, in Proceedings of the ACM International Symposium on High Performance Computing (2003), pp. 146–159
T. Katagiri, K. Kise, H. Honda, T. Yuba, in Proceedings of the ACM Computing Frontiers (2004), pp. 12–25
T. Katagiri, K. Kise, H. Honda, T. Yuba, Parallel Comput. 32(1), 92–112 (2006)
K. Naono, K. Teranishi, J. Cavazos, R. Suda, Software Automatic Tuning (Springer, New York, 2010)
T. Katagiri, S. Ohshima, M. Matsumoto, in Proceedings of IEEE MCSoC 2014 (2014), pp. 91–98
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Singapore Pte Ltd.
About this chapter
Cite this chapter
Katagiri, T. (2019). High-Performance Computing Basics. In: Geshi, M. (eds) The Art of High Performance Computing for Computational Science, Vol. 1. Springer, Singapore. https://doi.org/10.1007/978-981-13-6194-4_1
Download citation
DOI: https://doi.org/10.1007/978-981-13-6194-4_1
Published:
Publisher Name: Springer, Singapore
Print ISBN: 978-981-13-6193-7
Online ISBN: 978-981-13-6194-4
eBook Packages: Computer ScienceComputer Science (R0)