Praktikum: Paralleles Programmieren für Geowissenschaftler

Ähnliche Dokumente
Einführung in das parallele Programmieren mit MPI und Java

Projektseminar Parallele Programmierung

Parallel Programming: Message-Passing-Interface

Hochleistungsrechnen Hybride Parallele Programmierung. Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen

Parallel Processing in a Nutshell OpenMP & MPI kurz vorgestellt

Instruktionssatz-Architektur

Parallele Programmierung mit OpenMP

Linux-Cluster mit Raspberry Pi. Dr. René Richter Sächsische Studienakademie Dresden

Parallelverarbeitung. Parallelverarbeitung. 2. Grundlagen. 2. Grundlagen. 2.1 Parallelität

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven

2 Dieter an Mey, SunHPC 2002, Einleitung 10000, , ,000 10,000 1,000 0,100 0,010. 0,001 Cyber 175 Cyber 205

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013. WebSphere MQ Teil 3

Einführung in die Parallele Programmierung

Paralleles Programmieren mit MPI und OpenMP

SS 08. Systemprogrammierung unter Linux. Client Server Projekt. Elektronische Tafel. Seite

Einführung in die Systemprogrammierung unter Linux

Moderne parallele Rechnerarchitekturen

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

CHiC Chemnitzer Hochleistungs-Linux Cluster. Stand HPC Cluster CHiC. Frank Mietke, Torsten Mehlan, Torsten Höfler und Wolfgang Rehm

0. Einführung. C und C++ (CPP)

Übungen zu den Kursen Unix Grundlagen und Message Passing mit MPI Hans Joachim Pflug

Klausur zu High Performance Computing 09. Juli 2011, SS 2011

Parallele Programmierung mit MPI

Protected User-Level DMA in SCI Shared Memory Umgebungen

1. Java ist Stammbaum der Programmiersprachen 3. Die "Softwarekrise"

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance

Staff. Tim Conrad. Zeitplan. Blockseminar: Verteiltes Rechnen und Parallelprogrammierung. Sommer Semester Tim Conrad

1. Übung zu "Numerik partieller Differentialgleichungen"

Schmitt, Günter (1996): Fortran 90 Kurs technisch orientiert, R. Oldenbourg Verlag, München

Vorlesung C-Kurs 9:15-10:45 Mathe 11:15-12:45 1. Woche Hörsaal 1 2. Woche Hörsaal 7

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Systemprogrammierung: Erste Schritte (P) Das Manpage-System (P) Versionsverwaltung mit Subversion (P)

Client/Server-Systeme

Software-Architektur Actors

Grundlagen der Parallelisierung

4. Parallelprogrammierung

Nutzung paralleler Prozesse bei der Umweltsimulation

Computational Biology: Bioelektromagnetismus und Biomechanik

Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome

Intel Cluster Studio. Michael Burger FG Scientific Computing TU Darmstadt

In Erlang(en) Concurrency Oriented Programming. Jan Hermanns

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester

Parallelverarbeitung

Parallelrechner (1) Anwendungen: Simulation von komplexen physikalischen oder biochemischen Vorgängen Entwurfsunterstützung virtuelle Realität

Routing im Internet Wie findet ein IP Paket den Weg zum Zielrechner?

Visualisierung paralleler bzw. verteilter Programme

Karlsruher Institut für Technologie

Vorstellung des Fachgebietes Technische Informatik

Informationsverarbeitung im Bauwesen

RWTH - Umgebung. Übersicht. Seite 1. RWTH-Umgebung. Sun Grid Engine. Dateimanagement. Archiv. Backup. Seite 2. RWTH-Umgebung

Java Einführung Methoden in Klassen

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Programmierung in Python

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

Kurz: Stimme meinen Vorrednern zu: Angenehme Atmosphäre. Eher ein Fachgespräch als eine Prüfung. Eindeutig zu empfehlen

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Speicherbasierte Kommunikation (T) Realisierung von Semaphoren (T) Shared Memory (P) Synchronisation mittels Semaphoren (P)

Programming Models for Cell BE

Parallelisierung auf MPSoC-Plattformen

b) Gegeben sei folgende Enumeration: enum SPRACHE {Deutsch, Englisch, Russisch};

Dialekte der Klimaforschung

Schleifenprogrammierung in C/C++, Fortran und Pascal

Parallele Programmierung mit OpenMP und MPI

Ergänzungen zum Manual OS V 2.05/2.06

OpenCL Implementierung von OpenCV Funktionen

Modellierung und Programmierung 1

Entwicklung mit mehreren Dateien

Deklarationen in C. Prof. Dr. Margarita Esponda

Prototypvortrag. Exploiting Cloud and Infrastructure as a Service (IaaS) Solutions for Online Game Service Provisioning. Projektseminar WS 2009/10

13. Übung mit Musterlösung

Interrupts. Funktionsprinzip. Funktionsprinzip. Beispiel in C

Propädeutikum. Dipl.-Inf. Frank Güttler

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr SS INSTITUT FÜR ELEKTRONIK BIT

Linux Cluster in Theorie und Praxis

IT-Infrastruktur, WS 2014/15, Hans-Georg Eßer

Laborübung SNMP. Aufgabe 1: SNMP Basics genutzter Agent: (VM_SNMP_Win_XP)

Grundlagen der Rechnernetze. Internetworking

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Threads und OpenMP. Frank Mietke Cluster- & Gridcomputing Frank Mietke 7/4/04

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Energy-Efficient Cluster Computing

Einführung in die C-Programmierung

D i g i t a l l a b o r

Angewandte Kryptografie Praktikum 0

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

Parastation3. Design und Implementierung. ALiCE-Seminar 13. November Thomas Moschny

Fortgeschrittene Servlet- Techniken. Ralf Gitzel

L4. Erster Schritt zum Programmieren

IBM Informix Tuning und Monitoring

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

MEYTON CGI Display Controller

Vorlesung Informatik II

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013. WebSphere MQ Teil 2

C C. Hochleistungsrechnen (HPC) auf dem Windows Compute Cluster des RZ der RWTH Aachen. 1 WinHPC Einführung Center. 31.

Seminarbericht Rechnernetze XML Web Services Schnittstelle zwischen den Welten.NET und Java

Transkript:

Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Nathanael Hübbe hermann.lenhart@zmaw.de

MPI Einführung I: Hardware Voraussetzung zur Parallelen Programmierung MPI Nachrichtenaustausch Send/Receive Syntax MPI Umgebungsvariablen Paralleles Progrm. für Geowisssenschaftler hermann.lenhart@informatik.uni-hamburg.de Seite 2

Möglichkeiten der Parallelen Programmierung : Generell abhängig von der Hardware: OpenMP - Möglich bei der Nutzung von gemeinsamem Speicher (shared memory directives) MPI (Message-Passing Interface) - bei Rechnerarchitektur mit verteiltem Speicher - derzeit einziger Standard mit Portabilität auf allen Plattformen Hybride Programmierung: Kombination von MPI und OpenMP Seite 3

OpenMP - Hardware Voraussetzung ist gemeinsamer Speicher SMP: Symmetrisches Multiprozessersystem (symmetric multiprocessing) Auf die Daten im gemeinsamem Speicher kann jederzeit von jedem Prozess aus zugegriffen werden. (nach Ludwig WS12/13) Seite 4

MPI Hardware Vorraussetzung (nach Ludwig WS12/13) Keinen direkten Zugriff auf Memory (Daten) von anderen Prozessen. Datenverfügbarkeit über expliziten Datenaustausch (Senden/Empfangen) mit anderen Prozessen! Seite 5

Hybride Programmierung Existierende HLR sind heute meist eine Kombination aus Rechnerknoten mit gemeinsamem Speicher, von den man viele verwendet und über ein Verbindungsnetz verbindet. Ermöglicht die Kombination von MPI und OpenMP (nach Ludwig WS12/13) Seite 6

MPI (Message Passing Interface) - Nachrichtenaustausch MPI Nachrichten sind Datenpakete die zwischen Prozessen ausgetauscht werden. Hardware Rahmenbedingungen: Keinen direkten Zugriff auf Memory (Daten) von anderen Prozessen. Datenverfügbarkeit nur über expliziten Datenaustausch (Senden/Empfangen) mit anderen Prozessen! Seite 7

MPI Nachrichtenaustausch Der MPI Nachrichtenaustausch im Vergleich zum FAX Für einfachste Art der MPI Kommunikation - (Wolfgang Baumann ZIB, 2009; Point to Point Communication: Parallel Programming with MPI) Ein Prozess sendet eine Nachricht zu einem Anderen, und erhält Information über die ordnungsgemäße Zustellung (!) SS 2013 - Praktikum Seite 8 02.05.2013

MPI Nachrichtenaustausch Der Nachrichtenaustausch bedarf folgender Informationen: Sendender Prozess Datentyp Datenlänge Empfangender Prozess Status der Nachricht Nachrichtenumgebung (z.b. wieviele Prozesse sind vorhanden?) Seite 9

MPI Send/Receive Syntax I MPI_SEND(Message, Count, Datatype, Dest, Tag, Comm, Ierror) z.b: Call MPI_SEND(temp, 1, MPI_Real, dest, tag, MPI_COMM_World, Ierror) temp Adresse des Sendepuffers; Real :: temp 1 Count Anzahl der Elemente im Puffer MPI_Real Datentyp des gesendeten Elementes dest Angabe des Ranges des Zielprozesses; integer :: dest tag Nachrichtenkennung; integer :: tag MPI_COMM_World Kommunikator (Gruppe, Kontext) Ierror Fehlerstatus; integer :: Ierror Seite 10

MPI Send/Receive Syntax II MPI_COMM_World Kommunikator (Gruppe, Kontext) Der Kommunikator ist eine Variable welche eine Gruppe von Prozessen definiert die miteinander kommunizieren dürfen. Es gibt einen default Kommunikator MPI_COMM_WORLD welcher die Gruppe aller vorhandenen Prozesse (hier 6) automatisch definiert. In einem Programm können mehrere Kommunikatoren gleichzeitig definiert werden. Seite 11

MPI Send/Receive Syntax III MPI_RECV(Message, Count, Datatype, Source, Tag, Comm, status, Ierror) Call MPI_RECV(temp, 1, MPI_Real, dest, tag, MPI_COMM_World, status, Ierror) temp Adresse des Sendepuffers; Real :: Vector 1 Count Anzahl der Elemente im Puffer MPI_Real source Datentyp des gesendeten Elementes Angabe des Ranges des Sendeprozesses; integer :: source tag Nachrichtenkennung (Reihenfolge); integer :: tag MPI_COMM_World status Ierror Kommunikator (Gruppe, Kontext) Empfangsstaus der Nachricht (angekommen?); integer status(mpi_status_size) Fehlerstatus; integer :: Ierror Seite 12

Visualisierung des Programmablaufes mit Sunshot: Seite 13

MPI Umgebungsvariablen I Für die Bestückung der Send/Receive Aufrufe sowie für allgemeine Infos stehen folgende Befehle zur Verfügung um die MPI Umgebung zu erfragen. MPI_Comm_size Wieviele Prozesse sind aktiv MPI_Comm_rank Welchen Rang hat der aktuelle Prozess Seite 14

MPI Umgebungsvariablen II Program hello Alle Prozesse starten gleichzeitg! use mpi INTEGER :: ierr, rank, size CALL MPI_INIT(ierr) CALL MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr) CALL MPI_COMM_SIZE (MPI_COMM_WORLD, size,ierr) Print*, ' I am ',rank,' of ',size CALL MPI_FINALIZE(ierr) End Seite 15

MPI Programmausführung Die Ausführung von Program hello erfolgt mpif90 -o hello hello.f90 mpiexec n 4./hallo Startet mit 4 Prozessen Im Programm müssen vorhanden sein use mpi CALL MPI_INIT(ierr). CALL MPI_FINALIZE(ierr) ierr gibt den Fehlerstatus an integer :: ierr Seite 16

MPI Programmausführung Hinweis: Auf dem cluster muss am Anfang das Kommando module load mpich2 ausgeführt werden. Dann stehen auch die manpages für MPI zur Verfügung. man mpiexec man mpif90 Das Kommando mpif90 verwendet intern einen Fortran Compiler, der bei der Kompilierung der MPI Bibliothek festgelegt wurde. Der Aufruf ersetzt daher im Makefile das Kommando f90 oder gfortran. Seite 17

Danke, gibt es noch Fragen? Seite 18