========================================== Introduction to High Performance Computing ========================================== +----------------+---------------------------------------------+ | __Session 1__ | - Arbeiten mit dem Terminal | | | - Der ULM-Simulator | | | - Programmieren mit der ULM | +----------------+---------------------------------------------+ | __Session 2__ | - Programmieren mit dem ULM-Assembler | | | - Kontrollstrukturen | | | - Stackoperationen: Push, Pop | +----------------+---------------------------------------------+ | __Session 3__ | - Erste Schritte in C | +----------------+---------------------------------------------+ | __Session 4__ | - Matrizen und Vektoren | +----------------+---------------------------------------------+ | __Session 5__ | - Matrix-Vektor Produkt | +----------------+---------------------------------------------+ | __Session 6__ | - Dreieckslöser | | | - Rang-1 Aufdatierung | | | - LU-Zerlegung | +----------------+---------------------------------------------+ | __Session 7__ | - Allgemeines Matrix-Matrix Produkt | +----------------+---------------------------------------------+ | __Session 8__ | - Assembler Kernel für AVX | +----------------+---------------------------------------------+ | __Session 9__ | TRLSM: Vorwärtslöser für Matrix-Gleichungen| +----------------+---------------------------------------------+ Weiteres Material: ================== - __Dokumentation der ULM__. - __Source-Code__ für den ULM-Simulator. - Optimierung des Matrix-Matrix Produkt in alten Vorlesung: - __GEMM: From Pure C to SSE Optimized Micro Kernels__ - Die ulmBLAS Technik eingebaut in __uBLAS__ (Boost) :links: Session (\d) -> doc:session0$1/page01 Dokumentation der ULM -> http://www.mathematik.uni-ulm.de/~lehn/ulm.pdf Source-Code -> http://www.mathematik.uni-ulm.de/~lehn/ulm.cc GEMM: From Pure C to SSE Optimized Micro Kernels -> http://apfel.mathematik.uni-ulm.de/~lehn/sghpc/gemm/ uBLAS -> http://www.mathematik.uni-ulm.de/~lehn/test_ublas/ Coding Style ============ - Keine Zeile mit mehr als 80 Zeichen - *No trailing white spaces!* Also keine Leerzeichen oder Tabs am Ende einer Zeile. - Entweder nur mit Tab einrücken oder mit genau 4 Leerzeichen - Format für Funktionsdefinitionen: - Eine Zeile für den Rückgabetype - Mindestens eine Zeile für den Funktionsnamen und die Parameter - Die geschweiften Klammern für das Compound-Statement in extra Zeilen Also ---- CODE(type=c) -------------------------------------------------------- int foo(int a, int b) { // ... } -------------------------------------------------------------------------- nicht ---- CODE(type=c) -------------------------------------------------------- int foo(int a, int b) { // ... } -------------------------------------------------------------------------- - Bei Kontrollstrukturen bekommt die öffnende geschweifte Klammer keine extra Zeile. Beispielsweise: ---- CODE(type=c) -------------------------------------------------------- if (i>0) { do_something(); } for (i=0; i0) { do_something(); } for (i=0; i0) { do_something(); } -------------------------------------------------------------------------- nicht ---- CODE(type=c) -------------------------------------------------------- if (i>0) do_something(); -------------------------------------------------------------------------- - Inkrementieren von Variablen: - Wenn `++i` und `i++` den gleichen Effekt hat, dann `++i` verwenden. Also ---- CODE(type=c) -------------------------------------------------------- for (i=0; i