Einleitung

Die hohe Rechenleistung der Convex-Rechner bei technisch-naturwissenschaftlichen Anwendungen ist i. W. auf die Vektorrechner-Architektur zurückzuführen, die Vektor- und Matrizenberechnungen besonders unterstützt. Um die theoretisch mögliche Rechenleistung annähernd zu erreichen, muß die entsprechende Vektor-Hardware auch möglichst intensiv genutzt werden. Dazu dienen zunächst die Compiler, die Sprachkonstruktionen, die sich zur Vektorisierung eignen, automatisch erkennen und ggf. durch Umstellungen des Programmcodes möglichst effektiv in Vektorbefehle umsetzen. Zusätzlich zu solchen Optimierungsmöglichkeiten der Standard-Compiler führt der sogenannte ``Application Compiler'' von Convex noch wesentlich umfangreichere Analysen durch und erzielt dadurch eine noch bessere Anpassung eines Programms an die Rechner-Architektur. Das Ergebnis der automatischen Optimierung kann man durch geeigneten Programmierstil verbessern, indem man von vornherein bestimmte Konstruktionen vermeidet, die die Vektorisierung behindern können. Außerdem gibt es Hilfsmittel, um das erzielte Ergebnis zu überprüfen und die kritischen Bereiche zu analysieren, damit gezielt weitere Verbesserungen angebracht werden können.

Neben der Vorstellung der grundlegenden Hilfsmittel zur Programmentwicklung auf der Convex sollen in diesem Papier die Handhabung der relevanten Werkzeuge und die Vorgehensweise bei der manuellen Anpassung der Programme vermittelt werden, mit dem Ziel, mit selbstentwickelten Programmen eine möglichst hohe Ausnutzung der Rechnerleistung erreichen zu können. Dabei wird auch auf notwendige Hintergrundinformationen zur Rechner-Architektur eingegangen.

Die Darstellungsweise soll einerseits zur möglichst direkten Umsetzung auf eigene Programme anregen, andererseits aber auch genügend ausführlich sein, um das Nachblättern in den Referenz-Handbüchern in den meisten Fällen überflüssig zu machen.1 Zu diesem Zweck werden in einem einführenden Abschnitt die wesentlichen Methoden und Hilfsmittel vorgestellt und an einem einfachen Beispielprogramm ausprobiert. Dann werden die weitergehenden Möglichkeiten der umfangreicheren Tools - der Debugger CXdb, der Profiler CXpa und der Application-Compiler-APC - besprochen.2 Schließlich wird ausführlich auf Methoden zur Verbesserung der Vektorisierung und Parallelisierung eingegangen und ihre Anwendung an zwei Beispielprogrammen ausprobiert.
Natürlich mußte aus der Vielzahl der Standard-UNIX-Tools zur Programmentwicklung ausgewählt werden, wobei einige sehr spezielle Kommandos - etwa fsplit oder pmd - weggefallen sind. Gab es zur Lösung eines Problems mehrere Möglichkeiten, wurde das Programm mit den umfassenderen Möglichkeiten ausgewählt.3 Aber nicht nur deswegen werden der alte Convex-Debugger csd, ein Derivat des weitverbreiteten dbx, und die Standard-Profiler der prof-Familie nicht behandelt. Sie werden nämlich, da durch CXdb und CXpa vollständig ersetzt, in zukünftigen Systemversionen wegfallen. Eine rechtzeitige Gewöhnung an die neuen Tools ist somit unerläßlich.

previous    contents     next

Peter Junglas 18.10.1993