Introduction to High Performance Computing
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TRLSM: Vorwärtslöser für Matrix-Gleichungen |
Weiteres Material:
-
Source-Code für den ULM-Simulator.
-
Optimierung des Matrix-Matrix Produkt in alten Vorlesung:
-
Die ulmBLAS Technik eingebaut in uBLAS (Boost)
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
int foo(int a, int b) { // ... }
nicht
int foo(int a, int b) { // ... }
-
-
Bei Kontrollstrukturen bekommt die öffnende geschweifte Klammer keine extra Zeile. Beispielsweise:
if (i>0) { do_something(); } for (i=0; i<n; ++i) { do_something_else(); }
und nicht
if (i>0) { do_something(); } for (i=0; i<n; ++i) { do_something_else(); }
-
Stets geschweifte Klammern bei if-else-Anweisung verwenden. Auch bei einzelen Anweisungen. Also
if (i>0) { do_something(); }
nicht
if (i>0) do_something();
-
Inkrementieren von Variablen:
-
Wenn ++i und i++ den gleichen Effekt hat, dann ++i verwenden. Also
for (i=0; i<n; ++i) { do_something_else(); }
statt
for (i=0; i<n; i++) { do_something_else(); }
-
++i ist lesbarer als i += 1.
-
i += 3 ist lesbarer als i = i + 3
-
-
Namen für Variablen:
-
Wenn möglich den Namen im mathematischen Pseudo-Code verwenden. Ist \(A\) eine \(m \times n\) Matrix, dann heissen Variablen für die Dimensionen auch im Code m und n. Namen wie numRows oder numCols sind dann nicht verständlicher. Wer unseren Code lesen möchste muss sich erst unsere mathematische Ausarbeitung angeschaut haben.
-
Aus \(\overline{x}\) wird beispielsweise x_.
-
Variablen beginnen in der Regel mit einem Kleinbuchstaben. Ausnahme: Im Pseudo-Code werden Großbuchstaben verwendet, wie beispielsweise \(A \in \mathbb{R}^{m \times n}\). Mathematische Vorgaben haben immer Vorrang.
-