High-Performance Computing
using Campus Cluster
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.
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
MSE 498AF Computational Materials Science and Engineering
HPC-Fa14
By uiuc-cse
HPC-Fa14
- 1,526