-
Notifications
You must be signed in to change notification settings - Fork 0
What is HPC?
High Performance Computing, or "HPC" for short, most generally refers to the practice of aggregating computing power in a way that delivers much higher performance in order to efficiently solve massive computational problems. Tim Carroll explains this concept here by saying "A long time ago, early physicists realized if they could put more people onto a single problem, they could get the answers faster. Today, if one computer can solve a problem, 5000 computers can solve it even faster." This is the idea of HPC. When we connect multiple computers together in this manner we have effectively created a computer cluster. More on this here.
For now, the takeaway is simply
more computers = more computational power = the ability to solve problems faster.
Though computational power is increasing, so are computational problems and needs. For instance, problems that were once considered "out of reach" such as decoding the human genome, have been solved from past increases of computational power. Furthermore, many extremely complicated problems in various scientific fields are now being worked on through the creation and execution of high-performance scientific computing applications. Here is a link to a personal favorite.
Traditionally, HPC applications are written systems programming languages, such as C, C++, and Fortran. This is because these languages are performance focused and sit lower, or closer, to the Operating System hierarchically. This project uses C++, in order to address three important aspects of HPC.
-
Performance (innately and through lazy evaluation/template metaprogramming)
-
Portability (through abstractions and use of rich libraries)
-
Programmability (generally easier to code than Fortran and C).
The images below are from a 2020 systematic mapping study of programming languages (left) and desired programming language features (right) for data-Intensive HPC applications. Before moving on to the complicated makeup of high-performance compute systems that scientific applications run on to solve problems, lets first review how a singular CPU executes instructions.
Next: How Do Computers Solve Problems
Wiki
Fundamental Concepts
- What is HPC?
- How Do Computers Solve Problems?
- Serial to Parallel speedup example
- Shared Memory Architecture
- Heterogenous Architectures
Getting Started with Kokkos