High-Performance Computing
using Campus Cluster
Agenda—Day 1
- Campus Cluster background
-
Logging in and first look
-
Shells & architecture, environment
-
What is HPC?
-
Strategies
-
Architecture
- Performance
-
Running code on a cluster
- Queueing
- Campus Cluster operations model
- mpiexec
Cluster Elements
HPC Strategies
vectorization
distributed computing
local threading
HPC Architecture
GPGPU
(Seymour Cray)
Linked CPUs
HPC Performance
S(N, P)=tN,P=1 / tN,P
HPC Performance
how the solution time varies with the number of processors P for a fixed total problem size N.
E(N) = t1 / (N tN)
HPC Performance
how the solution time varies with the number of processors P for a fixed problem size per processor N/P.
CSE Queue Target Share
Agenda—Day 2
- Scientific Coding and HPC
- Compiling & building (gcc, make)
- Code organization & data management best practices
- Responsible cluster use
- Language support and libraries for HPC
- Debugging
- Numerical error
-
Setting up Campus Cluster to be friendlier
Writing Scientific Code
-
Learn your development environment.
-
Write self-documenting code.
-
Modularize your code.
-
Use standard files: README, INSTALL, CITATION, README
-
Use a compilation system.
Use version control and issue-tracking.
-
Develop and use a unit-testing scheme.
-
Don't reinvent the wheel—find existing libraries.
-
Don't hard-code values: use configuration files instead.
-
Compile with all debug flags set (-Wall -Werror -g).
-
Don't create new file formats.
-
Have a long-term data management plan.
-
Study strong and weak scaling to not waste cluster cycles.
Debugging Scientific Code
Nobody gets it right the first time, [including you]. (Lynne Williams)
Premature optimization is the root of all evil. (Donald Knuth)
-
Confusion is a clue that something is wrong—notice it, don't ignore it. (Eliezer Yudkowsky, paraphrased)
Where can you go next?
-
ECE 408/CS 483 Applied Parallel Programming
-
ECE 492/CS 420/CSE 402 Introduction to Parallel Programming
-
ECE 428/CS 425/CSE 424 Distributed Systems
-
CS 524 Concurrent Programming Languages
-
CS 525 Advanced Topics in Distributed Systems
-
CS 533 Parallel Computer Architectures
-
CS 554/CSE 512 Parallel Numerical Algorithms
-
ECE 598HK/CS 598HK Many-Core Computing
HPC-Sp14
By uiuc-cse
HPC-Sp14
- 893