![](https://csdnimg.cn/release/download_crawler_static/10856893/bg11.jpg)
This often means lengthy apprenticeships in research facilities in academia, industry, or national
laboratories. There are many books written to teach particular program ming languages; others describe
in detail the structures and instruction sets of computer architectures; and still others discuss system
software such as operating systems. But missing has been a single textbook that serves as an entry-
level presentation of all these elements and their interrelationships in one place, combined with
guided hands-on experience. This work, High Performance Computing, is developed as a carefully
crafted synthesis of relevant elements of related disciplines, all of which contribute in critical ways to
supercomputing and its use. This book presents the foundation concepts, in-depth relevant knowledge,
and detailed skills that together will give you a meaningful understanding of HPC and an initial set of
techniques to make you an effective, albeit incipient, practitioner in its use. Throughout this text the
best practices employed by the community are presented with training, so you learn to do, the how,
even as you are gaining understanding of the what and the why.
This textbook provides a comprehensive introduction to the field of HPC. It is presented in a form
that will be both intellectually rewarding and practical in teaching useful basic skills. It combines
perspectives about supercomputing concepts, knowledge about supercomputers, and techniques for
using and programming supercomputers. But teaching a complex subject like HPC is challe nging, in
that just about everything is defined in terms of and relates to everything else. Yet by the nature of
pedagogy, material must be presented in some sequential order. This first chapter is a brief introductory
presentation of the essential elements of HPC to provide an overview of everything; a first pass that
will allow successive in- depth chapters to be related to this broad context.
The chapter looks at the many facets which comprise HPC. The importance of the material is that it
provides a complete, albeit simplified, perspective of HPC so that more detailed discussion of specifics
can be understood within the full context. Because no piece makes sense without the others, almost all
areas are briefly introduced in this chapter. To reinforce the interrelated broad-brush presentation of
issues, this chapter concludes with a history of the field and its rapid evolution.
1.1 HIGH PERFORMANCE COMPUTING DISCIPLINES
As previously noted, HPC is really a collection of multiple interrelated disciplines, each providing an
important aspect of the total field. To master HPC as a useful tool is to develop an understanding and
associated skills in each of these corresponding areas. These broad areas are described here, including
a formal definition of “high performance computing” that applies throughout the treatment of the
field, end-user application problems that are the intended purpose of HPC across a wide range of
science, engineering, societal, and security domains, the core concept of perform ance which is the
distinguishing characteristic of HPC compared to other forms of computing, the hardware and
software components that make up an HPC system, environments, tools, application programming,
and the interfaces used. Each of these is presented in some detail in the following sections and together
form a major portion of the concepts, knowledge content, and skills comprising this textbook.
1.1.1 DEFINITION
HPC is a field of endeavor that relates to all facets of technology, methodology, and application
associated with achieving the greatest computing capability possible at any point in time and technology.
It engages a class of electronic digital machines referred to as “supercomputers” to perform a wide array
1.1 HIGH PERFORMANCE COMPUTING DISCIPLINES 3