FORTRAN - wi1.uni- Seminar Programmiersprachen FORTRAN 5 2 Historische Entwicklung 2.1 FORTRAN I 2.2 FORTRAN II, III, IV 2.3 FORTRAN 66 2.4 FORTRAN 77 2.5 Fortran 90

Download FORTRAN - wi1.uni-   Seminar Programmiersprachen FORTRAN 5 2 Historische Entwicklung 2.1 FORTRAN I 2.2 FORTRAN II, III, IV 2.3 FORTRAN 66 2.4 FORTRAN 77 2.5 Fortran 90

Post on 06-Mar-2018

231 views

Category:

Documents

14 download

TRANSCRIPT

1Seminar ProgrammiersprachenFORTRANRobert MoeckSeminar ProgrammiersprachenFORTRAN 2Gliederung1 Einfhrung2 Historische Entwicklung3 Ausgewhlte Features von Fortran4 Anwendungsgebiete5 Quick Sort6 Zusammenfassung und Ausblick2Seminar ProgrammiersprachenFORTRAN 31 Einfhrung FORmula TRANslation Entwicklung in den 1950er Jahren Erster Hochsprachen-Standard Viele Standardisierungen Numerische Rechenoperationen Hauptanwendung in Naturwissenschaften und IngenieurwesenSeminar ProgrammiersprachenFORTRAN 4Gliederung1 Einfhrung2 Historische Entwicklung3 Ausgewhlte Features von Fortran4 Anwendungsgebiete5 Quick Sort6 Zusammenfassung und Ausblick3Seminar ProgrammiersprachenFORTRAN 52 Historische Entwicklung2.1 FORTRAN I2.2 FORTRAN II, III, IV2.3 FORTRAN 662.4 FORTRAN 772.5 Fortran 902.6 Fortran 95Seminar ProgrammiersprachenFORTRAN 62.1 FORTRAN I 1957 Entwicklung desFORTRAN I-Compilersauf einem IBM 704 IBM-Team unterJohn W. Backus (Foto) Schnelle Verbreitung in Wissenschaft und Militr4Seminar ProgrammiersprachenFORTRAN 72.1 FORTRAN I Vorteile Enorme Effizienzsteigerung der Programmentwicklung Geringere Anforderungen an Programmierer Portabilitt !Seminar ProgrammiersprachenFORTRAN 82.2 FORTRAN II, III, IV 1958 FORTRAN II Separate Compilation einzelner Module 1958 FORTRAN III Nicht verffentlicht Integration von Assembler-Code inFortran-Code Assembler-Code: oft effizienter Aber: Verlust der Hochsprachen-Vorteile 1961 FORTRAN IV Aufarbeitung von FORTRAN II5Seminar ProgrammiersprachenFORTRAN 92.3 FORTRAN 66 Seit 1962 ASA (American Standards Association) beschftigt sich mit Fortran 1966 erster Hochsprachen-Standard: FORTRAN 66 Computer-Hersteller statten neue Rechner mit Fortran-Compilern ausSeminar ProgrammiersprachenFORTRAN 102.4 FORTRAN 77 1977 ISO-Standard: FORTRAN 77 somit weltweit Wichtigste Neuerungen Block-IF-Strukturen Pre-Test von DO-Schleifen Rckwrts laufende DO-Schleifen Datentyp CHARACTER6Seminar ProgrammiersprachenFORTRAN 112.4 FORTRAN 77 Bis einschl. FORTRAN 77: Spaltengerechte Codierung Lochkarten-Layout 1 Zeile = 80 Spalten Spalten 1 6: Spezielle Angaben Anweisungsmarken Einleitung von Kommentarzeilen Einleitung von Fortsetzungszeilen Spalten 7 72: Anweisungsteil Spalten 73 80: Identifikationsfeld (Kennlochungender Karten)Seminar ProgrammiersprachenFORTRAN 122.4 FORTRAN 77 Beispiel7Seminar ProgrammiersprachenFORTRAN 132.5 Fortran 90 Viele neue, mchtige Features Spaltenunabhngige Codierung Kontrollstrukturen CASE und DO WHILE Abstrakte Datentypen Operator-berladung Dynamische Speicherverwaltung ModularisierungSeminar ProgrammiersprachenFORTRAN 142.5 Fortran 90 Enthlt alle zentralen Bestandteile einer modernen Programmiersprache Vollstndig abwrtskompatibel zu FORTRAN 77 !8Seminar ProgrammiersprachenFORTRAN 152.6 Fortran 95 Wenige Neuerungen Mehr Korrekturen von Fortran 90 Untersttzung paralleler Programmierung forall PURESeminar ProgrammiersprachenFORTRAN 16Gliederung1 Einfhrung2 Historische Entwicklung3 Ausgewhlte Features von Fortran4 Anwendungsgebiete5 Quick Sort6 Zusammenfassung und Ausblick9Seminar ProgrammiersprachenFORTRAN 173 Ausgewhlte Features3.1 Grundlegende Programmstruktur3.2 Typkonzept3.3 Selbstdefinierte Ausdrcke3.4 Zeiger3.5 Felder3.6 Ein- und AusgabeSeminar ProgrammiersprachenFORTRAN 183.1 Grundlegende Programmstruktur Programmeinheiten sind Hauptprogramm Subroutinen (extern intern) Funktionen (extern intern) Module blockdata-Programmeinheiten In jeder Programmeinheit mssen Spezifikationsanweisungen vor ausfhrbaren Anweisungen stehen10Seminar ProgrammiersprachenFORTRAN 193.1 Grundlegende Programmstruktur Hauptprogramm Startet die Ausfhrung eines ProgrammsPROGRAM hallo_weltCHARACTER (LEN=6) :: H, WH = 'Hallo 'W = 'Welt !'PRINT *, H, WEND PROGRAM hallo_weltEinleitungSpezifikations-AnweisungenAusfhrbareAnweisungenEndeSeminar ProgrammiersprachenFORTRAN 203.1 Grundlegende Programmstruktur SubroutinenSUBROUTINE sub_name[([par][,par]...])] [Spezifikationsteil] [Ausfhrungsteil]END SUBROUTINE sub_name Extern als eigenstndige Programmeinheit Intern als Unterprogramm Einbindung mittels CONTAINS11Seminar ProgrammiersprachenFORTRAN 213.1 Grundlegende Programmstruktur Beispiel: Interne SubroutinePROGRAM hallo_weltPUBLIC :: halloCONTAINSSUBROUTINE halloPRINT *, 'Hallo Welt!'END SUBROUTINE halloCALL halloEND PROGRAM hallo_weltSeminar ProgrammiersprachenFORTRAN 223.1 Grundlegende Programmstruktur FunktionenFUNCTION func_name([par][,par]..)[Eingabepar.-Deklaration intent(in)][Ausgabepar.-Deklaration][sonstiger Spezifikationsteil] [Ausfhrungsteil] END FUNCTION func_name Extern als eigenstndige Einheiten Intern in anderen Programmeinheiten (CONTAINS)12Seminar ProgrammiersprachenFORTRAN 233.1 Grundlegende Programmstruktur Beispiel: Interne FunktionPROGRAM funktioniertPUBLIC :: hochdreiCONTAINSFUNCTION hochdrei(zahl)REAL, INTENT(IN) :: zahlREAL :: ergebnisergebnis = zahl * zahl * zahlEND FUNCTION hochdreiEND PROGRAM funktioniertSeminar ProgrammiersprachenFORTRAN 243.1 Grundlegende Programmstruktur ModuleMODULE mod_name[Spezifikationsteil]CONTAINS[beliebige Typvereinbarungen,Spezifikationen, Unterprogramme ]END MODULE mod_name Immer extern, nicht ausfhrbar Einbindung in anderen Programmeinheiten mittels USE13Seminar ProgrammiersprachenFORTRAN 253.1 Grundlegende Programmstruktur Beispiel: Modul (1)MODULE qsort_modulPUBLIC :: qsort_sub, zufallPRIVATE :: partitionCONTAINSRECURSIVE SUBROUTINE qsort_sub(array)[] END SUBROUTINE qsort_subSUBROUTINE partition(array, i)[] END SUBROUTINE partitionSUBROUTINE zufall(ein_array, laenge)[] END SUBROUTINE zufallEND MODULE qsort_modulSeminar ProgrammiersprachenFORTRAN 263.1 Grundlegende Programmstruktur Beispiel: Modul (2)PROGRAM Quick_SortUSE qsort_modul ! Einbindung des Moduls[] ! SpezifikationsteilCALL zufall(ein_array, laenge)[] ! Weitere AnweisungenCALL qsort_sub(ein_array)END PROGRAM Quick_Sort14Seminar ProgrammiersprachenFORTRAN 273.1 Grundlegende Programmstruktur blockdata-Programmeinheit Nicht ausfhrbar Initialisierung von Variablen gemeinsamer SpeicherbereicheBLOCKDATA [name][] ! Beliebige DeklarationenEND BLOCKDATA [name]Seminar ProgrammiersprachenFORTRAN 283.1 Grundlegende Programmstruktur Modularisierung Vorteile Komplexe Probleme lassen sich aufteilen Leichter berschaubar Compiler knnen kleine Einheiten besser optimieren Wiederverwendbarkeit von Code Besseres Debuggen Es gibt umfangreiche vordefinierte Bibliotheken, die genutzt werden knnen15Seminar ProgrammiersprachenFORTRAN 293.2 Typkonzept Fortran verwendet statische Typbindung Der Quellcode legt die Typen fest Typprfung zur CompilezeitSeminar ProgrammiersprachenFORTRAN 303.2 Typkonzept streng typisiert bedeutet Typ von Programmgegenstnden ist festgelegt und kann zur Compilezeit bestimmt werden Typprfung kann durchgefhrt werden Keine Typfehler bleiben unentdeckt Fortran ist schwach typisiert Mischung mit Eigenschaften typloser Sprachen Typen nicht disjunkt16Seminar ProgrammiersprachenFORTRAN 313.2 Typkonzept Implizite Deklaration von Variablen Nicht alle Variablen mssen explizit deklariert werden Grundstzliche Typkonvention Integer bei Anfangsbuchstaben i n Real sonstSeminar ProgrammiersprachenFORTRAN 323.2 Typkonzept Implizite Deklaration von Variablen Mit IMPLICIT lassen sich Buchstabenbereiche festlegen, die die grundstzliche Typkonvention ndern / erweitern BeispielIMPLICIT TYPE(student) (s), TYPE(dozent) (d)! Alle Variablen mit s sind vom Typ student,! Alle Variablenmit d sind vom Typ dozent.17Seminar ProgrammiersprachenFORTRAN 333.2 Typkonzept Implizite Deklaration von Variablen Nachteile Fehleranflligkeit Schlechtere Nachvollziehbarkeit Explizite Typdeklaration kann mit der Anweisung IMPLICIT NONE im Spezifikationsteil einer Programmeinheit erzwungen werdenSeminar ProgrammiersprachenFORTRAN 343.2 Typkonzept Selbstdefinierte Datentypen Aus existierenden Typen knnen neue, komplexere Datentypen abgeleitet werden BeispielTYPE studentCHARACTER (LEN=20) :: nameINTEGER :: matr_nrTYPE (wohnort) :: adresseEND TYPE student18Seminar ProgrammiersprachenFORTRAN 353.2 Typkonzept Selbstdefinierte Datentypen Beispiel (Forts.)TYPE student, DIMENSION(150) :: studenten! Feld mit 150 StudentenPRINT *, studenten(42)%matr_nr! Gibt Matr.-Nr. von Student Nr. 42 aus Knnen PUBLIC und PRIVATE sein Die Reihenfolge der Strukturkomponenten legt i.d.R. keine Speicherfolge festSeminar ProgrammiersprachenFORTRAN 363.3 Selbstdefinierte Ausdrcke Bestehen aus Operanden selbstdefinierten und/oder vordefinierten Typs und selbstdefinierten und/oder erweiterten vordefinierten Operatoren Selbstdefinierte Operatoren mssen in einem Schnittstellenblock beschrieben werden19Seminar ProgrammiersprachenFORTRAN 373.3 Selbstdefinierte Ausdrcke Beispiel: zweiwertiger Operator .abst.INTERFACE OPERATOR (.abst.)FUNCTION abstand (a, e)REAL, DIMENSION(2), INTENT(IN) :: a, eEND FUNCTION abstandEND INTERFACE[]FUNCTION abstand (a, e)REAL, DIMENSION(2), INTENT(IN) :: a, eabstand = SQRT(ABS(a(1)e(1))**2 (a(2)e(2))**2))END FUNCTION abstandSeminar ProgrammiersprachenFORTRAN 383.3 Selbstdefinierte Ausdrcke berladung Die Funktionalitt eines vor- oder selbstdefiniertenOperators kann gendert bzw. erweitert werden Es liegen mind. 2 Operatorfunktionen vor Eigenschaften der Operanden bestimmen, welche Operatorfunktion (implizit) ausgefhrt wird20Seminar ProgrammiersprachenFORTRAN 393.4 Zeiger Zeiger ist in Fortran kein eigenstndiger Datentyp ! Attribut POINTER kennzeichnet eine Variable als Zeiger Belegt unspezifische Speichereinheit Ziele mssen ein TARGET-Attribut haben oder werden dynamisch erzeugt (ALLOCATE) Ist eine Zeiger-Variable einem Ziel zugeordnet, entspricht der Zugriff auf den Zeiger einem Zugriff auf das ZielSeminar ProgrammiersprachenFORTRAN 403.4 Zeiger Zeigerzustnde undefiniert Nach Initialisierung des Zeigers(z.B. REAL, POINTER :: ein_zeiger) zugeordnet Nach Zuordnung zu einem (anderen) Ziel(ALLOCATE oder =>) nicht zugeordnet Nach Aufhebung der Zuordnung(NULLIFY oder DEALLOCATE)21Seminar ProgrammiersprachenFORTRAN 413.4 Zeiger BeispieleCHARACTER (LEN=75), POINTER :: p1, p2ALLOCATE (p1, p2)[]DEALLOCATE(p1); NULLIFY(p2)!------------------------------------------REAL, DIMENSION(1000, 1000), TARGET :: A, BREAL, DIMENSION(:, :), POINTER :: Alt, NeuAlt => ANeu => BDO[] ! Aus "Alt" berechne "Neu"END DOSeminar ProgrammiersprachenFORTRAN 423.4 Zeiger Der Zuordnungsstatus darf in Unterprogrammen gendert werden und bleibt beim Rcksprung bestehen Nicht mglich Zeiger auf Konstanten NIL-Zeiger(ein_zeiger => null() erst in Fortran 95) Zeigerfeld, dessen Elemente Zeiger sind Adressarithmetik22Seminar ProgrammiersprachenFORTRAN 433.5 Felder Regelmige Anordnung von skalarenDatenelementen gleichen Typs Max. 7 Dimensionen Zeilen, Spalten, Ebenen Jede Dimension mit beliebig vielen Elementen Jedes Feldelement wird durch ein Index-Tripel identifiziertSeminar ProgrammiersprachenFORTRAN 443.5 Felder Indizierung der Feldelemente Index-Tripel: (Zeile, Spalte, Ebene)23Seminar ProgrammiersprachenFORTRAN 453.5 Felder Reihenfolge der Feldelemente Erst werden die Indizes der 1. Dimension durchlaufen Danach wird der Index der 2. Dimension um 1 erhht, und wieder werden die Indizes der 1. Dimension durchlaufen Ist die 2. Dimension abgearbeitet, wird der Index der 3. Dimension um 1 erhht Meistens erfolgt so auch die Speicherung der WerteSeminar ProgrammiersprachenFORTRAN 463.5 Felder Feld mit expliziter Gestalt Index-Grenzen genau festgelegt durch Konstanten, aber auch Variablen ( automatisches Feld) Feld mit bernommener Gestalt bernimmt Gestalt vom bergebenen Parameterfeld Elemente-Anzahl je Dimension dadurch bestimmt Feld mit offener Gestalt (ALLOCATABLE) Keine Index-Grenzen festgelegt Nicht initialisierbar Speicherplatz-Zuweisung erst bei ALLOCATE24Seminar ProgrammiersprachenFORTRAN 473.5 Felder Feld mit expliziter GestaltDIMENSION (55, 14:22) :: exp_gestDIMENSION (-5:n, 10, n) :: auto_feld Feld mit bernommener GestaltDIMENSION (1950:1989, 2:4) :: ein_feldCALL sub(ein_feld)SUBROUTINE sub(par_feld)REAL, DIMENSION (0:, :) :: par_feldEND SUBROUTINE sub! par_feld bernimmt die Gestalt von ein_feld, ! die 1. Dimension hat Gre 40 (von 0 bis 39),! die 2. Dimension hat Gre 3 (von 1 bis 3)Seminar ProgrammiersprachenFORTRAN 483.5 Felder Feld mit offener Gestalt (ALLOCATABLE)REAL, ALLOCATABLE, DIMENSION(:) :: aREAL, ALLOCATABLE, DIMENSION(:, :) :: bREAL, ALLOCATABLE, DIMENSION(:, :, :) :: cALLOCATE(a(-n:n)) ! Erst jetzt wirdALLOCATE(b(n, 0:2*n)) ! SpeicherplatzALLOCATE(c(n, n:2*n, n)) ! angefordert25Seminar ProgrammiersprachenFORTRAN 493.5 Felder Arten von Feldern / Speicherverwaltung Automatisches Feld Wird beim Aufruf eines Unterprogramms erzeugt Beim Rcksprung in das aufrufende Programm wird es wieder gelscht und der Speicherplatz freigegeben Beispiel fr Verwendung Bentigt wird ein temporres Feld, dessen Gre von anderen Variablen abhngtSeminar ProgrammiersprachenFORTRAN 503.5 Felder Arten von Feldern / Speicherverwaltung Dynamisches Feld Wird im Spezifikationsteil einer Programmeinheit deklariert (ALLOCATABLE), zunchst ohne Index-Grenzen Existiert physisch nicht, bis es initialisiert, d.h. Speicher angefordert, wird berlebt den Rcksprung, der Zustand ist dann aber undefiniert (Abhilfe: SAVE) Explizites Lschen mittels DEALLOCATE26Seminar ProgrammiersprachenFORTRAN 513.5 Felder Arten von Feldern / Speicherverwaltung Feldzeiger Wird im Spezifikationsteil einer Programmeinheit deklariert (POINTER), zunchst ohne Index-Grenzen Existiert physisch nicht, bis es initialisiert, d.h. Speicher angefordert, wird (ALLOCATE) Explizites Lschen mittels DEALLOCATESeminar ProgrammiersprachenFORTRAN 523.5 Felder Beispiele: Arten von FeldernREAL, DIMENSION (1:15, 5, 10) :: a! Feld mit expliziter GestaltREAL, DIMENSION (:, 5:) :: b! Feld mit bernommener GestaltREAL, ALLOCATABLE, DIMENSION (:, :) :: c! Dynamisches FeldREAL, POINTER, DIMENSION (:) :: d! Feldzeiger27Seminar ProgrammiersprachenFORTRAN 533.5 Felder Vergleich Zeiger Felder Zeiger und automatische/dynamische Felder hneln sich und leisten in etwa das gleiche Aber Felder sind weniger fehleranfllig (insb. in Bezug auf Speicherverwaltung) Dangling Pointers Garbage Collection nicht bei allen Compilern liefern bessere Performance mehrere Zeiger knnen auf dasselbe Ziel zeigen( berflssige Arbeit fr den Compiler)Seminar ProgrammiersprachenFORTRAN 633.6 Ein- und Ausgabe Grundlage des Dateisystems ist der Datensatz Arten von Datenstzen Formatgebundene (mit FORMAT-Attribut) Formatfreie (interne Darstellung) Dateiendesatz (ENDFILE) Datei = Folge zusammenhngender Datenstze Auf externen Medien abgelegt Intern als Speicherbereich28Seminar ProgrammiersprachenFORTRAN 643.6 Ein- und Ausgabe Sequenzielle Verarbeitung Reihenfolge der Datenstze relevant Der n-te Datensatz kann erst nach dem Lesen der (n-1) vorherigen Datenstze gelesen werden Direkter Zugriff Reihenfolge-unabhngig Adresse eines Datensatzes= Produkt aus Datensatzlnge und Datensatznummer Datensatznummer wird vom Medium verwaltetSeminar ProgrammiersprachenFORTRAN 653.6 Ein- und Ausgabe Ein- und Ausgabeanweisungen Datenbertragung READ WRITE PRINT Dateistatus OPEN CLOSE INQUIRE Positionierung (bei sequenziellen Dateien) BACKSPACE REWIND ENDFILE29Seminar ProgrammiersprachenFORTRAN 663.6 Ein- und Ausgabe BeispielOPEN (11, FILE=x, ACCESS=DIRECT, FORM=FORMATTED, RECL=80) ffnet die Datei 'x' formatgebunden mit Direktzugriff und einer Datensatzlnge von 80 Zeichen und verbindet sie mit der E/A-Einheit 11 (z.B. Monitor) Weitere sinnvolle Parameter: Sprungmarken beim Auftreten von FehlernERR=20 Springt zu Anweisung 20, die den Fehler abfngt o..Seminar ProgrammiersprachenFORTRAN 673.6 Ein- und Ausgabe Formatgebundene Datenstze werden beim Einlesen in eine interne Binrdarstellung konvertiert und umgekehrt Vorteile Gut lesbar Portabilitt Nachteile Kostet Zeit und Platz Ungenauer30Seminar ProgrammiersprachenFORTRAN 683.6 Ein- und Ausgabe Formatfreie Datenstze belieben in interner Binrdarstellung des ausfhrenden Rechners Vorteile Zeit Genauigkeit Speicherplatz Nachteile Portabilitt Lesbarkeit Fazit: Dienen Daten nur der Computer-verarbeitung, ist formatfreie Art vorzuziehenSeminar ProgrammiersprachenFORTRAN 693.6 Ein- und Ausgabe FORMAT-Anweisung Wird in formatgebundenen E/A-Anweisungen benutzt Es lassen sich fr alle Typen die gewnschten Formate konfigurieren Formatdeklarationen knnen mit Anweisungsmarken versehen werden Wiederverwendbarkeit Formatdeklarationen drfen an jeder beliebigen Stelle im Quellcode stehen31Seminar ProgrammiersprachenFORTRAN 703.6 Ein- und Ausgabe Beispiel: FORMAT-AnweisungDATA i, j, k, l, me /1, 2, 3, 4, 5/WRITE (12, FMT=22) i, j, k, l, meWRITE (12, FMT=11)11 FORMAT (4('------+'),'------')5 READ (*, *, END=90) i, j, k, l, meWRITE (12, FMT=22) i, j, k, l, me22 FORMAT (5(' ',I3,:,' |'))GOTO 590 CONTINUEWRITE (12, FMT=11)Seminar ProgrammiersprachenFORTRAN 713.6 Ein- und Ausgabe erzeugt die Tabelle:1 | 2 | 3 | 4 | 5------+------+------+------+------22 | 549 | 9 | 46 | 221142 | 5 | 66 | 8 | 51923 | 31 | 0 | 938 | 66------+------+------+------+------32Seminar ProgrammiersprachenFORTRAN 723.6 Ein- und Ausgabe Weitere FORMAT-Spezifikationen A-Format Zeichendaten B-Format Binre Daten D-, E-, F-Format Reelle, doppelt genaue, komplexe Zahlen G-Format Daten beliebigen vordefinierten Datentyps H-Format Zeichenfolgen I-Format Ganzzahlige Daten L-Format Logische Daten O-Format Oktale Daten S-, SP-, SS-Format Vorzeichensteuerung T-, X-Format Tabulatoren Z-Format Hexadezimale DatenSeminar ProgrammiersprachenFORTRAN 73Gliederung1 Einfhrung2 Historische Entwicklung3 Ausgewhlte Features von Fortran4 Anwendungsgebiete5 Quick Sort6 Zusammenfassung und Ausblick33Seminar ProgrammiersprachenFORTRAN 744 Anwendungsgebiete4.1 Typische Beispiele4.2 Parallele ProgrammierungSeminar ProgrammiersprachenFORTRAN 754 Anwendungsgebiete Einsatz von Fortran hauptschlich in analytischen und numerischen Berechnungen in Naturwissenschaften und im Ingenieurwesen Vorteile Hohe Ausfhrungsgeschwindigkeit Gute Lesbarkeit Riesige Menge an bereits implementierten Lsungen34Seminar ProgrammiersprachenFORTRAN 764.1 Typische Beispiele Deformationsberechnungen von Automobilteilen Strmungssimulation von Flugzeugteilen Staudammberechnungen Berechnung elektromagnetischer Felder umfangreiche Wetterprognosen Seminar ProgrammiersprachenFORTRAN 774.2 Parallele Programmierung Anstze SIMD (Single Instruction Multiple Data) eine (einzige) Operation wird auf mehrere Datenbereiche angewendet Datenparallelisierung MIMD (Multiple Instruction Multiple Data) simultan operieren unterschiedliche Funktionen oder Subroutinen auf verschiedenen Datenbereichen35Seminar ProgrammiersprachenFORTRAN 784.2 Parallele Programmierung Ist Fortran dafr geeignet ? Die hohe Effizienz der Sprache spricht dafr Fortran 90 untersttzt in erster Linie SIMD-Features Arrays Intrinsische Funktionen Broadcasts Fortran 95 bietet mit forall und PURE mehr Features des MIMD-ModellsSeminar ProgrammiersprachenFORTRAN 794.2 Parallele Programmierung Fortran-Erweiterungen High Performance Fortran (HPF) Gezielte Implementierung von MIMD-Features OpenMP (Open Multi Processing) Sammlung von Compiler-Direktiven, Bibliotheksroutinen und Umgebungsvariablen Parallelisierung durch gemeinsame Speichernutzung Fork-Join-Prinzip Problem in parallelen Bereichen auf mehrere CPUs verteilt Einzelergebnisse an der nchsten seriellen Stelle wieder zu einem gemeinsamen Ergebnis zusammengefhrt 36Seminar ProgrammiersprachenFORTRAN 804.2 Parallele Programmierung OpenMP Fork-Join-PrinzipSeminar ProgrammiersprachenFORTRAN 81Gliederung1 Einfhrung2 Historische Entwicklung3 Ausgewhlte Features von Fortran4 Anwendungsgebiete5 Quick Sort6 Zusammenfassung und Ausblick37Seminar ProgrammiersprachenFORTRAN 825 Quick Sort Grundlegende Strukturmodule qsort_modul[]end module qsort_modulprogram Quick_Sort[]end program Quick_SortSeminar ProgrammiersprachenFORTRAN 835 Quick Sort Das Modul qsort_modul Sichtbare Zufallsgenerator-Subroutine (zufall) Fllt das bergebene Array mit Pseudozufallszahlen Interne Sortier-Subroutine (partition) Der eigentliche Sortiervorgang Weiterbewegen der Zeiger Vertauschen der Elemente, falls erforderlich Sichtbare QuickSort-Subroutine (qsort_sub) Ruft rekursiv die Sortier-Subroutine auf alle Teilbereiche des bergebenen Arrays auf, solange deren Lnge > 038Seminar ProgrammiersprachenFORTRAN 845 Quick Sort Das Hauptprogramm Quick_Sort Einbindung des Moduls mittels USE Spezifikationsteil mit allen zu verwendenden Variablen Starten des Zufallsgenerators Zeitmessung vor Ausfhrung Sortieren Zeitmessung nach Ausfhrung Ausgabe auf dem BildschirmSeminar ProgrammiersprachenFORTRAN 850510152025303540100 1.000 10.000 20.000 50.000 100.000 250.000 500.000 1.000.000 2.000.000 5.000.000Array-GreAusfhrungszeit [Sek]Fortran 90Java5 Quick SortPerformance im Vergleich zu JavaIntel Celeron II, 433 MHz, 256 MB RAM39Seminar ProgrammiersprachenFORTRAN 865 Quick Sort Ergebnis Java ist knapp 50% schneller als Fortran 90 Java-Quellcode ist nur ca. 20 Zeilen lang,Fortran-Quellcode dagegen ca. 70 ZeilenSeminar ProgrammiersprachenFORTRAN 87Gliederung1 Einfhrung2 Historische Entwicklung3 Ausgewhlte Features von Fortran4 Anwendungsgebiete5 Quick Sort6 Zusammenfassung und Ausblick40Seminar ProgrammiersprachenFORTRAN 886 Fazit und Ausblick Fortran ist die lteste Hochsprache, steht aber zu unrecht in dem Ruf veraltet zu sein Viele gut getestete Compiler Umfangreiche, unentbehrliche Bibliotheken Abwrtskompatibilitt Groer Nutzerkreis Erweiterbarkeit in Richtung Objektorientierung und Paralleler ProgrammierungSeminar ProgrammiersprachenFeddich Fragen ?

Recommended

View more >