Introduction to High Performance Computing
-
The syllabus and some lecture notes.
-
The ULM Manual.
-
You should be familiar with some of the most basics of UNIX. In particular on working with the terminal. Here some links to a simple tutorial:
-
Tutorial 1: Listing files and directories. Making and changing directories.
-
Tutorial 2: Copying, moving and deleting files. Displaying the contents of a file on the screen
-
Tutorial 3: Redirecting output and using pipelines.
-
-
If you are not familiar with VIM then use this course as a chance to change this. Learn VIM
-
For the computer lab sessions we provide some minimalistic supplementary material.
-
Computer Lab Sessions:
Working with the UNIX Terminal:
-
Working with the secure shell (ssh)
-
Using git to obtain the ULM simulator
-
Compiling the ULM simulator
-
Using VIM to edit files
-
Run a simple program on the ULM
Using the ULM assembler
Simple functions (so called leaf functions)
-
Linker
-
Writing a Makefile
Quiz 01 on control structures:
-
If-then-else statements
-
While-loops
-
For-loops
-
Stack
-
Recursive function calls
-
The real thing: Writing code for the Intel64 architecture.
-
Using a C compiler as portable assembler.
-
Writing functions in assembly language.
-
C = Portable Assembler
The gcc tool chain:
-
CPP (C preprocessor)
-
Compiler (tokenizer, parser, opimizer and code generator)
-
Linker
And a flexible Makefile skeleton for our needs.
-
BLAS: Basic Linear Algebra Subroutines
-
LU factorization with BLAS Level 1 and 2
-
C11: Pointers, arrays, memory allocation
-
Matrices and vectors for numerical linear algebra
Some simple cache optimizations.
Simple GEMM micro kernel with AVX
-
Improved cache optimization
-
Using micro kernels from BLIS
-
Triangular solver for matrix equations
-
Blocked LU factorization
-
Solving a linear matrix equation
-