Abgabe Effiziente Programme WS04/04

Wer nicht unbedingt etwas anderes vorhat, soll dieses Jahr eine Shortest-Path-Routine optimieren; es existiert eine relativ einfache, nicht besonders optimierte Version, die Sie mittels korrektheitserhaltenden Tranformationen optimieren sollen.

Die zu optimierende Routine findet sich in einer speziellen Version von Gforth.

Am besten, sie packen dieses Paket in ihrem Account auf der b3 aus:

tar xvfz ~anton/lvas/effizienz/gforth-loader.tar.gz
cd gforth-loader
gforth-fast
cp test_rewrite test_rewrite.ref

Jetzt können Sie messen, wie lange das Laden und Optimieren des Images gforth.fi dauert:

perfex gforth-fast
(Die Laufzeit ist so kurz, dass time zu grob auflösen würde). Etwas mehr als die Hälfte dieser Zeit wird in der zu optimierenden Routine verbracht. Bei diesem Lauf wird nebenbei noch eine Datei test_rewrite erzeugt, die das Ergebnis des Optimierungsprozesses unabhängig von Einflüssen durch die Speicherverwaltung repraesentiert. Diese Datei kann man mit test_rewrite.ref vergleichen, um zu prüfen, ob man das Ergebnis nicht verändert hat:
diff test_rewrite test_rewrite.ref
(Vorsicht: das mitgelieferte test_rewrite.ref stammt von gforth, nicht von gforth-fast).

Die Routine selbst ist optimize_rewrite() in der Datei engine/main-loader.c. Diese Datei ist eine fuer den aktuellen Zweck modifizierte Variante der Datei engine/main-gforth.c; die Modifikationen bestehen hauptsaechlich darin, dass die modifizierte Variante Gforth nach dem Laden des Images (per default gforth.fi) verlässt, und ausserdem noch die Dateien test_rewrite und snapshot.fi schreibt.

Am einfachsten machen Sie die Übungen auf der b3, wo schon alle benötigte Software vorhanden ist. Woanders benötigen Sie auf jeden Fall ein halbwegs aktuelles Linux-i386 System und die ffcall Bibliotheken, und sinnvollerweise auch noch den perfctr-Patch und Anwendungen. Sollten Sie novh Fragen zur Installation haben, wenden Sie sich an mich.

Natürlich können Sie, wenn Sie wollen, auch die Implementierung eines anderen Problems oder eines anderen TSP-Algorithmus' optimieren; allerdings hat das einige Nachteile: Sie müssen einen Teil der Zeit Ihrer Präsentation für die Erklärung des Problems und des Algorithmus aufwenden, und die Ergebnisse sind nicht direkt vergleichbar.

Bereiten Sie eine 15-20-minütige Präsentation vor. Da Sie dabei nicht soviel Zeit haben wie ich in der Vorlesung, präesentieren Sie die meisten Schritte nur im Überblick (also eventuell nur, wieviel er gebracht hat), und nur ein paar besonders interessante Schritte mit mehr Details. Besonders interessant sind u.a. die Schritte, die unerwartet viel oder wenig bringen.

Um einen Vergleich zwischen den verschiedenen Lösungen zu ermöglichen, messen Sie mit perfex auf der b3 die Zyklen für Ihre verschiedenen Varianten.

Anton Ertl