Projekt Parallelrechnerevaluation
|
|
- Waldemar Junge
- vor 5 Jahren
- Abrufe
Transkript
1 Projekt Parallelrechnerevaluation Thema Autor Datum In Zusammenarbeit mit Fortran Parallelisierung Anna Fuchs September 2012 Petra Nerge Julian Kunkel Michal Kuhn Nathanael Hübbe
2 Überblick Fortran Architekturen Interner Parallelismus Externer Parallelimus OpenMP MPI Hybrid GPU Beispielanalyse Quellen 2
3 Fortran Überblick FORmula TRANslation Erste funktionsfähige höhere prozedurale Programmiersprache 1954 Backus, IBM Einsatz: Wissenschaft, Militär, Ingineurwesen Klima, Ströhmungsmechanik, Astronomie etc. Neben C/C++ führend auf dem HLR Markt 3
4 Fortran Versionen FORTRAN I 1954 FORTRAN II 1958 FORTRAN III FORTRAN IV 1961 FORTRAN FORTRAN /1978 FORTRAN HPF (High Performance Fortran) FORTRAN FORTRAN Co-Array Fortran FORTRAN /2010 Erster Compiler 1957 Einzelne Module kompilieren Nie veröffentlicht Überarbeitung von FORTRAN II Von ASA (American Standards Association) standardisiert print, if, include, character, open/close Modularisierung, dynamische Speicherverwaltung, Überladn der Operatoren forall, Trend: parallel Überarbeitung des Vorgängers Objektorientierung, C-Kompatibilität PGAS PGAS 4
5 Architekturen Gemeinsamer Speicher (shared memory) Mehrere CPUs/Rechner teilen sich den Speicher Schneller, weitgehen gleicher Speicherzugriff UMA (Uniform Memory Access) Verteilter Speicher (distributed memory) Jede CPU/Rechner hat jeweils eigenen Speicher Langsamer Zugriff auf fremden Speicher Mittelweg: Vernetzte Rechnerknoten mit gemeinsamem Speicher NUMA (Non-uniform Memory Access) Problem: Manipulation auf fremdem Speicher Cache / Hauptspeicher synchronisieren Lösung: virtueller gemeinsamer Speicher, Interconnects ccnuma First Touch Strategie Wer rechnet, der initialisiert auch 5
6 Interner Parallelismus PGAS (partitioned global address space) Parallel C Co-Array Fortran Co-Array Fortran Adressbereich logisch aufgeteilt Effeziente Unterteilung großer Datenmengen Komplexe Variablenverwaltung Ggf. guter Lastausgleich Codereplizierung, Daten aufgeteilt Asynchrone Ausführung der Kopien Syntaxerweiterung Von Intel aufgegriffen, verbreitet sich weiter SSE Intrinsics (Streaming SIMD Extension) Befehlssatzerweiterung der X86-Architektur (Intel) 16 Register mit 128 (256) Bit Breite 1 Taktzyklus für z.b. Addition, 4 Additionen in 1 Taktzyklus Hardwarenahes Programmieren aufwendig, aber gut Fortran intern, ermöglicht Vektorisierung forall Angeblich besser vom Compiler zu verarbeiten Funktioniert nicht wird später erläutert 6
7 Interner Parallelismus OpenMP (gemeinsamer Speicher) Schwerpunkt MPI (verteilter Speicher) Hybrid GPU Beschleuniger 7
8 Externer Parallelismus OpenMP Open Multi-Processing Programmierschnittstelle für C/C++ und Fortran Ab 1997 von Hardware- und Compilerherstellern entwickelt Für Fortran und C/C++ getrennt entwickelt, erst 2005 vereint Aktuelle Version OpenMP 3.1 (Juli 2011) Schwache Kontrolle über Variablen und Abläufe 8
9 Externer Parallelismus OpenMP - Einführung Kompilieren gfortran -fopenmp -o test test.f90 # für gfortran ifort -openmp -o bsp bsp.f90 # für Intel Fortran Compiler use omp_lib, NICHT include 'omp_lib.h' Mit!$omp Direktiven eingeleitet Wenn nicht mit OpenMP Flag kompiliert, als Kommentar gewertet Threads erzeugen/zertören!$omp parallel /!$omp end parallel Threadszahl!$omp parallel num_threads(10) omp_get_max_threads() Synchronisierung!$omp barrier Am Ende jedes parallelen Blocks eine implizite barrier, kann mit nowait aufgelöst werden 9
10 Externer Parallelismus OpenMP - Einführung Sequentieller Ablauf single Von 1 Thread ausgeführt - der als erster den Block erreicht master Von 1 Thread ausgeführt - der Master Thread Hinweis: wenn mehrere parallele Blöcke von wenigen sequentiellen Anweisungen getrennt: Sequentiellen Ablauf im parallelen Block erzwingen, spart Erzeugung und Zerstörung der Threads critical section Von allen Threads ausgeführt - aber nie gleichzeitig Ressorucenverwaltung shared (default), private, lastprivate, firstprivate firstprivate Initialisierung mit dem letzten Wert vor dem parallelen Block lastprivate Der Wert der letzten Iteration wird rausgeschrieben 10
11 Externer Parallelismus OpenMP - Einführung Schleifen!$omp do /!$omp end do Hier auch möglich Variablen zu deklarieren (private, shared etc.) Laufindex immer private, auch wenn explizit als shared deklariert canonical shape Keine dynamische Grenzenänderung Keine Sprünge: break, exit, return, goto Nur <, >, = erlaubt, keine.and.,.or. In- bzw. Dekrementierung nur mit +, - Verschachtelte Schleife mit collapse(x) zusammenführen Sonst nur äußere Iterationen aufgeteilt 11
12 Externer Parallelismus OpenMP - Einführung Scheduling keine aussagekräftigen Tests schedule (type, chunk) type [static / dynamic / guided / runtime / auto] static Aufteilung in Blöcke fester Größe [chunk] zur Kompilierzeit schlechtere Verteilung, weniger Overhead dynamic guided Aufteilung in Blöcke fester Größe [chunk] zur Laufzeit bessere Verteilung, mehr Ovrhead Immer kleiner werdende Blöcke zugewiesen (dynamisch) chunk ist nicht die Anfangsgröße max(chunk, i/pn), i Zahl der verbliebenen Iterationen, pn Zahl der Threads Weniger Blöcke als beim guided, mehr Overhead runtime setenv OMP_SCHEDULE dynamic, 10 auto Vom Compiler zur Laufzeit entschieden 12
13 Externer Parallelismus OpenMP - Einführung Folgendes ist nicht standardisiert Anzahl der Threads, falls nicht vorgegeben Anzahl der Ebenen beim nested parallelism Default scheduling chunk-größe runtime scheduling include 'omp_lib.h' oder use omp_lib Realisierung der atomic Anweisungen (ggf. wird es mit critical section gemacht) 13
14 Externer Parallelismus MPI MPI (Message Parsing Interface) de-facto Standard für verteilten Speicher Nachrichtenaustausch Interessante Gegenüberstellungen zum Testen: blockierend p2p vs. nichtblockierend p2p kollektiv vs. One-sided Intel Compiler vs. GNU Compiler mpich Bibliothek vs. openmpi Bibliothek 14
15 Externer Parallelismus Hybrid Mischung aus mehreren Strategien z.b. MPI und OpenMP nicht trivial 15
16 Externer Parallelismus GPU Beschleuniger GPU (grapfic processor unit) Ungeschlagen in Anzahl der Operation/Sekunde CUDA (Compute Unified Device Architecture) von Nvidia OpenCL (Open Computing Language) universeller Kernelquellcode von speziellen Compilern übersetzt, Rest von gewöhnlichen Virtueller Maschinencode zur Laufzeit für jeweilige GPU eingebettet - weitere Bibliotheken nötig Aufwendige Programmierung - wenig geeignete Anwendungen Keine gute Auslastung der Knotenpaare CPU/GPU y-achse: Peak in Gflops/sec 16 16
17 Analyse O3 Optimierung nicht immer hilfreich zum Testen Möglichst keine Systemaufrufe wie write Cluster - Masterknoten (!) sollte man nicht tun Mittelwert aus 3 Druchläufen sofern keiner der Wert signifikant abweicht Zeit mit time./run gemessen Geht alternativ mit call cpu_time() oder omp_get_wtime() pro Thread Hilfsschleife für aussagekräfitge Zeitmessung 17
18 Analyse Hilfsschleife 1 program race 2!NICHT NACHMACHEN 3 USE omp_lib 4 implicit none 5 INTEGER, PARAMETER :: second = INTEGER, PARAMETER :: third = INTEGER, PARAMETER :: first = INTEGER :: one, two, three 9 INTEGER, DIMENSION (1:second, 1:third) :: matrix = !$omp parallel num_threads(12) 11!$omp do 12 DO one = 1, first 13 DO three= 1, third 14 DO two = 1, second 15 matrix(two, three) = matrix(two, three) & 16 + two + three 17 END DO 18 END DO 19 END DO Es gibt immer wieder verschiedene Ergebnisse one nicht an der Berechnung beteiligt Nur äußere Iterationen aufgeteilt Gleichzeitiger Zugriff auf die Matrix Race Conditions Wettlaufsituationen Laufzeitabhängiges Ergebnis Intel Thread Checker Lösung: Hilfsschleife außerhalb des parallelen Blocks Unnötige Threasderzeugung 20!$omp end do 21!$omp end parallel 22 write(*,*) matrix(30,30) END program race
19 Beispiele Array - Initialisierung sec program init_imm_seq 2 implicit none 3 4 INTEGER, DIMENSION( ) :: a 5 a = 0 6 END program init_imm_seq init_seq Elemente init_imm_seq init_for_seq 1 program init_for_seq 2 implicit none 3 4 INTEGER, DIMENSION( ) :: a 5 INTEGER :: i 6 7 DO i = 1, a(i) = 0 9 END DO END program init_for_seq Elemente init_imm_seq init_for_seq ,003 0, ,01 0, ,06 0, ,49 1, ,72 9,16 Äquivalente Programme Einzeiler lässt sich nicht parallelisieren, Schleife schon Lohnt sich nur für letzte Messwerte OpenMP lässt so viel Speicher nicht reservieren Der Einzeiler ist gut! 19
20 Beispiele Race Conditions - Abhängige Iterationen 1 program fix_me 2 USE omp_lib 3 implicit none 4! NICHT NACHMACHEN 5 INTEGER, PARAMETER :: m_end = INTEGER :: in, it 7 INTEGER :: it_stop = INTEGER, DIMENSION (1:m_end) :: matrix_a = 10 9 INTEGER, DIMENSION (1:m_end) :: matrix_b = 0 10 DO it = 1, it_stop!hilfsschleife Zugriff auf Werte ggf. eines anderen Threads Keine logische Reihenfolge der Abarbeitung Read/write Konflikt in Z. 14 und Z !$omp parallel num_threads(2) 12!$omp do 13 DO in = 2, m_end 14 matrix_a(in) = 2 * in * (in - 1) 15 matrix_b(in) = matrix_a(in) - matrix_a(in-1) 16 END DO 17!$omp end do 18!$omp end parallel 19 END DO END program fix_me 2 Lösungen Werte nicht auslesen, redundant berechnen Berechnung in 2 Schleifen aufsplitten 20
21 Beispiele Race Conditions - Abhängige Iterationen 14 matrix_a(in) = 2 * in * (in - 1) 15 matrix_b(in) = matrix_a(in) - 2 * (in -1) * (in - 2) «elegant» für redundante Berechnung non_elegant_x für Aufsplittung der Berechnungen in 2 Schleifen; x für 1 oder 2 Hilfsschleifen Threaderzegung offensichtlich nicht merkbar Seqeuntielle Lösungen geringfügig langsamer «elegante» Lösung besser, weil redundante Berechnung nicht sehr teuer 21
22 Beispiele Race Conditions - Abhängige Iterationen 1 program fix_me_real 2 implicit none 3!NICHT NACHMACHEN 4 INTEGER, PARAMETER :: m_end = INTEGER :: in, it 7 INTEGER :: it_stop = REAL, DIMENSION (1:m_end) :: matrix_a = REAL, DIMENSION (1:m_end) :: matrix_b = DO it = 1, it_stop 11 DO in = 2, m_end 12 matrix_a(in) = sin(real(in)) * matrix_b(in) = matrix_a(in) - matrix_a(in-1) 14 END DO 15 END DO 16 END program fix_me_real Seqentielle Zeit bei redundanter Berechnung doppelt so hoch Abwägen zwischen Speicherzugriff und Berechnungskosten Lokaler Speicher, fremder Speicher Sinus nicht die teuerste Operation 22
23 Beispiele Race Conditions - Abhängige Iterationen 1 program fixed_real 2 USE omp_lib 3 implicit none 4 INTEGER, PARAMETER :: m_end = INTEGER :: in, it_begin 6 INTEGER :: it_stop = REAL, DIMENSION (1:m_end) :: matrix_a = REAL, DIMENSION (1:m_end) :: matrix_b = DO it_begin = 1, it_stop!hilfsschleife 10!$omp parallel num_threads(12) 11!$omp do 12 DO in = 2, m_end 13 matrix_a(in) = sin(real(in)) * END DO 15!$omp end do 16!!$omp barrier 17!$omp do 18 DO in = 2, m_end 19 matrix_b(in) = matrix_a(in) - matrix_a(in-1) 20 END DO 21!$omp end do 22!$omp end parallel 23 END DO 24 END program fixed_real barrier auskommentiert, weil implizit schon eine da Zeiten zwischen fix_me_int und fix_me_real nicht direkt verlgeichbar m_end unterschiedlich groß Integer und Real Berechnung unterschiedlich aufwendig 23
24 Beispiele Race Conditions - private 1 program no_private 2! NICHT NACHMACHEN 3 USE omp_lib 4 implicit none 5 6 INTEGER, DIMENSION( ) :: arr = 1 7 INTEGER :: i, j, sum = 0 8!$omp parallel num_threads(100) 9!$omp do 10 DO i = 1, sum = sum + arr(i) 12 END DO 13!$omp end do 14!$omp end no_parallel write(*,*) sum 17 END program no_private 1 program p_private 2 3 USE omp_lib 4 implicit none 5 6 INTEGER, DIMENSION( ) :: arr = 1 7 INTEGER :: i, j, sum = 0 8!$omp parallel num_threads(100), firstprivate(sum) 9!$omp do 10 DO i = 1, sum = sum + arr(i) 12 END DO 13!$omp end do 14!$omp end no_parallel write(*,*) sum 17 END program p_private no_private weist Race conditions auf, liefert immer unterschiedliche Ergebnisse p_private weist keine Race Conditions auf, liefert aber nur Teilsummen 24
25 Beispiele Race Conditions - private 25
26 Beispiele Verschachtelte Schleifen - Optimierung If Block abhängig von nur 4 Variablen k-schleife im If block effezienter Speicherzugriffe optimieren 26
27 Beispiele Verschachtelte Schleifen - Optimierung 27
28 Beispiele Verschachtelte Schleifen - Optimierung Was ist besser - viele Iterationen außen oder wenig Iterationen außen? 28
29 Beispiele Verschachtelte Schleifen - collapse 29
30 Beispiele Verschachtelte Schleifen - collapse 30
31 Beispiele Verschachtelte Schleifen - collapse a_diagramm time(sec) num_threads fifth = 4, collapse(1) fifth = 4, collapse(2) 31
32 Beispiele Verschachtelte Schleifen - collapse 32
33 Beispiele Verschachtelte Schleifen - collapse 33
34 Beispiele Verschachtelte Schleifen - collapse b_diagramm time(sec) num_threads fifth = 4, collapse(2) fifth = 2100, collapse(1) Absolute Zeiten gering, prozentual aber ausreichend 34
35 Beispiele Verschachtelte Schleifen - collapse Ausreichend viele Iterationen außen, kein collapse Jedoch nicht zu viele, sonst steigt Aufteilungsoverhead Weiß man sicher, dass außen sind immer wenige Iterationen Entweder Schleife nach innen verschieben Oder collapse einbauen Mindestens so viele Iterationen wie es Threads gibt 35
36 Beispiele forall 1 program main 2 3 USE omp_lib 4 implicit none 5 6 REAL, DIMENSION(1:10000, 1:10000) :: A = REAL, DIMENSION(1:10000) :: B 8 INTEGER :: i, t 9 10 DO t= 1, $call omp_set_num_threads (1) $omp parallel 14 $omp workshare 15 forall (i = 1:10000) A(i,i) = sin(real(i)) / i 16! B(i) = A(i,i) 17 $omp end workshare 18 $omp end parallel 19 END DO END program main Einzeiler oder Block Maske Mit workshare zu parallelisieren Idexzugriff oder Wertezugriff Nur für Fortran 90/95, nur GNU, ab OpenMP 2.0 Arbeit wird in getrennte units aufgeteilt Läuft nicht parallel (Compiler? ) seq:36 sec ohne -fopenmp, seq:50 sec mit -fopenmp thr(2):40 sec 36
37 Vorgehensweise 1. Verteilter oder gemeinsamer Speicher? 1a. Konkrete Architektur (ggf. Sockets, Nodes etc) 1b. Hardwareunterstützung 1c. Umfang der Skalierbarkeit (100 oder cores?) 2. Analyse der sequentiellen Umsetzung 2.1 Profiler, Speicheranalyse, Algorithmen-analyse 3. Optimierung der sequentiellen Umsetzung 3.1 Cache Optimierung 3.2 Speicherzugriffe 3.3 Umstrukturierung 4. Entwurf auf Papier (domain decomposition, critical section) 5. Kommunikation schätzen für verteilten Speicher / Kritische Bereiche für gemeinsamen Speicher bestimmen 6. Abschätzung der Vorteile das Prinzip alleine sollte effizient sein, sequentielle Messungen 7. Implementieren Standard beachten! 8. Testen / Profilen / Analysieren / Debuggen 9. Optimierung/Skalierbarkeit: 9.1 Maß der Skalierbarkeit bestimmen, wann bricht Speed-up ein, Maßnahmen ergreifen 9.2 Lastausgleich 9.3 Compiler-Optimierung 9.4 Portabilität ermitteln 37
38 Was hätte ich besser machen können? Kein time./run verwenden Testfälle gut durchdenken, bevor Zeit investieren Prioritäten besser setzen - welche Tests will ich unbedingt zeigen Von Fehlern nicht so lange aufhalten lassen OpenMP Standard als Buch benutzen Gern in die OpenMP Implementierung reingeschaut Realistischer sein 38
39 Quellen Literatur 1. Stephen J. Chapman, Fortran 95/2003 for Scientists and Engineers, Heiko Bauke, Stephan Mertens, Cluster Computing, Rolf Rabenseifner, Parallel Programming Workshop, 2012 Web
40 Danke für die Aufmerksamkeit =) 40
Projekt Parallelrechnerevaluation
Projekt Parallelrechnerevaluation Thema Autor Datum In Zusammenarbeit mit Fortran Parallelisierung Schwerpunkt OpenMP Anna Fuchs September 01 Petra Nerge Julian Kunkel Michal Kuhn Nathanael Hübbe Inhaltsverzeichnis
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
MehrPraktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart & Enno Zickler hermann.lenhart@zmaw.de OpenMP Allgemeine Einführung I OpenMP Merkmale: OpenMP ist keine Programmiersprache!
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
MehrMaster-Thread führt Programm aus, bis durch die Direktive
OpenMP seit 1998 Standard (www.openmp.org) für die Shared-Memory Programmierung; (Prä-)Compiler für viele Systeme kommerziell oder frei (z.b. Omni von phase.hpcc.jp/omni) verfügbar Idee: automatische Generierung
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
MehrBeispiel: Schleifenparallelisierung
Beispiel: Schleifenparallelisierung for (i = 0; i high) { printf ( Exiting during iteration %d\n,i); break; for (j=low;j
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 OpenMP-Programmierung Teil III Multikern-Praktikum Wintersemester 06-07 Inhalt Was ist OpenMP? Parallele Regionen Konstrukte zur Arbeitsteilung
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
MehrOpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer
OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell
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
MehrShared-Memory Programmiermodelle
Shared-Memory Programmiermodelle mehrere, unabhängige Programmsegmente greifen direkt auf gemeinsame Variablen ( shared variables ) zu Prozeßmodell gemäß fork/join Prinzip, z.b. in Unix: fork: Erzeugung
MehrKonzepte 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
MehrPraktikum: 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
MehrCUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg
CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht Einleitung Architektur Programmierung 2 Einleitung Computations on GPU 2003 Probleme Hohe Kenntnisse der Grafikprogrammierung nötig Unterschiedliche
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
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:
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
MehrComputergrundlagen Moderne Rechnerarchitekturen
Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Aufbau eines modernen Computers DDR3- Speicher Prozessor Prozessor PEG
MehrC-to-CUDA-Compiler. Johannes Kölsch. October 29, 2012
October 29, 2012 Inhaltsverzeichnis 1 2 3 4 5 6 Motivation Motivation CUDA bietet extreme Leistung für parallelisierbare Programme Kompliziert zu programmieren, da multi-level parallel und explizit verwalteter
MehrPraktikum: Paralleles Programmieren für Geowissenschaftler
Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart hermann.lenhart@zmaw.de MPI Einführung I: Einführung Nachrichtenaustausch mit MPI MPI point-to-point communication
MehrComputergrundlagen Moderne Rechnerarchitekturen
Aufbau eines modernen Computers Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart DDR3- Speicher Prozessor Prozessor PEG Graphikkarte(n) weitere
MehrOpenMP - Geschichte. 1997: OpenMP Version 1.0 für Fortran
OpenMP - Geschichte 1997: OpenMP Version 1.0 für Fortran Standard für f r die Shared-Memory Memory-Programmierung inzwischen für f r alle namhaften SMP-Rechner verfügbar wird im techn.-wiss. Rechnen die
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
MehrIntel Thread Checker
Kurs 1: Ferienakademie 2009 26. September 2009 Gliederung Gliederung Was macht der Thread Checker und warum? Historisches Alternativen Was macht der Thread Checker und warum? Historisches Alternativen
MehrFORTRAN77. eine höllische Programmiersprache. Christian Sternecker. Sommersemester TU-München
FORTRAN77 eine höllische Programmiersprache Christian Sternecker TU-München Sommersemester 2010 Aufbau des Vortrags Geschichte Merkmale Höllische Konzepte Typsicherheit Programmstruktur Speicherverwaltung
MehrEvaluation. Einleitung. Implementierung Integration. Zusammenfassung Ausblick
Christopher Schleiden Bachelor Kolloquium 15.09.2009 Einleitung Evaluation Implementierung Integration Zusammenfassung Ausblick Einleitung laperf Lineare Algebra Bibliothek für C++ Möglichkeit zur Integration
MehrMulti- 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
Mehr6. Der OpenMP Standard. Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++
6. Der OpenMP Standard Direktiven-basiertes API zur Programmierung von Parallelrechnern mit gemeinsamem Speicher für FORTRAN, C und C++ OpenMP Programmiermodell OpenMP Direktiven basieren in C and C++
MehrPGI Accelerator Model
PGI Accelerator Model Philip Höhlein, Nils Werner Supervision: R. Membarth, P. Kutzer, F. Hannig Hardware-Software-Co-Design Universität Erlangen-Nürnberg Philip Höhlein, Nils Werner 1 Übersicht Motivation
MehrBeispielvortrag: HPCG auf Intel Haswell-EP
Beispielvortrag: HPCG auf Intel Haswell-EP Johannes Hofmann 1 Seminarvortrag Architekturen von Multi- und Vielkern-Prozessoren Erlangen, 19.4.2016 1 Computer Architecture, University Erlangen-Nuremberg
MehrInteraktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL)
Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL) Verteidigung der Belegarbeit Andreas Stahl Zielstellung Globales Beleuchtungsverfahren für die
MehrParallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff
Parallel Computing Einsatzmöglichkeiten und Grenzen Prof. Dr. Nikolaus Wulff Parallel Architekturen Flynn'sche Klassifizierung: SISD: single Instruction, single Data Klassisches von-neumann sequentielles
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
MehrMemory Models Frederik Zipp
Memory Models Frederik Zipp Seminar: Programmiersprachen für Parallele Programmierung (SS 2010) Fakultät für Informatik - IPD SNELTING LEHRSTUHL PROGRAMMIERPARADIGMEN 1
MehrParalleles Programmieren mit OpenMP und MPI OpenMP-Übungsaufgaben Steinbuch Centre for Computing
Paralleles Programmieren mit OpenMP und MPI OpenMP-Übungsaufgaben Steinbuch Centre for Computing und Universität Karlsruhe (TH) www.scc.kit.edu Parallele Berechnung von PI program compute_pi integer integer,
MehrCilk Sprache für Parallelprogrammierung. IPD Snelting, Lehrstuhl für Programmierparadigmen
Cilk Sprache für Parallelprogrammierung IPD Snelting, Lehrstuhl für Programmierparadigmen David Soria Parra Geschichte Geschichte Entwickelt 1994 am MIT Laboratory for Computer Science Cilk 1: Continuations
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
MehrRheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit
Rheinisch-Westfälische Technische Hochschule Aachen Seminararbeit Analyse von General Purpose Computation on Graphics Processing Units Bibliotheken in Bezug auf GPU-Hersteller. Gregori Kerber Matrikelnummer
MehrOrganisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online
Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches
MehrParalleler Cuckoo-Filter. Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21.
Paralleler Cuckoo-Filter Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21. November 2017 1 Paralleler Cuckoo-Filter Cuckoo-Hashtabelle Serieller Cuckoo-Filter
MehrAutomatische Parallelisierung
MPI und OpenMP in HPC Anwendungen findet man immer häufiger auch den gemeinsamen Einsatz von MPI und OpenMP: OpenMP wird zur thread-parallelen Implementierung des Codes auf einem einzelnen Rechenknoten
MehrKurzeinführung in C99
Kurzeinführung in C99 Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Compiler und Editoren - Was wird benötigt um ein Programm zu erstellen 2
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
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
MehrGrundlagen von CUDA, Sprachtypische Elemente
Grundlagen von CUDA, Sprachtypische Elemente Stefan Maskanitz 03.07.2009 CUDA Grundlagen 1 Übersicht 1. Einleitung 2. Spracheigenschaften a. s, Blocks und Grids b. Speicherorganistion c. Fehlerbehandlung
Mehr2 Rechnerarchitekturen
2 Rechnerarchitekturen Rechnerarchitekturen Flynns Klassifikation Flynnsche Klassifikation (Flynn sche Taxonomie) 1966 entwickelt, einfaches Modell, bis heute genutzt Beschränkung der Beschreibung auf
MehrJannis Beese, Universität Stuttgart, Ferienakademie 2009
Jannis Beese, Universität Stuttgart, Ferienakademie 2009 I. Was ist OpenMP? II. Konzepte III. Beispiele IV. Sichtbarkeit von Daten V. Kompilier-Vorgang VI. Effizienz 01.10.2009 Jannis Beese Portable, shared-data
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.
MehrSysteme 1: Architektur
slide 1 Vorlesung Systeme 1: Architektur Prof. Dr. Ulrich Ultes-Nitsche Forschungsgruppe Departement für Informatik Universität Freiburg slide 2 Prüfung 18. Februar 2004 8h00-11h40 13h00-18h20 20 Minuten
MehrCell and Larrabee Microarchitecture
Cell and Larrabee Microarchitecture Benjamin Grund Dominik Wolfert Universität Erlangen-Nürnberg 1 Übersicht Einleitung Herkömmliche Prozessorarchitekturen Motivation für Entwicklung neuer Architekturen
MehrSeminarvortrag: Direktivenbasierte Programmierung von Beschleunigern mit OpenMP 4.5 und OpenACC 2.5 im Vergleich
Seminarvortrag: Direktivenbasierte Programmierung von Beschleunigern mit Direktivenbasierte Programmierung von Beschleunigern mit Agenda Einführung / Motivation Überblick zu OpenMP und OpenACC Asynchronität
MehrVorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016
Paralleles Programmieren mit und MPI Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Steinbuch Centre for Computing Hartmut Häfner, Steinbuch Centre for Computing (SCC) STEINBUCH CENTRE
MehrLEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610
LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610 Dominik Weinrich dominik.weinrich@tu-dresden.de Dresden, 30.11.2017 Gliederung Motivation Aufbau und Hardware
MehrInformatik 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
Mehr> High-Level Programmierung heterogener paralleler Systeme
> High-Level Programmierung heterogener paralleler Systeme Projektseminar im SoSe 2012 Prof. Sergei Gorlatch, Michel Steuwer, Tim Humernbrum AG Parallele und Verteilte Systeme, Westfälische Wilhelms-Universität
MehrOpenMP Primer. Rechnerübung Rechnerarchitektur
OpenMP Primer Rechnerübung Rechnerarchitektur 1 Expliting Multicre Parallelism OpenMP basiert auf frk-jin Prgrammiermdel Prgramme starten mit nur einem Thread Zusätzliche Threads (thread team) werden für
MehrOrganisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download
Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches
MehrParallele Programmiermodelle
Parallele Programmiermodelle ProSeminar: Parallele Programmierung Semester: WS 2012/2013 Dozentin: Margarita Esponda Einleitung - Kurzer Rückblick Flynn'sche Klassifikationsschemata Unterteilung nach Speicherorganissation
MehrHomogene Multi-Core-Prozessor-Architekturen
Homogene Multi-Core-Prozessor-Architekturen Praktikum Parallele Rechnerarchitekturen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009
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
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
Mehr6. Grundlagen der Programmierung
Computeranwendung in der Chemie Informatik für Chemiker(innen) 6. Grundlagen der Programmierung Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL6 Folie 1 Dr. Jens Döbler Grundlagen
MehrEine kurze Einführung in Rechnerarchitektur und Programmierung von Hochleistungsrechnern als zentrales Werkzeug in der Simulation
Eine kurze Einführung in Rechnerarchitektur und Programmierung von Hochleistungsrechnern als zentrales Werkzeug in der Simulation Dr. Jan Eitzinger Regionales Rechenzentrum (RRZE) der Universität Erlangen-Nürnberg
MehrHochleistungsrechnen mit Windows Verifikations- und Analyseprogramme Christian Terboven Rechen- und Kommunikationszentrum RWTH Aachen
Hochleistungsrechnen mit Windows Verifikations- und Analyseprogramme hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 Hochleistungsrechnen mit Windows enter omputing and ommunication Agenda
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
MehrArrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3
Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................
Mehrhttp://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/openmp/openmp.dvi
Open Multi Processing Dipl. Math. F. Braun Universität Regensburg Rechenzentrum http://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/openmp/openmp.html http://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/openmp/openmp.pdf
MehrEinleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega
Einleitung... 11 Die Pins alphabetisch.... 12 Kapitel 1 Programmierung des ATmega8 und des ATmega328.... 15 1.1 Was Sie auf den nächsten Seiten erwartet... 19 1.2 Was ist eine Micro Controller Unit (MCU)?....
MehrRaytracing in GA mittels OpenACC. Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt
Raytracing in GA mittels OpenACC Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt michael.burger@sc.tu-darmstadt.de 05.11.12 FB Computer Science Scientific Computing Michael Burger 1 / 33 Agenda
MehrArchitektur von Parallelrechnern 50
Architektur von Parallelrechnern 50 Rechenintensive parallele Anwendungen können nicht sinnvoll ohne Kenntnis der zugrundeliegenden Architektur erstellt werden. Deswegen ist die Wahl einer geeigneten Architektur
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
MehrParallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff
Parallel Computing Einsatzmöglichkeiten und Grenzen Prof. Dr. Nikolaus Wulff Vorüberlegungen Wann ist paralleles Rechnen sinnvoll? Wenn die Performance/Geschwindigkeit steigt. Wenn sich größere Probleme
MehrMulti-threaded Programming with Cilk
Multi-threaded Programming with Cilk Hobli Taffame Institut für Informatik Ruprecht-Karls Universität Heidelberg 3. Juli 2013 1 / 27 Inhaltsverzeichnis 1 Einleitung Warum Multithreading? Ziele 2 Was ist
MehrWissenschaftliches Rechnen im SoSe 2015 Dr. J. Kunkel, Hans Ole Hatzel Abgabe:
Universität Hamburg Übungsblatt 2 zum Praktikum Department Informatik Paralleles Programmieren Wissenschaftliches Rechnen im SoSe 2015 Dr. J. Kunkel, Hans Ole Hatzel 06.05.2015 1 Vertiefung von C-Kentnissen
MehrMehrprozessorarchitekturen
Mehrprozessorarchitekturen (SMP, UMA/NUMA, Cluster) Arian Bär 12.07.2004 12.07.2004 Arian Bär 1 Gliederung 1. Einleitung 2. Symmetrische Multiprozessoren (SMP) Allgemeines Architektur 3. Speicherarchitekturen
MehrOpenMP. Michael Westermann
Westfälische Wilhelms-Universität Münster Ausarbeitung OpenMP im Rahmen des Seminars Parallele und verteilte Programmierung Michael Westermann Themensteller: Prof. Dr. Herbert Kuchen Betreuer: Dipl. Wirt.-Inform.
MehrMasterpraktikum Scientific Computing
Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Technische Universität München, Germany Outline Entwicklung General Purpose GPU Programming (GPGPU)
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
MehrRechnerarchitektur (RA)
12 Rechnerarchitektur (RA) Sommersemester 2015 OpenMP Michael Engel Informatik 12 michael.engel@tu-.. http://ls12-www.cs.tu-.de/daes/ Tel.: 0231 755 6121 2015/07/07 Basierend auf Material von OpenMP Usage
MehrParallele Rechnerarchitekturen
Bachelor Parallele en Informatik 3 ( ) Prof. Dietmar Fey Ziel des s Paralleles Rechnen Keine akademische Nische mehr Vielmehr Allgemeingut für den Beruf des Informatikers Bedingt durch Multikern- (und
MehrI Grundlagen der parallelen Programmierung 1
vii I Grundlagen der parallelen Programmierung 1 1 Einführung...... 3 1.1 Paradigmenwechsel in der Softwareentwicklung..... 4 1.2 Anwendungsbereiche...... 5 1.3 Parallelität in der Hardware..... 5 1.3.1
MehrC++ - Variablen: Gültigkeit - Sichtbarkeit
C++ - Variablen: Gültigkeit - Sichtbarkeit Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Attribute von Variablen und Funktionen Attribute von Variablen sind Name (name), Typ (type), Wert (value) Attribute von
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
MehrGeorg Hager Regionales Rechenzentrum Erlangen (RRZE)
Erfahrungen und Benchmarks mit Dual- -Prozessoren Georg Hager Regionales Rechenzentrum Erlangen (RRZE) ZKI AK Supercomputing Karlsruhe, 22./23.09.2005 Dual : Anbieter heute IBM Power4/Power5 (Power5 mit
MehrUnicode Support Atomic Operations Thread Support Type-Generic Makros Sicherheit Ease-of-Use C11. Thomas Duckardt
C11 Thomas Duckardt Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 22.05.2014 1 / 22 Gliederung (Agenda)
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrÜBUNGS-BLOCK 7 LÖSUNGEN
ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i
Mehr7 Laufzeit-Speicherverwaltung
7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.
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
MehrVorlesung 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
MehrATIK ORMAT SINFO HAFTS WIRT. Swetlana Konovalov Seminar Programmiersprachen Westfälische Wilhelms-Universität Münster
Westfälische Wilhelms-Universität Münster WIRTSCHAFTS ATIK ORMAT SINFO TSCH HAFTS WIRT FORTRAN Swetlana Konovalov Seminar Programmiersprachen 04.06.200906 Inhalt Einführung Historische Entwicklung Charakteristika
MehrProgrammieren 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
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
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
MehrRefactoring the UrQMD Model for Many- Core Architectures
Refactoring the UrQMD Model for Many- Core Architectures Mathias Radtke Semiar: Softwaretechnologie (WS 2013/2014 Goethe-Universität Frankfurt Agenda: 1. UrQMD 2. CPU Vs. GPU 3. Von FORTRAN zu C++/OpenCL
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Mehr