4-Tageskurs „Parallele Programmierung mit MPI / OpenMP“

Zum zweiten Mal erfreute sich der 4-Tageskurs Parallel Programming with MPI/OpenMP im August 2017, organisiert von Thomas Wüst (ID SIS), grossem Interesse. 57 Teilnehmende aus 12 verschiedenen ETH-Departementen (D-BAUG, D-BSSE, D-CHAB, D-ERDW, D-GESS, D-HEST, D-ITET, D-MATH, D-MATL, D-MAVT, D-PHYS, D-USYS) und einer Technologie Plattform (NEXUS), anderen Schweizer und ausländischen Universitäten und Forschungsinstituten (u.a. Harvard University, Paul Scherrer Institut) und auch privaten Unternehmen (Disney Research, Infineon) nahmen dieses Jahr am Kurs teil.

Diese erfreuliche Anzahl (ein Zuwachs von mehr als 50% gegenüber dem letzten Jahr) demonstriert das grosse Interesse und Bedürfnis an einem solchen Angebot – zentral an der ETH Zürich und in intensiver, konzentrierter Form.

Referent des Kurses war Rolf Rabenseifner vom Höchstleistungsrechenzentrum Stuttgart (HLRS). Rolf Rabenseifner ist ein weltweiter Experte in paralleler Programmierung und Mitglied des MPI-Steering Committee. Er lehrt parallele Programmierkonzepte und Techniken an deutschen, und internationalen Universitäten und Forschungs- und Hochleistungsrechenzentren (z.B. Forschungszentrum Jülich) sowie in zahlreichen Workshops und Konferenzen (z.B. Supercomputing Konferenz). Es ist darum für die ID eine spezielle Ehre, Rolf Rabenseifner für diesen Kurs an der ETH Zürich zu gewinnen.

Der Kurs richtete sich sowohl an Anfängerinnen und Anfänger als auch an Fortgeschrittene mit einiger Programmiererfahrung in C/C++ oder Fortran, um in vier intensiven Tagen einen gut ausgewogenen (im Sinn von «breath and depth») Einblick in die parallelen Programmiermodelle MPI und OpenMP zu gewinnen. Optional konnte man sich auch nur für die ersten zwei (beginning level) oder die letzten beiden (advanced level) Kurstage anmelden. Die grosse Mehrheit der Teilnehmenden wählte jedoch den gesamten 4-Tageskurs. Angesichts der unterschiedlichen Herkunftsrichtungen, Expertise und Anforderungen der Kursteilnehmenden, vom ersten „Vortasten“ in die parallele Programmierung auf 10 CPU cores bis zur Skalierungsaufgabe auf >10’000 CPU cores, war es denn auch eine ziemliche Herausforderung den verschiedenen Bedürfnissen gerecht zu werden, welche Rolf Rabenseifner mit seinem didaktischen Geschick jedoch souverän meisterte.

MPI und OpenMP

MPI („Message Passing Interface“) stellt ein 1994 erstmals veröffentlichter und seither ständig überarbeiteter Standard dar, der den Nachrichtenaustausch bei parallelen Berechnungen auf verteilten Computersystemen beschreibt. Eine MPI-Applikation besteht in der Regel aus mehreren miteinander kommunizierenden Prozessen, die alle zu Beginn der Programmausführung parallel gestartet werden. Alle diese Prozesse arbeiten dann gemeinsam an einem Problem und nutzen zum Datenaustausch Nachrichten, welche von einem zum anderen Prozess geschickt werden. Ein Vorteil dieses Prinzips ist es, dass der Nachrichtenaustausch auch über Rechnergrenzen hinweg funktioniert (inter-node communication).1

OpenMP („Open Multi-Processing“) ist eine seit 1997 gemeinschaftlich von verschiedenen Hardware- und Compilerherstellern entwickelte Programmierschnittstelle (API) für die Shared-Memory-Programmierung in C/C++ und Fortran auf Multiprozessor-Computern. OpenMP kommt zum Einsatz auf Systemen mit gemeinsamem Hauptspeicher („shared memory“), während MPI eher für die Parallelisierung von verteilten Systemem („distributed memory“) gedacht ist. Bei modernen High-Performance und Supercomputern werden OpenMP und MPI oftmals zusammen eingesetzt.1

Trotz jüngeren Programmier-Entwicklungen, welche spezifische Möglichkeiten der Parallelisierung moderner Hardware Architekturen zum Teil einfacher abbilden können, stellen MPI und OpenMP nach wie vor die «workhorses» der parallelen Programmierung dar. Dies liegt einerseits an ihren generischen und vielseitigen Einsatzmöglichkeiten als auch an der grossen Anzahl von wichtigen, wissenschaftlichen „legacy“ codes.

Hands-on auf Euler HPC Cluster

Der 4-Tageskurs bot neben der Vermittlung der zum Teil komplexen, theoretischen Konzepte zusätzlich wichtige und notwendige Hands-on-Übungen an, welche die Teilnehmenden direkt auf dem ETH High Performance Compute Cluster Euler durchführen konnten. Euler verfügt über verschiedene, vom HPC Team ständig aktualisierte, MPI Implementationen und OpenMP-fähige Compiler für C/C++ und Fortran und ist dank seinem leistungsfähigen InfiniBand Interconnect bestens für parallele Applikationen ausgerüstet.

Terminplanung 2018

ID SIS plant den Kurs im 2018 wieder anzubieten. „Leider“ stösst der Kurs mit max. 60 Teilnehmenden auch schon an seine Kapazitätsgrenze, einerseits aufgrund der begrenzten, gegenwärtigen Räumlichkeiten (der Computerraum wurde uns freundlicherweise von der ISG D-USYS zur Verfügung gestellt), andererseits zur Gewährleistung einer hohen Qualität der Wissensvermittlung und Unterstützung der Teilnehmenden für die Übungen. Wir sind gespannt wie das Interesse nächstes Jahr sein wird.

20170821_155509
Grosse Konzentration trotz etwas engen Platzverhältnissen und sommerlichen Temperaturen während des 4-Tageskurses in paralleler Programmierung im August 2017 (Rolf Rabenseifner stehend mit weissgrau kariertem Hemd).

 

20170821_163219
Blocking vs non-blocking point-to-point communication „erlebbar“ gemacht…

Referenzen

  1. MPI Forum
  2. Message Passing Interface Tutorial (in englisch)
  3. OpenMP API Specification
  4. OpenMP Tutorial (in englisch)

1. Texte in geänderter und gekürzter Form von Wikipedia übernommen.

Posted on
in Kommunikation, News, Software, Arbeitsplätze, Support, Wissenschaftl. Rechnen Tags: , , , , , ,