next up previous contents
Next: Struktur von fastDNAml Up: Implementierung Previous: Implementierung

ANSI-C-Portierung und Strukturierung von fastDNAml

Grundlage für die Parallelisierung war das Programm fastDNAml von Olsen et al. (1994a,b). Dieses ist frei im Internet als Quellcode verfügbar. Startpunkt war der reine sequentielle Code, der gewonnen wurde, indem alle Teile des Quellcodes, die für den sequentiellen Ablauf nicht nötig waren, gelöscht wurden. Dies betraf in erster Linie Anpassungen im Originalcode, die von einer früheren Parallelisierung durch Matsuda et al. (1994) herrührten. Um diese Parallelisierung lauffähig zu machen, hätte es erstens weiterer Programmteile bedurft, die jedoch im regulären fastDNAml-Programmpaket nicht enthalten sind, und zweitens einer lauffähigen Installation der P4-Funktionsbibliothek, die von den Entwicklern am Argonne National Laboratory (ANL) nicht mehr weiterentwickelt und gepflegt wird.

Lediglich die Erweiterungen für Vektor-Rechner blieben zusätzlich im Quellcode erhalten.

Seit 1989 existiert der ANSI-Standard für die Programmiersprache C, der ein hohes Maß an Portabilität gewährleistet, da seit der Einführung für nahezu alle Rechner- und Betriebssystemtypen ANSI-C-Compiler implementiert sind. Hierdurch ist gewährleistet, daß, wenn man sich an diesen Standard hält, die Programme auf nahezu allen Systemen lauffähig, d.h. portabel sind. (ANSI, 1989; Harbison and Steele Jr., 1991)

fastDNAml ist im Original in Kernighan&Ritchie-C (K&R-C, nach Kerninghan and Ritchie 1988, die Anfang der 70er Jahre die Programmiersprache C entwickelt haben) geschrieben, das auf verschiedenen Computerplattformen immer mit anderen ,,Dialekten`` implementiert ist und deshalb eine portable Programmierung zunehmend erschwert.

Daher wurde anschließend der reine sequentielle Code zuerst nach ANSI-C portiert (Harbison and Steele Jr., 1991). Nach der Portierung wurde der so entstandene Code bzw. das daraus resultierende Programm daraufhin überprüft, ob es immer noch die gleichen Ergebnisse wie das Originalprogramm liefert.

Nachdem dieses gewährleistet war, wurde der Inhalt des Quellcodes auf seine Funktion hin untersucht, um den Code und dessen Funktion zu verstehen. Bei dieser Analyse wurde der Quellcode in verschiedene Module geteilt, um eine bessere Übersicht zu erhalten, welche Teile für welche Funktionen codieren.

Um das Compilieren (Übersetzen in ein dem Computer verständliches Format) der einzelnen Module zu vereinfachen, wurde ein Makefile erstellt. Danach kann der Compilierungsvorgang mit einem vor allem in der UNIX-Welt verbreiteten Programm namens make gesteuert werden, was ebenfalls der Portabilität von Software entgegenkommt, da weitreichende Anpassungen durch Ändern sogenannter Schalter innerhalb des Makefiles gesteuert werden können. (Oram and Talbott, 1991)

Die entstandene Modulstruktur der Parallelversion wird im Anhang A.6 beschrieben.

Da im allgemeinen auf leistungstärkeren Rechnern, genauso wie auf Parallelcomputern, das übliche Betriebsystem UNIX ist, wurden bei der Implementierung von pfastDNAml die Voraussetzungen von UNIX besonders berücksichtigt, soweit diese nicht vom ANSI-C-Standard abwichen.
(ANSI, 1989; Curry, 1989; Gilly, 1992; Harbison and Steele Jr., 1991)


next up previous contents
Next: Struktur von fastDNAml Up: Implementierung Previous: Implementierung
Heiko Schmidt
7/17/1997