Parallele Programmierung in Fortran mit OpenMP

Die meisten Fortran Programmierer erstellen nach wie vor Programme, die seriell ablaufen. D.h. ein Programmierbefehl wird nach dem anderen in einem einzigen Thread (Ausführungsstrang, -prozeß) abgearbeitet. Und das, obwohl sie inzwischen mit PCs arbeiten, die einen Mehrkernprozessor (multi-core processor) besitzen.
Fortran selbst bietet seit Fortran 95 Befehle, mit denen man Teile eines Programms parallelisieren kann. Da wären u.a. zu nennen:
FORALL, WHERE, DO CONCURRENT
Und seit Fortran 2003 stehen Co-Arrays zur Verfügung. Unsere Schulung "Modernes Fortran" liefert hier eine Einführung mit zahlreichen Beispielen und Erläuterungen.
Leider sind die Möglichkeiten aber beschränkt. Insbesondere mangelt es an konkreten Steuerungsmöglichkeiten.

Mit OpenMP wird seit 3 Jahrzehnten eine Programmiersprachenerweiterung fortwährend weiterentwickelt, die Abhilfe schafft, und auch in einigen Fortran Compilersystemen integriert ist. Einzelheiten sind unter https://www.openmp.org/ nachzulesen. Z.B. Intel ermöglicht mit seinen Fortran Compiler OpenMP mithilfe sog. Direktiven, die in Kommentarzeilen "verpackt" sind, zu nutzen. Beispiel:

!$OMP PARALLEL DO
  do i = 1, N
    a(i) = i*2
  end do
!$OMP END PARALLEL DO

Auf der zuvorgenannten OpenMP WebSite finden sich auch diverse Buchverweise, Tutorials etc. ( https://www.openmp.org/resources/tutorials-articles/) , mit denen man die Nutzung von OpenMP selbst erlernen kann. Als sehr hilfreich erscheinen uns die Video-Tutorials von Tim Mattson, einem bei Intel angestellten Wissenschaftler, der an der Entwicklung von OpenMP beteiligt ist bzw. war:

Tim Mattson's (Intel) "Introduction to OpenMP" (2013) on YouTube.
+ Slides: Intro_To_OpenMP_Mattson.pdf
+ Exercise files: Mattson_OMP_exercises.zip

Da die meisten der dort vorgestellten Beispiele in C/C++ notiert sind, sind diese von QT auch in Fortran erhältlich:
https://www.qtsoftware.de/temp/qtFortranExamples/qtOpenMP.zip
Neben den Fortran Quellcodedateien sind auch für Nutzer von Microsoft Visual Studio Projektdateien (.vproj) enthalten, die es erlauben die Programme per 'Build' bequem zu erstellen und auszuprobieren.

Sind sind kostenlos für Kunden, die von uns in 2023 eine Intel oneAPI Lizenz oder eine Wartungserneuerung (SSR) erworben haben. Wenn das auf Sie zutrifft, senden Sie uns eine kurze Email mit der Lieferscheinnummer, und Sie erhalten postenwendend das Paßwort zum Entpacken der Datei.

Note: The OpenMP name and the OpenMP logo are registered trademarks of the OpenMP Architecture Review Board

(C) Copyright QT software GmbH, 2023


zur QT software Homepage