High-Performance Computing

using Campus Cluster



Please navigate to
uiuc-cse.github.io/hpc-sp14



CSE Training • cse.illinois.edu/training/

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

        single operation across multiple data

        distributed computing

        multiple units on multiple data for same overall process

        local threading

        context-switching processes operating over
        multiple control flows or multiple data

        HPC Architecture



        GPGPU


        “If you were plowing a field, which would you rather use?
        Two strong oxen or 1024 chickens?”

        (Seymour Cray)

        Linked CPUs

        HPC Performance

        Speedup

        how much faster a parallel algorithm is than its sequential counterpart

        S(N, P)=tN,P=1 / tN,P

        HPC Performance

        Strong Scaling

        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

        Weak Scaling

        how the solution time varies with the number of processors P for a fixed problem size per processor N/P.


        E(N) = (t1 / tN)
          

        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?

          http://hpcuniversity.org/roadmap/

          Courses
          • 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