### Welcome to High Performance Computing Class.

Computation and simulation are increasingly important in all aspects of science and engineering. At the same time writing efficient computer programs to take full advantage of current computers is becoming increasingly difficult. Even laptops now have 4 or more processors, but using them all to solve a single problem faster often requires rethinking the algorithm to introduce parallelism, and then programming in a language that can express this parallelism. Writing efficient programs also requires some knowledge of machine arithmetic, computer architecture, and memory hierarchies.

High performance programming is also an important aspect of high performance scientific computing, and so another main theme of the course is the use of basic tools and techniques to improve your efficiency as a computational scientist.

### Outline

Tutorials on CUDA, Xeon Phi, and RDMA

Single processor computer architecture

Parallel computer architecture

Examples and techiniques of performance optimization

### Prerequisites

Experience writing and debugging computer programs is required.

Students should also be comfortable with undergraduate mathematics, particularly calculus and linear algebra, which is pervasive in scientific computing applications.

Preferably experience with scientific, mathematical, or statistical computing.

Knowledge of computer architecture is a plus.

### Downloads

Performance Optimizations

Experiments

### Support or Contact

Instructor: Prof. Hong An

Monitor / Representative: Han Lin