de facto Standard für nachrichten-basierte Programmierung für FORTRAN, C und C++ =>
|
|
- Kristian Dunkle
- vor 7 Jahren
- Abrufe
Transkript
1 7. MPI Message Passing Interface de facto Standard für nachrichten-basierte Programmierung für FORTRAN, C und C++ =>
2 MPI Programmiermodell SPMD- Programmstruktur 6 Basisfunktionen: MPI_Init Initialisierung MPI_Finalize Terminierung MPI_Comm_rankProzessid abfragen MPI_Comm_sizeAnzahl Prozesse bestimmen MPI_Send Senden MPI_Recv Empfangen Namenskonventionen: MPI_ als Präfix für alle Routinen und Konstanten Konstanten in Großbuchstaben FORTRAN nur Großbuchstaben, C Groß- und Kleinbuchstaben 276
3 Struktur eines MPI Programms in C #include mpi.h main (int argc, char **argv) { int my_rank, nprocs } MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); MPI_Finalize(); 277
4 Initialisierung und Terminierung MPI_Init (int *argc, char ***argv) Adressen der Argumente von main initialisiert die MPI-Umgebung definiert den sogenannten Kommunikator MPI_COMM_WORLD Ein Kommunikator definiert eine Gruppe von Prozessen und einen Kommunikationskontext. MPI_COMM_WORLD umfasst alle Prozesse. MPI_Finalize() beendet MPI. Es sind keine weiteren MPI-Aufrufe möglich. 278
5 Abfrageroutinen MPI_Comm_size (MPI_Comm comm, int *size) Eingabe Ausgabe ermittelt die Anzahl der Prozesse in einem Kommunikator. MPI_Comm_rank (MPI_Comm comm, int *size) Eingabe Ausgabe bestimmt den Rang oder die Identifikationsnummer eines Prozesses innerhalb eines Kommunikators. Die Prozesse sind innerhalb eines Kommunikators von 0 bis #Prozesse - 1 durchnummeriert. 279
6 Senden MPI_Send ( void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) ist die Standard-Senderoutine. zu übertragende Daten Rang des Empfängers Kennung Kommunikator count Datenobjekte vom Typ datatype ab Adresse buf (-> Sendepuffer) werden mit der Kennung tag an den Prozess mit Rang dest innerhalb des Kommunikators comm gesendet. 280
7 Empfangen MPI_Recv ( void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status status) zu empfangende Daten Rang des Senders Kennung Kommunikator source, tag, count tatsächlich empfangener Daten Nachrichten sind Felder eines speziellen MPI-Datentyps umgeben von einem Nachrichtenumschlag mit Sender Empfänger Tag Kommunikator. 281
8 MPI-Datentypen MPI-Datentyp MPI_BYTE MPI_CHAR MPI_DOUBLE MPI_FLOAT MPI_INT MPI_LONG MPI_LONG_DOUBLE MPI_PACKED MPI_SHORT MPI_UNSIGNED_CHAR MPI_UNSIGNED MPI_UNSIGNED_LONG MPI_UNSIGNED_SHORT C Datentyp signed char double float int long long double short unsigned char unsigned int unsigned long unsigned short 282
9 Beispielprogramm MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { printf("need at least 2 processes.\n"); MPI_Finalize(); return(1); } MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (0 == rank) { MPI_Send(buf, BUFSIZE, MPI_INT, 1, 11, MPI_COMM_WORLD); printf("rank %d sent message\n", rank); } else if (1 == rank) { MPI_Recv(buf, BUFSIZE, MPI_INT, 0, 11, MPI_COMM_WORLD, &status); printf("rank %d received message\n", rank); } MPI_Finalize(); 283
10 MPI_ANY_TAG und MPI_ANY_SOURCE Beim Nachrichtenempfang können mittels MPI_ANY_TAG und MPI_ANY_SOURCE Nachrichten mit beliebigem Tag bzw. beliebigem Sender empfangen werden. Vorsicht Nichtdeterminismus! In diesem Fall können das empfangene Tag und der tatsächliche Sender aus dem Status-Argument ermittelt werden. In C ist status ein Record (Verbund) mit den Feldern MPI_SOURCE und MPI_TAG. => Zugriff: status.mpi_source bzw. status.mpi_tag MPI_Get_count ( MPI_STATUS status, Eingabe MPI_DATATYPE datatype, int *count) Ausgabe liefert die Anzahl tatsächlich empfangener Datenelemente. 284
11 Punkt-zu zu-punkt-kommunikation MPI unterstützt Punkt-zu-Punkt-Kommunikation (1:1) kollektive Kommunikation Punkt-zu-Punkt genau zwei Prozesse, Sender und Empfänger, identifiziert durch ihren Rang innerhalb eines Kommunikators 285
12 Arten von Sendefunktionen Standard MPI_Send blockierende Basis-Sende-Operation Standard lässt konkrete Implementierung offen gepuffert MPI_Bsend Nachrichten werden gepuffert, damit das Senden unabhängig vom Empfang abgeschlossen werden kann lokale Operation Bereitstellung von Pufferbereich durch Programmierer erforderlich synchron MPI_Ssend Senden endet erst, wenn Empfang der Daten begonnen hat nicht-lokale Operation ready MPI_Rsend sofortiges Senden (ohne Zwischenpufferung) Empfängerprozess muss zum Empfang bereit sein lokale Operation 286
13 Blockierend vs nicht-blockierend Blockierend bedeutet: Sendefunktion wird erst beendet, wenn die Nachrichteninitiierung so weit fortgeschritten ist, dass der (Anwendungs-) Sendepuffer nicht durch eine nachfolgende Anweisung überschrieben werden kann. Nicht-blockierend bedeutet: Der Benutzer ist selbst dafür verantwortlich, dass die abgehende Nachricht nicht korrumpiert wird. Das MPI System wird nur mit der Nachrichtensendung beauftragt. => Überlappung von Kommunikation und Berechnung. MPI_Isend - MPI_Ibsend - MPI_Irsend - MPI_Issend 287
14 Empfangsfunktionen / Pufferverwaltung Es gibt nur eine Empfangsoperation, unabhängig vom Sendemodus, die blockierend (Standard) oder nicht-blockierend (MPI_Irecv) sein kann. Pufferverwaltung für MPI_Bsend / MPI_Ibsend MPI_Buffer-attach (void *buffer, int size) Bereitstellung von Pufferplatz, size in Bytes MPI_Buffer_detach (void *buffer, int size) Freigabe von Pufferplatz 288
15 Abfrageargument bei nicht-blockierendem Senden und Empfangen Bei den nicht-blockierenden Sende- und Empfangsanweisungen kann über ein zusätzliches Argument MPI_Request *request, das zurückgeliefert wird, später getestet werden, ob die Kommunikationsanweisung abgeschlossen ist. MPI_Wait(&request, &status) wartet, bis die zugehörige Kommunikationsanweisung fertig ist. MPI_Test(&request, &flag, &status) zeigt mit flag, ob die Kommunikationsanweisung fertig ist oder nicht. typische Konstellation: MPI_Isend/Irecv (..., &request)... /* Berechnungen */ MPI_Wait (&request, &status) 289
16 Semantik der Punkt-zu zu-punkt-komm. Reihenfolge von Nachrichten mit identischen Umschlägen bleibt erhalten Werden passende Sende-/Empfangsanweisungen initiiert, so wird mindestens eine der Anweisungen abgeschlossen. Beispiel: MPI_Comm-rank(comm,rank); if (rank == 0) { MPI_Bsend (buf1, count, MPI_REAL, 1, tag1, comm); MPI_Ssend (buf2, count, MPI_REAL, 1, tag2, comm); } else { MPI_Recv (buf1, count, MPI_REAL, 0, tag2, comm, &status); MPI_Recv (buf2, count, MPI_REAL, 0, tag1, comm, &status); } keine Garantie von Fairness 290
17 Kollektive Kommunikation Typen globale Barriere globale Datenbewegungen Reduktionsoperationen MPI_Barrier (MPI_Comm comm) bewirkt globale Synchronisation aller Prozesse im Kommunikator comm MPI_Bcast( void *inbuf, int incnt, MPI_Datatype intype, int root, MPI_Comm comm) bewirkt Broadcast von dem Prozess mit Rang root zu allen anderen Prozessen im Kommunikator comm. Die ersten drei Argumente sind analog zu send/receive. 291
18 Aufsammeln und Verteilen von Daten MPI_Gather / MPI_Scatter (void *inbuf, int incnt, MPI_Datatype intype, Eingabe void *outbuf, int outcnt, MPI_Datatype outtype, Ausgabe int root, MPI_Comm comm) A0 A1 A2 A3 MPI_Gather MPI_Scatter A0 A1 A2 A3 292
19 Reduktionsoperationen MPI_Reduce / MPI_Allreduce (void *inbuf, void *outbuf, int count, MPI_Datatype type, MPI_Op op, int root / _, MPI_Comm comm) 293
20 Zeitmessungen in MPI MPI_Wtime () wall clock time liefert als Gleitkommazahl mit doppelter Präzision eine Sekundenzahl bzgl. eines festen, d.h. während der Laufzeit eines Prozesses unveränderten Zeitpunkts in der Vergangenheit Zeitmessungen erfordern mehrere Aufrufe dieser Routine: { double starttime, endtime; starttime = double MPI_Wtime();... endtime = double MPI_Wtime(); printf( That took %f seconds\n, endtime-starttime); } MPI_WTick() liefert eine Gleitkommazahl, die die Zeit zwischen aufeinanderfolgenden Uhrticks angibt. => Genauigkeit von Zeitmessungen 294
21 MPI_Sendrecv Gekoppeltes Senden und Empfangen: Senden und gleichzeitiges Empfangen einer Nachricht blockierend bis Sendepuffer frei ist und Empfangspuffer empfangene Daten enthält MPI_Sendrecv (void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status) 295
22 Kommunikatoren und Prozessgruppen Nachrichtenkennungen (tags) Unterscheidung und Selektion von Nachrichten Prozessgruppen Einschränkung des Empfangs von Nachrichten und der Anwendung einer kollektiven Kommunikation werden in fast allen Kommunikationsbibliotheken unterstützt. neu in MPI: Kommunikatoren bessere Kapselung von Bibliotheksfunktionen Erleichterung der Arbeit mit Prozessgruppen und virtuellen Topologien 296
23 Kommunikator-Definition Ein Kommunikator bestimmt eine Gruppe von Prozessen, d.h. eine geordnete Menge von Prozessen mit lokalem Rang {0,..., #Prozesse 1} => Umgebung für Punkt-zu-Punkt- und kollektive Kommunikationen definiert einen Kontext für Kommunikationen (implizit) => Einführung separater, sicherer, d.h. sich nicht beeinflussender Universen zum Nachrichtenaustausch, wichtig für Unterprogrammbibliotheken vordefinierte Kommunikatoren: MPI_COMM_WORLD umfasst die Gruppe aller Prozesse MPI_COMM_SELF enthält nur den Prozess selbst MPI_COMM_NULL ungültiger Kommunikator 297
24 Prozessgruppen: Konstruktion, Analyse und Manipulation MPI_Comm_group (MPI_Comm comm, MPI_Group *group) liefert die Prozessgruppe des Kommunikators comm. MPI_Group_union/intersection/difference (MPI_Group group1, MPI_Group group2, MPI_Group group3) bestimmt die Vereinigung, den Schnitt und die Differenz von Gruppen. Vereinigung und Schnitt sind assoziativ, aber wegen der Prozessnummerierung nicht kommutativ. MPI_GROUP_EMPTY ist die leere Prozessgruppe. MPI_Group_free (MPI_Group group) deallokiert eine Prozessgruppe. group wird an MPI_GROUP_NULL gebunden. 298
25 Prozessgruppen Fortsetzung MPI_Group-size (MPI_Group group, int *size) liefert in size die Anzahl der Prozesse einer Gruppe. MPI_Group_rank (MPI_Group group, int *rank) liefert den Rang eines Prozesses in einer Gruppe und, falls der Prozess nicht in der Gruppe ist, MPI_UNDEFINED. MPI_Group_compare (MPI_Group group1, MPI_Group group2, int *result) liefert in result: MPI_IDENT bei identischen Gruppen, d.h. dieselben Prozesse mit derselben Nummerierung MPI_SIMILAR bei Gruppen mit denselben Prozessen, aber unterschiedlicher Nummerierung MPI_UNEQUAL sonst. 299
26 Prozessgruppen Fortsetzung 2 MPI_Group_incl /excl (MPI_Group group, int n, int *ranks, MPI_Group *newgroup) erzeugt eine neue Gruppe mit n Prozessen, die in group die Ränge ranks[0]... ranks[n-1] haben und in newgroup die Ränge 0... n-1. Prozess ranks[i] in group ist Prozess i in newgroup. Die in ranks angegebenen Ränge müssen in group vorkommen und paarweise verschieden sein. => Umordnung von Elementen einer Gruppe Die excl-variante streicht die durch ranks angegebenen Prozesse aus der Gruppe. 300
27 Erzeugung /Freigabe von Kommunikatoren Neue Kommunikatoren können aus bestehenden Kommunikatoren oder aus Prozessgruppen gebildet werden. Die folgenden Funktionen sind kollektive Funktionen, d.h. sie müssen von allen Prozessen eines Kommunikators aufgerufen werden. MPI_Comm_dup (MPI_Comm comm, MPI_Comm *newcomm) erzeugt einen neuen Kommunikator mit derselben Prozessgruppe, denselben assoziierten Informationen, aber einem neuen Kommunikationskontext. MPI_Comm_free (MPI_Comm *comm) Deallokation von comm und Rückgabe von MPI_COMM_NULL 301
28 Erzeugung von Kommunikatoren aus Prozessgruppen MPI_Comm_create (MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm) erzeugt einen neuen Kommunikator mit Prozessgruppe group, die Teilmenge der Prozessgruppe von comm sein muss. kollektiver Aufruf identische group Argumente erforderlich Prozesse in comm, aber nicht in group, erhalten MPI_COMM_NULL zurück. Synchronisation der Aufrufe nicht erforderlich, aber Nachrichten aus der Zukunft möglich 302
29 Typischer Aufbau neuer Kommunikatoren 303
30 Aufteilen von Kommunikatoren MPI_Comm_Split (MPI_Comm comm, int color, int key, MPI_Comm *newcomm) Aufteilung der Prozessgruppe von comm in disjunkte Teilgruppen, je eine pro Wert von color => Prozesse mit derselben Farbe sind in derselben Teilgruppe Nummerierung innerhalb der Gruppen gemäß key, bei identischen Schlüsseln gemäß Nummerierung in comm Aufrufe mit der Farbe MPI_UNDEFINED liefern den Kommunikator MPI_COMM_NULL zurück. Bsp: MPI_Comm_split (comm, 0, 0, newcomm) entspricht MPI_Comm_dup (comm, newcomm) 304
31 Virtuelle Topologien Unterstützung fester Kommunikationsstrukturen effizientere Abbildung von Prozessstrukturen auf physikalischer Zielmaschine einfachere, adäquatere Benennung von Prozessen Verbesserung der Lesbarkeit von Programmen zwei Arten: kartesische Topologien: Gitter, Würfel, Torus, Hypercube Graphtopologien feste Assoziation mit Kommunikator Erzeugung virtueller Topologie erzeugt neuen Kommunikator 305
32 Erzeugung kartesischer Topologie MPI_Cart_create (MPI_Comm comm_old, int ndims, [int] dims, [bool] periods, bool reorder, MPI_Comm *comm_cart) assoziiert mit comm_old eine kartesische Topologie mit ndims Dimensionen und der Ausdehnung dim[i] in Dimension i. periods[i] = true bedeutet eine zyklische Verbindung in Dim. i. reorder = false => Prozessränge bleiben unverändert reorder = true => Umordnung von Prozessen erlaubt, um Abbildung auf physikalische Topologie zu verbessern. comm_cart kann weniger Prozesse enthalten als comm_old, einige Prozesse erhalten MPI_COMM_NULL als Resultat. Nummerierung beginnt immer bei Null, auch in Fortran. 306
33 Zugriffsroutinen MPI_Cart_rank (MPI_Comm comm, int *coords, int *rank) liefert in Kommunikator mit kartesischer Topologie den Rang eines Prozesses zu dessen Koordinaten und MPI_PROC_NULL bei ungültigen Koordinaten (nicht bei periodischen Strukturen) MPI_Cart_coords (MPI_Comm comm, int rank, int maxdims, int *coords) liefert Koordinaten zu Prozessrang. maxdims gibt Dimension des Arrays coords an. MPI_Cart_shift (MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest) liefert Ränge der Partnerprozesse für Shift-Operationen. directions bestimmt die Dimension für Shift, disp die Schrittweite. 307
34 Bestimmung balancierter Gitterstrukturen MPI_Dims_create (int nnodes, int ndims, int *dims) bestimmt zu nnodes Prozessen eine balancierte kartesische Topologie mit ndims Dimensionen Im Feld dims können Felder vorbesetzt werden. nnodes muss Vielfaches von dem Produkt aller Werte dims[i] mit dims[i] <> 0 sein. 308
35 Interkommunikatoren Interkommunikatoren dienen der Kommunikation zwischen disjunkten Prozessgruppen. Sie erlauben nur Punkt-zu-Punkt- Kommunikationen. MPI_Intercomm_create ( local_comm, local_leader, peer_comm, remote_leader, tag, newintercomm) muss kollektiv in beiden Gruppen aufgerufen werden. Alle Prozesse müssen sich jeweils auf einen Leiter einigen. peer-comm ist ein übergeordneter Kommunikator, der beide Gruppen enthalten muss, meist MPI_COMM_WORLD oder ein Duplikat. 309
36 Interkommunikation Der Aufruf von MPI_Intercomm_create bewirkt kollektive Kommunikationen in den einzelnen Gruppen Punkt-zu-Punkt-Kommunikation zwischen Leiterprozessen in peer_comm mit tag lokale Prozessgruppe entfernte Prozessgruppe Sendekontext Empfangskontext Leiterprozess Leiterprozess 310
37 Abgeleitete Datentypen Erzeugung in zwei Stufen: A - Spezifikation des Datentyps B - Bereitstellung des Datentyps ad A: Eine Typabbildung (type map) ist eine Folge von Paaren der Form < (type_i, disp_i 0 <= i < n > wobei type_i Basistypen und disp_i ganze Zahlen /relative Adressen (displacements) sind. Die Folge <type_i 0 <= i < n> heißt Typsignatur der Typabbildung. Zusammen mit einer Basisadresse buf spezifiziert eine Typabbildung einen Kommunikationspuffer mit n Einträgen. Der i-te Eintrag beginnt an der Adresse buf+disp_i und hat Typ type_i. 311
38 Routinen zur Definition abgeleiteter Typen MPI_Type_contiguous (count, oldtype, newtype) bewirkt count-fache (count > 0) Replikation von oldtype zu newtype. oldtype oldtype... newtype:... count mal Die Typüberprüfung beim Empfang von Daten berücksichtigt nur die Typsignatur, d.h. die Folge der Basistypen, und nicht die zugrundeliegenden Typdefinitionen. 312
39 Routinen zur Definition abgeleiteter Typen MPI_Type_vector (count, blocklength,stride, oldtype, newtype) blocklength spezifiziert die Blocklänge, stride die Schrittweite. Bsp: count = 2, blocklength = 3, stride 5 oldtype newtype Schrittweite 313
40 Bereitstellung von Datentypen MPI_Type_commit (datatype) aktiviert neu erzeugten Datentyp, muss vor Verwendung in Kommunikationsroutinen aufgerufen werden. MPI_Type_free (datatype) Freigabe von Datentyp 314
Kurzübersicht über die wichtigsten MPI-Befehle
Kurzübersicht über die wichtigsten MPI-Befehle Hans Joachim Pflug Rechen- und Kommunkationszentrum der RWTH Aachen Inhalt MPI_Init / MPI_Finalize...2 MPI_Comm_size / MPI_Comm_rank...3 MPI_Send / MPI_Recv...4
4.4. MPI Message Passing Interface
4.4. MPI Message Passing Interface Ferienakademie 2009 Franz Diebold Agenda 1. Einführung, Motivation 2. Kommunikationsmodell 3. Punkt-Zu-Punkt-Kommunikation 4. Globale Kommunikation 5. Vergleich MPI und
Modelle der Parallelverarbeitung
Modelle der Parallelverarbeitung Modelle der Parallelverarbeitung 12. Message Passing Interface Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Sommersemester 2017 1 / 36 Überblick
Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016
Paralleles Programmieren mit OpenMP und MPI Einführung in MPI Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Steinbuch Centre for Computing Hartmut Häfner, Steinbuch Centre for Computing
Parallelverarbeitung
Parallelverarbeitung WS 2015/16 Universität Siegen rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 18. Januar 2016 Betriebssysteme / verteilte Systeme Parallelverarbeitung
Programmieren mit MPI
Programmieren mit MPI MPI steht für: Message Passing Interface Standard. Spezifiziert die Schnittstelle einer Bibliothek für Nachrichtentausch. Standardisierung durch ein Gremium, in dem: Hersteller v.
MPI Prozessgruppen, Topologien, kollektive Kommunikation
MPI Prozessgruppen, Topologien, kollektive Kommunikation Parallelrechner Sommersemester 2004 tome@informatik.tu-chemnitz.de Inhalt Prozessgruppen und der Communicator Kollektive Kommunikation Prozess Topologien
Praktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Ulrich Körner, Nathanael Hübbe hermann.lenhart@zmaw.de MPI Einführung III: Kommunikation Standard = blockierende
Universität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Programmieren mit MPI Prof. Dr. Walter F. Tichy Thomas Moschny Ali Jannesari Programmieren mit MPI MPI steht für: Message Passing Interface
Parallel Programming: Message-Passing-Interface
Vorlesung Rechnerarchitektur 2 Seite 71 MPI-Einführung Parallel Programming: Voraussetzungen im Source-Code für ein MPI Programm: mpi.h includen Die Kommandozeilenparameter des Programms müssen an MPI_Init
Einführung in die Parallelprogrammierung MPI Teil 1: Einführung in MPI
Einführung in die Parallelprogrammierung MPI Teil 1: Einführung in MPI Annika Hagemeier Jülich Supercomputing Centre (JSC) Forschungszentrum Jülich Inhalt Was ist MPI? MPI Historie Programmiermodell Kommunikationsmodell
Praktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart hermann.lenhart@informatik.uni-hamburg.de MPI Einführung II: Send/Receive Syntax Broadcast Reduce Operation
Programmieren mit MPI
Programmieren mit MPI Dr. Victor Pankratius David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Programmieren
Praktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Enno Zieckler hermann.lenhart@informatik.uni-hamburg.de MPI Kommunikation: Das wichtigste Kriterium für
Parallele Programmierung mit MPI
Parallele Programmierung mit MPI Marc-Oliver Straub entstanden aus: Parallele Programmierung mit MPI - ein Praktikum Warum Parallelprogrammierung große numerische Probleme (Simulation) optische Bildverarbeitung
Praktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Nathanael Hübbe hermann.lenhart@informatik.uni-hamburg.de MPI Kommunikation: Das wichtigste Kriterium für
3. Versenden und Empfangen
3 Versenden und Empfangen Die elementaren Operationen in MPI sind das Senden an einen Prozeß und das Empfangen von einem Prozeß MPI stellt vier Varianten zur Verfügung, um Daten zu versenden, nämlich blockierend,
Trend der letzten Jahre in der Parallelrechentechnik
4.1 Einführung Trend der letzten 10-15 Jahre in der Parallelrechentechnik weg von den spezialisierten Superrechner-Plattformen hin zu kostengünstigeren Allzwecksystemen, die aus lose gekoppelten einzelnen
2 MPI MESSAGE-PASSING INTERFACE
2-1 2 MPI MESSAGE-PASSING INTERFACE 2.1 IMPLEMENTIERUNGEN VON MPI Mittlerweile gibt es eine Vielzahl an Implementierungen des Message-Passing Interfaces. Sowohl freie (GNU GPL) also auch kommerziell nutzbare
Praktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Nathanael Hübbe MPI Kollektive Operationen Neben Point-to-Point Kommunikation mittels Send & Recv verfügt
Praktikum: Paralleles Programmieren für Geowissenschaftler
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
Multicomputer ohne gemeinsamen Speicher 73
Multicomputer ohne gemeinsamen Speicher 73 CPU RAM CPU RAM Netzwerk CPU RAM CPU RAM CPU RAM Multicomputer bestehen aus einzelnen Rechnern mit eigenem Speicher, die über ein Netzwerk miteinander verbunden
Parallele Programmierung
Parallele Programmierung PThreads OpenMP MPI Übung: Architektur Paralleler Rechnersysteme WS08/09 J.Simon 1 PThread Programmierung Übung: Architektur Paralleler Rechnersysteme WS08/09 J.Simon 2 1 PThreads
Message-Passing: Einführung
Message-Passing: Einführung Vorlesung: Architektur Paralleler Rechnersysteme WS09/10 J.Simon 1 Punkt zu Punkt Senden und Empfangen Message-Passing Mechanismus Erzeugung von Prozessen. Übertragung einer
Übungen zu den Kursen Unix Grundlagen und Message Passing mit MPI Hans Joachim Pflug
Hochleistungsrechnen auf dem Sun Fire SMP Cluster 11. 15. März 2002 Rechenzentrum der RWTH Aachen Übungen zu den Kursen Unix Grundlagen und Message Passing mit MPI Hans Joachim Pflug Übungen zum Kurs Unix-Grundlagen...
Paralleles Programmieren mit MPI und OpenMP
Paralleles Programmieren mit MPI und OpenMP Vorlesung «Algorithmen für das wissenschaftliche Rechnen» 6.5.2002 Olaf Schenk, Michael Hagemann 6.5.2002 Algorithmen des wissenschaftlichen Rechnens 1 Organisatorisches
Message-Passing: Einführung
Message-Passing: Einführung Vorlesung: Architektur Paralleler Rechnersysteme WS14/15 J.Simon 1 Punkt zu Punkt Senden und Empfangen Message-Passing Mechanismus Erzeugung von Prozessen. Übertragung einer
Multicomputer ohne gemeinsamen Speicher 170
Multicomputer ohne gemeinsamen Speicher 170 CPU RAM CPU RAM Netzwerk CPU RAM CPU RAM CPU RAM Multicomputer bestehen aus einzelnen Rechnern mit eigenem Speicher, die über ein Netzwerk miteinander verbunden
8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim
Christian Baun 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim WS1112 1/67 8.Vorlesung Cluster-, Grid- und Cloud-Computing Hochschule Mannheim Christian Baun wolkenrechnen@gmail.com
C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18
C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen
Einführung in das parallele Programmieren mit MPI und Java
Einführung in das parallele Programmieren mit und Java Seite 1 Übersicht Parallele Prozesse und Erste Schritte mit Kollektive Kommunikation Weitere Möglichkeiten Seite 2 Literatur (1) Homepage des 2-Forums
Beschreiben Sie die Eigenschaften der verschiedenen Rechnertypen an Hand:
Hochschule Harz FB Automatisierung/Informatik Fachprüfung: Parallele Algorithmen (Musterklausur) Alle Hilfsmittel sind zugelassen! 1. Aufgabe Beschreiben Sie die Eigenschaften der verschiedenen Rechnertypen
Parallelisierung der Matrixmultiplikation
Ein Beispiel für parallele Algorithmen Ivo Hedtke hedtke@math.uni-jena.de www.minet.uni-jena.de/~hedtke/ ehem. Hiwi am Lehrstuhl für Wissenschaftliches Rechnen (Prof. Dr. Zumbusch) Institut für Angewandte
Konzepte der parallelen Programmierung
Fakultät Informatik, Institut für Technische Informatik, Professur Rechnerarchitektur Konzepte der parallelen Programmierung Parallele Programmiermodelle Nöthnitzer Straße 46 Raum 1029 Tel. +49 351-463
C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16
C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung
Einführung in C. EDV1-04C-Einführung 1
Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags
Programmierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
Einführung in das parallele Programmieren mit MPI
Einführung in das parallele Programmieren mit Seite 1 Skript Skript Seite Seite 3 -Versionen -Versionen: Befehle: Version 1.0 (1994): Unterstützung von Fortran77 und C. Version 1.1 (1995): Berichtigungen
Typ : void* aktuelle Parameter Pointer von beliebigem Typ
2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben
Welche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff
Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen
Teil 5: Zeiger, Felder, Zeichenketten Gliederung
Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik
Projektseminar Parallele Programmierung
HTW Dresden WS 2016/2017 Organisatorisches Praktikum, 4 SWS Do. 15:10-18:30 Uhr, Z136c, 2 Doppelstunden Labor Z 136c ist Montag und Donnerstag 15:10-18:30 reserviert, gemeinsam mit anderen Projektseminaren
Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016
Paralleles Programmieren mit OpenMP und MPI MPI-Übungsaufgaben Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Hartmut Steinbuch Häfner, Centre Steinbuch for Computing Centre for Computing
C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16
C++ Teil 4 Sven Groß IGPM, RWTH Aachen 30. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 4 30. Apr 2015 1 / 16 Themen der letzten Vorlesung Funktionen: Definition und Aufruf Wert- und Referenzparameter,
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
Physische Datenstrukturen
Elementare Datentypen Strukturierte Datentypen Zeiger Seite 1 Einfache Datentypen Datentyp char Verwendung: ASCII-Zeichen Wertebereich: alle darstellbaren Zeichen, 8 bit lange Ganzzahlen im Intervall -128
Deklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
Grundlagen der Informatik 2. Typen
Grundlagen der Informatik 2. Typen Speicher, Speicherbedarf Ein-/Ausgabe Grundlagen der Informatik (Alex Rempel) 1 Wiederholung // root calculation #include #include using namespace
Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen
Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik
Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
Zero-Copy Message Passing mit Gigabit Netzwerken
Semesterarbeit von Matthias Ackermann Zero-Copy Message Passing mit Gigabit Netzwerken Betreut von: Christian Kurmann Prof. T. Stricker 1. Inhaltsverzeichnis 1. INHALTSVERZEICHNIS...2 1.1. ABBILDUNGSVERZEICHNIS...3
Elementare Datentypen in C++
Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der
Programmierkurs C++ Variablen und Datentypen
Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in
Einführung in die Programmierung Wintersemester 2011/12
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while
C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11
C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen
C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14
C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung
Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
Unterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
Arrays (Felder/Vektoren)
Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff
PThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes
PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory
USBCAN.DLL. Manual. Microcomputersysteme. Version 1.2
USBCAN.DLL Microcomputersysteme Manual Version 1.2 August 2004 Die in diesem Manual verwendeten Beschreibungen für Erzeugnisse, die ein eingetragenes Warenzeichen darstellen können, wurden nicht separat
5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)
5.1 Mehr Basistypen Außer int, stellt Java weitere Basistypen zur Verfügung. Zu jedem Basistyp gibt es eine Menge möglicher Werte. Jeder Wert eines Basistyps benötigt die gleiche Menge Platz, um ihn im
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung
Tag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)
Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch
darstellung Arbeiten mit darstellung werden im Computer durch (kleine) Zahlen dargestellt in C können im Datentyp char gespeichert werden, dieser umfasst ein Byte und gilt als Ganzzahltyp darstellung Arbeiten
Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Textausgabe per printf Die Funktion printf ist kein Bestandteil der C Sprache sondern gehört zur C Bibliothek. printf
Multi- und Many-Core
Multi- und Many-Core Benjamin Warnke Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2016-12-15 Benjamin
Projekt 3 Variablen und Operatoren
Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Felder, Zeiger und Adreßrechnung
Felder, Zeiger und Adreßrechnung Felder bestehen aus Variablen eines einzigen Datentyps. Bisher kennen wir eindimensionale Felder. In C sind Felder mit beliebigen Dimensionen möglich. Unsere räumliche
Objektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
Methoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
Übungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Vordefinierte Datentypen Übersicht 1 Ganzzahlige Typen 2 Boolscher Typ 3 Gleitkommatypen 4 Referenztypen 5 void Typ 6 Implizite und explizite Typumwandlungen Ganzzahlige Typen Die
Polymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
Konzepte der Programmiersprachen
Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C
Übungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MPI. Frank Lohmeyer. Seminar. Werkzeuge der Parallelverarbeitung
MPI A Message Passing Interface Standard Frank Lohmeyer Seminar Werkzeuge der Parallelverarbeitung Sommersemester 1995 Seminar - Werkzeuge der Parallelverarbeitung: MPI i Inhaltsverzeichnis 1 Einleitung
Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff
Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen
JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)
JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert
Tag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!
8. Referenzen und Zeiger
8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen
DAP2 Praktikum Blatt 1
Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1
Einführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5
Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in
Einstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
einlesen n > 0? Ausgabe Negative Zahl
1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen
Scatter/Gather 267. Zu den häufigen Kommunikationsszenarien analog zum Fork-und-Join-Pattern gehören
Scatter/Gather 267 Zu den häufigen Kommunikationsszenarien analog zum Fork-und-Join-Pattern gehören die Aufteilung eines Vektors oder einer Matrix an alle beteiligten Prozesse (scatter) und nach der Durchführung
Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente
Themen Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Formatierte Eingabe mit cin Die Formatierung der Eingabe ist der Ausgabe sehr ähnlich: Die Flags werden
Vorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
Die Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
Klausur zu High Performance Computing 09. Juli 2011, SS 2011
Alexander Vondrous, Britta Nestler, Fakultät IWI, Hochschule Karlsruhe Klausur zu High Performance Computing 09. Juli 2011, SS 2011 Es sind keine Hilfsmittel zugelassen. Bearbeitungszeit: 90 Minuten Aufgabe