Computational Sciences Center

Programmierung

Bei der Einarbeitung in ein neues Gebiet stellt sich häufig die Frage, wo man am besten anfängt. Bei der Programmierung ist häufig ein einfaches Beispielprogramm, etwa das klassische "Hello World", ein guter Ausgangspunkt, von dem aus man sich Schritt für Schritt weiter voran tasten kann.

Auf den folgenden Seiten sind einfache Beispielprogramme zu einer Reihe nützlicher Programmbibliotheken und Standards mit einigen erläuternden Worten zusammengefasst. Fragen und Verbesserungsvorschläge sind herzlich willkommen.

Vektorisierung: Viele moderne Prozessoren sind dazu in der Lage, eine Rechenoperation mit mehreren Operanden gleichzeitig auszuführen, also beispielsweise mit einem einzigen Befehl vier Additionen statt nur einer einzigen auszuführen. Häufig brauchen diese Vektoroperationen nicht viel länger als ihre skalaren Gegenstücke, so dass sich durch den geschickten Einsatz erhebliche Geschwindigkeitsgewinne erreichen lassen. Allerdings lässt sich nicht jeder Algorithmus so umschreiben, dass er von einer Vektorisierung profitieren kann.

Heterogene Systeme/GPGPU: Mit Hilfe geeigneter Programme und Schnittstellen lässt sich die Rechenleistung moderner Grafik- oder Koprozessorkarten für allgemeine Berechnungen nutzbar machen. Im Vergleich zu der Vektorisierung entsteht die zusätzliche Schwierigkeit, dass in der Regel die Kommunikation zwischen den unterschiedlichen Bestandteilen eines heterogenen Rechnersystems durch uns explizit gesteuert werden muss. Wie bei der Vektorisierung gilt auch hier, dass nicht jeder Algorithmus sich für die Umsetzung beispielsweise auf einer Grafikkarte eignet, weil Grafikkarten letzten Endes sehr hoch entwickelte Vektorrechner sind und deshalb deren Stärken und Schwächen teilen.