Projektseminar Parallele Programmierung
|
|
- Elvira Walter
- vor 6 Jahren
- Abrufe
Transkript
1 HTW Dresden WS 2016/2017
2 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 Selbständige Arbeiten können gern auch zu anderen Zeiten erfolgen
3 Aufgabenstellungen und Leistungsnachweis Aufgabenstellung: Individuelle Aufgabenstellungen oder für 2er-Gruppen Auch Einzelarbeiten möglich Eintragung für ein Thema in Einschreibliste zu meiner Information Leistungsnachweis: Vorführung des Programms innerhalb des Projektseminars Kurzvortrag (ca. 20 min) der Gruppe mit Präsentation Schriftliche Praktikumsdokumentation der Gruppe, ca Seiten Auf das Praktikum wird eine individuelle Note vergeben.
4 Genutzte Rechnerinfrastruktur PC, 4-Core CPU, NVidia Quadro 600 Grafikkarte, OpenSuse-LINUX, OpenMP, CUDA (inkl. OpenCL) o.g. PC-System ist im Labor Z136c installiert und ist aus dem HTW-Netz erreichbar Linux-PCs im Rechnerlabor Z136c und Z146a als virtueller Parallelrechner mit MPI, LINUX, ssh-login, ssh -X Programmierung in C, C++, JavaScript und verwandten Sprachen
5 Multi- und Manycore Prozessoren Vorhersagen: Ende 2008: 8 cores 2011: 32 cores 2014: >128 cores Bildquelle: Intel roadmap Begriffe: Multicore: 20 Manycore:> 20 cores Andere Quellen: many = hundreds of cores Paralleles Programmieren auch für gewöhnliche Rechner
6 Multi- und Manycore Prozessoren Struktur: P 0 P 1 P 2 P 3 P (p 1) Cache Cache Cache Cache Cache Communication Network MEM MEM MEM MEM MEM Koordination und Kooperation über gemeinsame Variable Auf MPS kann eine einzelne Instanz eines Betriebssystems ausgeführt werden. D.h. das System kann wie ein einzelner Rechner benutzt werden. Architekturmodell zum Teil für GPUs zutreffend, ohne Betriebssystem, ohne Cache
7 Nutzung des gemeinsamem Speichers Optionen aus Sicht des Programmierers: Multiprocessing: Mehrere Prozesse (durch fork()) und Kommunikation via Shmem-Segmente. Multithreading: Mehrere Threads innerhalb eines Prozesskontexts, direkte Abstraktion des Systems mit gemeinsamem Speicher. Expliziter Nachrichtenaustausch: mehrere Prozesse mit Kommunikation über Pipes oder Sockets, Kommunikationsbibliotheken MPI, PVM OpenMP: Compiler-Direktiven zur Steuerung mehrfädiger Ausführung (Multithreading) bei gemeinsamen Speicher OpenCL und CUDA: Datenparallele Ausführung s.g. Kernel-Funktionen
8 MPS mit verteiltem Speicher (1) Struktur: MEM MEM MEM MEM MEM Cache Cache Cache Cache Cache P 0 P 1 P 2 P 3 P (p 1) Communication Network Koordination und Kooperation nur durch Nachrichten-Austausch Adressräume getrennt, d.h. eine gleiche Adresse verweist bei unterschiedlichen Knoten auf unterschiedliche Speicherinhalte Keine Speicher- und Cache-Konsistenz Problematik
9 MPS mit verteiltem Speicher Jeder Knoten führt eine eigene Instanz des Betriebssystems aus, ggf. reduziert auf Mikrokern Abstraktion durch verschiedene UNIX-Prozesse (im Gegensatz zu Threads bei gemeinsamem Speicher) Zum Nachrichtenaustausch stehen auf Betriebssystem-Ebene Socket-Verbindungen zur Verfügung (TCP/IP) Bibliotheken zur Erzeugung und Verwaltung verteilter Prozesse und zur Kommunikation, MPI
10 OpenMP Parallelisierung für speichergekoppelte Systeme Parallelarbeit wird durch Multithreading erreicht Direktiven im sonst sequentiellen Code
11 OpenMP (1) Satz von Compilerdirektiven und Subroutinen für Programmierung unter gemeinsamen Speicher Zur leichten Erzeugung von mehrfädigen (mutli-threaded) Programmen Für C, C++ und FORTRAN Fork-Join-Parallelität, die dem Programm inkrementell zugefügt wird.
12 OpenMP (2) Typischer Anwendungsfall: Schleifenparallelisierung for (i=0;i<256;i++) #pragma omp parallel for for (j=0;j<256;j++) { img[i,j] = img[i,j]-minpix;m img[i,j] = (int) ( (float)img[i,j]*(float)maxval/ (float)(maxpix-minpix)); } Für Beispiel gilt: Innere Schleife wird von verschiedenen Threads bearbeitet Sehr gutwillige Struktur, da keine gemeinsam benutzten Daten, keine Zugriffskonflikte
13 OpenMP (3) Schrittweise Parallelisierung: Parallele Regionen werden mit parallel und end parallel gekennzeichnet. Es wird dann eine Menge von Threads erzeugt, die den Code redundant bearbeiten, soweit nicht anders angegeben. Aufteilung der Arbeit erfolgt, wenn Schleifen betreten werden Fortran: do und end do C/C++: for(i=0;i<max;i++) Anzahl der gemeinsamen Schleifendurchläufe muss vorab bekannt sein. Direktive barrier zur Synchronisation
14 OpenMP (4) Koordination des Zugriffs auf Daten: exklusiver Zugriff auf gemeinsam genutzte Daten durch critical und end critical erreichbar. Variable können als shared (einmal vorhanden, gemeinsam genutzt) oder private (mehrfach vorhanden, exclusive Kopie) deklariert werden reduction-klausel kann konkurrierenden Zugriff auf gemeinsame Variable ausdrücken (siehe Beispiel)
15 OpenMP (5) Beispiel: Pi-Berechnung h = ((double)1.0)/(double)n; sum = 0.0; # pragma omp parallel private (i,x,sum_local) { sum_local = 0.0; # pragma omp for for(i=1;i<=n;i++) { x = h*((double)i-(double)0.5); sum_local = +f(x); } # pragma omp critical sum += sum_local; } pi = h* sum; Autor: Dieter an May, Rechenzentrum RWTH Aachen
16 OpenMP (6) Beispiel: Pi-Berechnung, jetzt mit Reduction-Klausel h = ((double)1.0)/(double)n; sum = 0.0; # pragma omp parallel private (i,x) { sum_local = 0.0; # pragma omp for reduction(+:sum) for(i=1;i<=n;i++) { x = h*((double)i-(double)0.5); sum = +f(x); } } pi = h* sum; Autor: Dieter an May, Rechenzentrum RWTH Aachen
17 MPI (1) MPI - Message Passing Interface Standard für Laufzeitumgebung und Kommunikationsbibliothek (MPI-Forum) Funktionalität ähnlich PVM Unterschied zu PVM: Prozesse werden per Kommando (mpirun oder mpiexec) mehrfach auf verschiedenen Prozessoren gestartet. Beispiel: mpirun -np32 myprogramm keine Prozesserzeugungen im MPI-Programm erforderlich. Direkte Umsetzung des SPMD-Prinzips, statische Prozessgruppe formiert bei Start der MPI-Anwendung. Ablaufprinzip galt bisher als zu statisch, MPI-2 mit dynamischer Prozesserzeugung und Threads
18 MPI (2) Wichtigste Funktionen: MPI_Init( int *argc,char ***argv) // System initialisiert, jeder Knoten mit eindeutige Nummer // und die MPI-Funktionen koennen benutzt werden int MPI_Comm_size ( MPI_Comm comm, int *size ) int MPI_Comm_rank ( MPI_Comm comm, int *rank ) int MPI_Send( void *buf, int count, MPI_DATATYPE datatype, int dest, int tag, MPI_Comm comm ) int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status status ) MPI_Finalize(); Weitere Funktionen wie z.b. Scatter, Gather, Barrier
19 MPI-Beispiel main(int argc, char **argv) { int rank, size;... MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD,&size); MPI_Comm_rank(MPI_COMM_WORLD,&rank); if (rank%2==0) /* gerade Prozess-Id */ { if (rank+1<size) { sprintf(msg,"nachricht [%d --> %d]\n",rank,rank+1); MPI_Send(msg,STRLEN,MPI_BYTE,rank+1,0,MPI_COMM_WORLD); } } else /* ungerade Prozess-Id */ { if (rank>0) { MPI_Recv(msg, STRLEN,MPI_BYTE,rank-1,0,MPI_COMM_WORLD,&st printf("empfangen: %s",msg); } } MPI_Finalize();
20 MPI-2 (1) Fortschreibung des MPI-Standards auf MPI-2 Neue Funktionen: Dynamische Prozesserzeugung: Ähnlich wie bei PVM können zur Laufzeit neue Prozesse erzeugt werden. Kollektive Operation:MPI_Comm_Spawn() Die Größe der Maschine wird durch MPI_UNIVERSE_SIZE abgefragt. Nach Spawn werden in einem Kommunikator (MPI_COMM_SPAWN) alte und neue Prozesse in unterschiedliche Gruppen eingeteilt. Dabei sind Prozesse sind durch (rank:group) identifiziert.
21 MPI-2 (2) Neue Funktionen (Fortsetzung): Socket-ähnlicher Aufbau von C/S-Systemen MPI_Open_Port(), MPI_Comm_Accept(), MPI_Comm_Connect()
22 MPI-2 (3) Neue Funktionen (Fortsetzung): Thread-Unterstützung Ein MPI Prozess kann aus mehreren Threads bestehen, die MPI-Funktionen ausführen. Funktion: MPI_Init_Thread(...,int required, int *provided) Die Werte required und provided stehen für verschiedene Thread-Unterstützungslevel: MPI_THREAD_SINGLE - nur ein einzelner Thread je Prozess MPI_THREAD_FUNNELED - multithreaded, aber nur ein Thread nutzt MPI-Funktionen MPI_THREAD_SERIALIZED - Threads werden bzgl. MPI-Aufrufen serialisiert MPI_THREAD_MULTIPLE - ohne Restriktionen
23 MPI-2 (4) Neue Funktionen (Fortsetzung): Einseitige Kommunikationsfunktionen Für Maschinen mit remote memory access, z.b. Cray T3D/T3E, Cluster mit SCI und Infiniband Netzen Funktionen: MPI_Put(), MPI_Get(), MPI_Accumulate()
24 CUDA für Grafikkarten CUDA Beispiel // Kernel definition global void VecAdd(float* A, float* B, float* C) { int i = threadidx.x; C[i] = A[i] + B[i]; } int main() {... // Kernel invocation with N threads VecAdd<<<1, N>>>(A, B, C);... }
25 Aufgaben Thema 1: Atomic Multicast mehrere Server die Nachrichten von Clients empfangen (RecvFromAny) mehrere Clients ein Client sendet eine Nachricht immer per Multicast an eine Teilmenge der Server Gefordert: Atomicy, Consistent Order, Fault-tolerance Programmiermodell: Verteilter Speicher mit Nachrichtenaustausch, d.h. mehrere PC s+netzwerk Programmiersprache: C,C++, MPI, oder JavaScript (NodeJS)
26 Aufgaben Thema 2: Verteilte Hashmap für Distributed Memory Hashmap, Speicherbereich über mehrere Adressbereiche gespreizt Paralleles Einfügen und paralleles Auslesen Plattform: Vernetzte Linux-PCs, Distributed Memory, MPI Varianten: 2-sided (send/recv), 1-sided (put/get)
27 Aufgaben Thema 3: Parallele Hashmap auf GPU Hashmap-Datenstruktur im Speicher der GPU Nutzung der Parallelität bei Eintragen und Ausgabe von Einträgen mehrere Kernel-Aufrufe in Folge zum Entragen, Austragen Programmierung in C/C++, Gemeinsamer Speicher, CUDA
28 Aufgaben Thema 4: Paralleles Text-Retrieval mit dem Vector-Space-Model Dokumente werden über die Häufigkeiten der möglichen Worte Worte indiziert Anfrage: Suchanfage wird über alle Dokumente bewertet. Ergebnis ist Rangliste der besten passenden Dokumente Schritt 1: Parallele Suche für eine Anfrage Schritt 2: Parallele Suche für mehrere Anfragen Schritt 3: Paralleles Indizieren Programmierung in C/C++, Verteilter Speicher, MPI
29 Wie gehts weiter? Einschreibung für ein Thema: Thema 1 - Atomic Multicast Thema 2 - Verteilte Hashmap, Rechnercluster, MPI Thema 3 - Parallele Hashmap auf Grafikkarte Thema 4 - Paralleles Text-Retrieval, MPI Weitere Treffen: Login-Zuteilung, Einweisung in Rechner Kick-Off Besprechungen mit einzelnen Gruppen Materialausgabe
Projektseminar Parallele Programmierung
HTW Dresden WS 2014/2015 Organisatorisches Praktikum, 4 SWS Do. 15:00-18:20 Uhr, Z136c, 2 Doppelstunden o.g. Termin ist als Treffpunkt zu verstehen Labore Z 136c / Z 355 sind Montag und Donnerstag 15:00-18:20
MehrTrend 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
MehrHochleistungsrechnen Hybride Parallele Programmierung. Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen
Hochleistungsrechnen Hybride Parallele Programmierung Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen Inhaltsübersicht Einleitung und Motivation Programmiermodelle für
MehrEinige Grundlagen zu OpenMP
Einige Grundlagen zu OpenMP Stephanie Friedhoff, Martin Lanser Mathematisches Institut Universität zu Köln 22. Juni 2016 Überblick Was ist OpenMP? Basics Das OpenMP fork-join-modell Kompilieren und Ausführen
MehrOpenMP. Viktor Styrbul
OpenMP Viktor Styrbul Inhaltsverzeichnis Was ist OpenMP Warum Parallelisierung Geschichte Merkmale von OpenMP OpenMP-fähige Compiler OpenMP Ausführungsmodell Kernelemente von OpenMP Zusammenfassung Was
MehrCompute Unified Device Architecture CUDA
Compute Unified Device Architecture 06. Februar 2012 1 / 13 Gliederung 2 / 13 : Compute Unified Device Architecture entwickelt von Nvidia Corporation spezifiziert Software- und Hardwareeigenschaften Ziel:
MehrParallel Processing in a Nutshell OpenMP & MPI kurz vorgestellt
Parallel Processing in a Nutshell & kurz vorgestellt 16. Juni 2009 1 / 29 1 Das Problem 2 2 / 29 1 Das Problem 2 3 2 / 29 1 Das Problem 2 3 4 2 / 29 1 Das Problem 2 3 4 2 / 29 Multi-Core Prozessoren halten
MehrOpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009
- Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009 Grundlagen der Parallelen Programmierung Hardware Threads vs. Prozesse Kritische Abschnitte Lange
MehrBeschreiben 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
MehrParallele und verteilte Programmierung
Thomas Rauber Gudula Rünger Parallele und verteilte Programmierung Mit 165 Abbildungen und 17 Tabellen Jp Springer Inhaltsverzeichnis 1. Einleitung 1 Teil I. Architektur 2. Architektur von Parallelrechnern
MehrPraxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern
Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Institut für Betriebssysteme und Rechnerverbund TU Braunschweig 25.10., 26.10.
MehrParallele Programmierung mit OpenMP
Parallele Programmierung mit OpenMP - Eine kurze Einführung - 11.06.2003 RRZN Kolloquium SS 2003 1 Gliederung 1. Grundlagen 2. Programmiermodell 3. Sprachkonstrukte 4. Vergleich MPI und OpenMP 11.06.2003
MehrEinfü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
MehrProgrammierung von Multicore-Rechnern
Programmierung von Multicore-Rechnern Prof. Dr.-Ing. habil. Peter Sobe HTW Dresden, Fakultät Informatik/Mathematik www.informatik.htw-dresden.de Gliederung: Ein Blick auf Multicore-Prozessoren/ und -Rechner
MehrParallel 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
Mehr4. Parallelprogrammierung
4. Parallelprogrammierung AlDaBi Prak4kum David Weese 2010/11 Enrico Siragusa WS 2011/12 Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P- Aufgabe EINFÜHRUNG IN PARALLELITÄT Folien z.t. aus VL
MehrPraktikum: 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 OpenMP Einführung I: Allgemeine Einführung Prozesse
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 OpenMP-Programmierung Teil I Multikern-Praktikum Wintersemester 06-07 Inhalt Was ist OpenMP? Parallele Regionen Konstrukte zur Arbeitsteilung
Mehr1. Einführung in OpenMP
1. Einführung in OpenMP Übersicht Einführung Homogene und inhomogene Arbeitsverteilung Rekursive Parallelität Beispiele Parallele Programmierung 1 Nicolas Maillard, Marcus Ritt 1 Überblick OpenMP: Vereinfachte
MehrParallel Regions und Work-Sharing Konstrukte
Parallel Regions und Work-Sharing Konstrukte Um eine Parallelisierung von größeren Programmabschnitten, als es einzelne Schleifen sind, zu ermöglichen, stellt OpenMP als allgemeinstes Konzept die Parallel
MehrNutzung paralleler Prozesse bei der Umweltsimulation
Nutzung paralleler Prozesse bei der Umweltsimulation RALF Wieland rwieland@zalf.de ZALF/LSA Nutzung paralleler Prozesse bei der Umweltsimulation p. 1 Warum parallele Prozesse? Die Steigerung der Taktfrequenz
MehrMulticore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010
Multicore Herausforderungen an das Software-Engineering Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Inhalt _ Motivation _ Herausforderung 1: Hardware _ Herausforderung 2: Software-Partitionierung
MehrZum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE
Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE 754 Standard festgelegt. Es stehen sogenannte einfach
MehrMasterpraktikum Scientific Computing
Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Prof. Dr. Michael Bader Technische Universität München, Germany Outline Organisatorisches Entwicklung
MehrThreads und OpenMP. Frank Mietke <frank.mietke@informatik.tu-chemnitz.de> Cluster- & Gridcomputing Frank Mietke 7/4/04
Threads und OpenMP Frank Mietke 1 Ziel der Vorlesungen Einführung in Threads Programmierung mit Threads Einführung in OpenMP Programmierung mit OpenMP 2 Was ist
MehrMPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven
MPI-Programmierung unter Windows mit MPIH2 Installieren von MPIH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 02/2007 luster-installationsworkshop
MehrParalleles 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
MehrGrundlagen der Parallelisierung
Grundlagen der Parallelisierung Philipp Kegel, Sergei Gorlatch AG Parallele und Verteilte Systeme Institut für Informatik Westfälische Wilhelms-Universität Münster 3. Juli 2009 Inhaltsverzeichnis 1 Einführung
MehrComputational Biology: Bioelektromagnetismus und Biomechanik
Computational Biology: Bioelektromagnetismus und Biomechanik Implementierung Gliederung Wiederholung: Biomechanik III Statische Elastomechanik Finite Elemente Diskretisierung Finite Differenzen Diskretisierung
MehrWie groß ist die Page Table?
Wie groß ist die Page Table? Im vorigen (typischen) Beispiel verwenden wir 20 Bits zum indizieren der Page Table. Typischerweise spendiert man 32 Bits pro Tabellen Zeile (im Vorigen Beispiel brauchten
MehrKlausur 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
MehrYilmaz, Tolga MatNr: Mesaud, Elias MatNr:
Yilmaz, Tolga MatNr: 157317 Mesaud, Elias MatNr: 151386 1. Aufbau und Funktionsweise einer Grafikkarte 2. CPU vs. GPU 3. Software 4. Beispielprogramme Kompilierung und Vorführung 5. Wo wird Cuda heutzutage
MehrSysteme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard
Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
MehrAnleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome
Anleitung für zwei C++ - Openmp - Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.cpp 1.2
Mehr2 Rechnerarchitekturen
2 Rechnerarchitekturen Rechnerarchitekturen Flynns Klassifikation Flynnsche Klassifikation (Flynn sche Taxonomie) 1966 entwickelt, einfaches Modell, bis heute genutzt Beschränkung der Beschreibung auf
MehrVorlesung "Verteilte Systeme" Sommersemester 1999. Verteilte Systeme. Adreßraum. Rechner. Verteilte Systeme, Sommersemester 1999 Folie 19.
Verteilte Systeme 19. Distributed Shared Memory Sharing!! No Sharing! Sharing? Evolution der Berechnungsmodelle Vergangenheit Gemeinsamer Speicher Einzelrechner Gegenwart Nachrichtenkommunikation Verteilte
MehrMPI 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
MehrVirtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44
Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Die Idee Virtuelle Adressen Prozess 1 Speicherblock 0 Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock
MehrKurz: Stimme meinen Vorrednern zu: Angenehme Atmosphäre. Eher ein Fachgespräch als eine Prüfung. Eindeutig zu empfehlen
Kursversion WS: 10/11 02.2012 Kurs 1727 Kurz: Stimme meinen Vorrednern zu: Angenehme Atmosphäre. Eher ein Fachgespräch als eine Prüfung. Eindeutig zu empfehlen Grundlagen Parallele Programmierung? Was
MehrSysteme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz
Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch
MehrGames with Cellular Automata auf Parallelen Rechnerarchitekturen
Bachelor Games with Cellular Automata auf Parallelen en ( ) Dipl.-Inf. Marc Reichenbach Prof. Dietmar Fey Ziel des s Paralleles Rechnen Keine akademische Nische mehr Vielmehr Allgemeingut für den Beruf
MehrHigh Performance Computing
REGIONALES RECHENZENTRUM ERLANGEN [ RRZE ] High Performance Computing Systemausbildung Grundlagen und Aspekte von Betriebssystemen und System-nahen Diensten Michael Meier, RRZE, 01.07.2015 Agenda Was bedeutet
MehrLinux-Cluster mit Raspberry Pi. Dr. René Richter Sächsische Studienakademie Dresden rene.richter@ba-dresden rene.richter@namespace-cpp.
Linux-Cluster mit Raspberry Pi Dr. René Richter Sächsische Studienakademie Dresden rene.richter@ba-dresden rene.richter@namespace-cpp.de Lange Nacht der Wissenschaften 2013 Moore s Law Moore s Law (1965)
MehrBeispiel Parallelisierung 2D Laplace. Lagrange Formulierung/Hyperelastisches Material. Finite Differenzen Diskretisierung
Simulation von physikalischen Feldern im menschlichen Körper Implementierung Gliederung Gliederung Wiederholung: Biomechanik III Statische elastomechanische Probleme Finite Elemente Diskretisierung Finite
Mehr2. Der ParaNut-Prozessor "Parallel and more than just another CPU core"
2. Der ParaNut-Prozessor "Parallel and more than just another CPU core" Neuer, konfigurierbarer Prozessor Parallelität auf Daten- (SIMD) und Thread-Ebene Hohe Skalierbarkeit mit einer Architektur neues
MehrProgrammierung von Many-Cores. Seminar: Software Engineering für Exascale Computing
Programmierung von Many-Cores Seminar: Software Engineering für Exascale Computing Patrizia Peller April 18, 2013 Programmierung von Many-Cores Hardware-Architekturen Anforderungen an Programmiersprachen
MehrVorlesung 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
MehrGeneral Purpose Computation on GPUs
General Purpose Computation on GPUs Matthias Schneider, Robert Grimm Universität Erlangen-Nürnberg {matthias.schneider, robert.grimm}@informatik.stud.uni-erlangen.de M. Schneider, R. Grimm 1 Übersicht
MehrProgrammierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de
> Programmierbeispiele und Implementierung Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de 2 > Übersicht > Matrix Vektor Multiplikation > Mandelbrotmenge / Apfelmännchen berechnen > Kantendetektion
MehrShared-Memory Parallelisierung von C++ Programmen
Shared-Memory Parallelisierung von C++ Programmen 9. Februar 2006 1 Übersicht Ergebnisse Zusammenfassung 2 3 Übersicht Ergebnisse Zusammenfassung Übersicht Verbreitete Parallelisierungstechniken für Shared-Memory:
MehrOpenCL Implementierung von OpenCV Funktionen
Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen julian.mueller@e-technik.stud.uni-erlangen.de Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL
MehrProgrammieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11
MehrParallele Programmierung mit OpenMP
Parallele Programmierung mit OpenMP Wolfgang Dautermann FH Joanneum Chemnitzer Linuxtage 2008 1 Motivation 2 OpenMP Übersicht 3 Hello World - der erste Code 4 OpenMP-Compilerdirektiven Threaderzeugung
MehrEinführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg
GPU-Versuch andreas.schaefer@cs.fau.de Friedrich-Alexander-Universität Erlangen-Nürnberg Praktikum Parallele Rechnerarchitekturen SS2014 Outline 1 Einführung 2 Outlook 1 Einführung 2 Eine kurze Geschichte
MehrLeistungskurs C++ Einführung
Leistungskurs C++ Einführung Martin Knopp, Johannes Feldmaier, Stefan Röhrl 18.10.2016 Folie 1/18 LK C++: Einführung Martin Knopp, Johannes Feldmaier, Stefan Röhrl 18.10.2016 Das Team Martin Knopp Martin.Knopp@tum.de
MehrParallele Programmierung mit OpenMP und MPI
Parallele Programmierung mit OpenMP und MPI oder Wieso früher alles besser war Robin Geyer 08.10.2010 Robin Geyer () Parallele Programmierung mit OpenMP und MPI 08.10.2010 1 / 52 Fahrplan Einführung /
MehrParallelverarbeitung
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
MehrVertiefungsrichtung Rechnerarchitektur
srichtung () ( für ) Prof. Dietmar Fey Ziele der srichtung RA Vertiefen des Verständnis vom Aufbau, Funktionsweise von Rechnern und Prozessoren Modellierung und Entwurf von Rechnern und Prozessoren ()
MehrLinker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft
Prozeß: drei häufigste Zustände Prozeß: anatomische Betrachtung jeder Prozeß verfügt über seinen eigenen Adreßraum Sourcecode enthält Anweisungen und Variablen Compiler überträgt in Assembler bzw. Binärcode
MehrOpenMP am Beispiel der Matrizenmultiplikation
OpenMP am Beispiel der Matrizenmultiplikation David J. Meder, Dr. Victor Pankratius IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe
MehrSequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden )
Threads Sequentielle Programm- / Funktionsausführung innerhalb eines Prozesses ( thread = Ausführungsfaden ) Ein thread bearbeitet eine sequentielle Teilaufgabe innerhalb eines Prozesses Mehrere nebenläufige
Mehr2Binden 3. und Bibliotheken
3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler
MehrEchtzeitbetriebssysteme
Speicherverwaltung (Memory Management) Aufgaben der Memory-Management-Unit ist l der Speicherschutz und l die Adressumsetzung Wird durch Hardware unterstützt l Memory Management Unit (MMU) l MMU wird vom
MehrRST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck
RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme
MehrPThreads. 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
MehrGPGPU-Programming. Constantin Timm Informatik 12 TU Dortmund 2012/04/09. technische universität dortmund. fakultät für informatik informatik 12
12 GPGPU-Programming Constantin Timm Informatik 12 TU Dortmund 2012/04/09 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt. Motivation
MehrAnleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome
Anleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.f90 1.2
MehrKlausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)
Ein Prozess kann unmittelbar vom Zustand 1. Running in den Zustand Ready 2. Running in den Zustand Blocked 3. Ready in den Zustand Running Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Der Adressraum
Mehr4. Parallelprogrammierung. AlDaBi Praktikum
4. Parallelprogrammierung AlDaBi Praktikum Inhalt Einführung in Parallelität OpenMP Bemerkungen zur P-Aufgabe Einführung in Parallelität Folien z.t. aus VL Programmierung von Hardwarebeschleunigern von
MehrModerne parallele Rechnerarchitekturen
Seminar im WS0708 Moderne parallele Rechnerarchitekturen Prof. Sergei Gorlatch Dipl.-Inf. Maraike Schellmann schellmann@uni-muenster.de Einsteinstr. 62, Raum 710, Tel. 83-32744 Dipl.-Inf. Philipp Kegel
MehrRechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance
Rechnerarchitektur und Betriebssysteme (CS201): Semaphor, Monitor, Deadlocks, Re-Entrance 5. November 2013 Prof. Dr. Christian Tschudin Departement Mathematik und Informatik, Universität Basel Repetition
MehrSysteme I: Betriebssysteme Kapitel 8 Speicherverwaltung
Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Version 21.12.2016 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen
MehrC++ 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
MehrGPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg
Einführung CUDA Friedrich-Alexander-Universität Erlangen-Nürnberg PrakParRA, 18.11.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell
MehrRechnernutzung in der Physik. Betriebssysteme
Rechnernutzung in der Physik Betriebssysteme 1 Betriebssysteme Anwendungsprogramme Betriebssystem Treiber BIOS Direkter Zugriff von Anwenderprogrammen auf Hardware nur in Ausnahmefällen sinnvoll / möglich:
MehrSystemprogrammierung
Systemprogrammierung 3Vom C-Programm zum laufenden Prozess 6. November 2008 Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2008 SS 2006 SOS 1 (03-Pro.fm 2008-11-06 08.52) 3 Vom C-Programm
MehrOpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.
OpenCL Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.de Abstract: In diesem Dokument wird ein grundlegender Einblick in das relativ
MehrU9-3 Vergleich von Thread-Konzepten. U9-2 Motivation von Threads. U9-3 Vergleich von Thread-Konzepten (2) U9-1 Überblick
U9 9. Übung U9 9. Übung U9-1 Überblick Besprechung Aufgabe 6 (printdir) Posix-Threads U9.1 User-Level Threads: Federgewichtige Prozesse Realisierung von Threads auf Anwendungsebene innerhalb eines Prozesses
MehrCUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1
CUDA Jürgen Pröll Multi-Core Architectures and Programming Jürgen Pröll 1 Image-Resize: sequentiell resize() mit bilinearer Interpolation leicht zu parallelisieren, da einzelne Punkte voneinander unabhängig
MehrDer Goopax Compiler GPU-Programmierung in C++ ZKI AK-Supercomputing, Münster, 27.03.2014, Ingo Josopait
Der Goopax Compiler GPU-Programmierung in C++ AMD R9 290X: 5.6 TFLOPS (SP MulAdd) Programmierung ~10000 Threads Entwicklungsumgebungen Entwicklungsumgebungen CUDA, OpenCL Compiler: kernel GPU Maschinencode
MehrÜbersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?
Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Einleitung 1 2 der nebenläufigen Programmierung WS 2011/12 Stand der Folien: 18. Oktober 2011 1 TIDS
MehrKlausur zu High Performance Computing 7. Februar 2014
Britta Nestler, Alexander Vondrous, Johannes Hötzer, Marcus Jainta Fakultät IWI, Hochschule Karlsruhe Klausur zu High Performance Computing 7. Februar 2014 Es sind keine Hilfsmittel zugelassen. Bearbeitungszeit:
MehrEinführung in die Parallele Programmierung
Einführung in die Parallele Programmierung K. Benkert 1, A. Stock 2 1 High Performance Computing Centre Stuttgart www.hlrs.de Universität Stuttgart 2 Institut für Aerodynamik und Gasdynamik (IAG) www.iag.uni-stuttgart.de
MehrGrundlagen Rechnerarchitektur und Betriebssysteme
Grundlagen Rechnerarchitektur und Betriebssysteme Johannes Formann Definition Computer: Eine Funktionseinheit zur Verarbeitung von Daten, wobei als Verarbeitung die Durchführung mathematischer, umformender,
MehrBibliotheks-basierte Virtualisierung
Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015/2016 V. Sieh Bibliotheks-basierte Virtualisierung (WS15/16)
MehrSoftwaresysteme I Übungen Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2007 U9.fm
U9 9. Übung U9 9. Übung U9-1 Überblick Besprechung Aufgabe 6 (printdir) Posix-Threads U9.1 U9-2 Motivation von Threads U9-2 Motivation von Threads UNIX-Prozesskonzept: eine Ausführungsumgebung (virtueller
MehrStaff. Tim Conrad. Zeitplan. Blockseminar: Verteiltes Rechnen und Parallelprogrammierung. Sommer Semester 2013. Tim Conrad
Blockseminar: Verteiltes Rechnen und Parallelprogrammierung Sommer Semester 2013 Tim Conrad Staff Tim Conrad AG Computational Proteomics email: conrad@math.fu-berlin.de Telefon: 838-51445 Büro: Raum 138,
MehrParallele 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
MehrKommunikationsmodelle
Kommunikationsmodelle Dr. Victor Pankratius David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Grundlegende
MehrMessage-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
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrIT-Infrastruktur, WS 2014/15, Hans-Georg Eßer
ITIS-D'' IT-Infrastruktur WS 2014/15 Hans-Georg Eßer Dipl.-Math., Dipl.-Inform. Foliensatz D'': Rechnerstrukturen, Teil 3 v1.0, 2014/11/27 Folie D''-1 Dieser Foliensatz Vorlesungsübersicht Seminar Wiss.
MehrProtected User-Level DMA in SCI Shared Memory Umgebungen
Protected User-Level DMA in SCI Shared Memory Umgebungen Mario Trams University of Technology Chemnitz, Chair of Computer Architecture 6. Halle Chemnitz Seminar zu Parallelverarbeitung und Programmiersprachen
MehrGliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo
Gliederung Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo Was ist CUDA? Nvidia CUDA ist eine von NvidiaGPGPU-Technologie, die es Programmierern erlaubt, Programmteile
Mehr1 Konzepte der Parallelverarbeitung
Parallelverarbeitung Folie 1-1 1 Konzepte der Parallelverarbeitung Erhöhung der Rechenleistung verbesserte Prozessorarchitekturen mit immer höheren Taktraten Vektorrechner Multiprozessorsysteme (Rechner
MehrProgrammieren mit OpenMP
Programmieren mit OpenMP Dr. Victor Pankratius David J. Meder IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Inhalt Was
MehrEntwicklung algorithmischer Skelette für CUDA am Beispiel von Affintiy Propagation
Entwicklung algorithmischer Skelette für CUDA am Beispiel von Affintiy Propagation Christoph Winter Fakultät für Informatik und Mathematik Ostbayerische Technische Hochschule Regensburg 93049 Regensburg
MehrProgrammierung von Graphikkarten
Programmierung von Graphikkarten Stefan Lang Interdisziplinäres Zentrum für Wissenschaftliches Rechnen Universität Heidelberg INF 368, Raum 532 D-69120 Heidelberg phone: 06221/54-8264 email: Stefan.Lang@iwr.uni-heidelberg.de
MehrFunktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
MehrBetriebssysteme G: Parallele Prozesse (Teil A: Grundlagen)
Betriebssysteme G: Parallele Prozesse (Teil A: Grundlagen) 1 Prozesse Bei Betriebssystemen stoßen wir des öfteren auf den Begriff Prozess als wahrscheinlich am häufigsten verwendeter und am unklarsten
Mehr