Physikalische Simulationen mit. 9. Vorlesung GPU Programmierung Thorsten Grosch

Größe: px
Ab Seite anzeigen:

Download "Physikalische Simulationen mit. 9. Vorlesung GPU Programmierung Thorsten Grosch"

Transkript

1 Physikalische Simulationen mit CUDA 9. Vorlesung g Thorsten Grosch

2 Übersicht Verschiedene physikalische Simulationen mit CUDA Deformationen Wärmeausbreitung Lichtausbreitung Können oft parallelisiert werden Verbindung CUDA mit OpenGL Quelle: NVIDIA 2

3 CUDA / OpenGL

4 Anzeige Bild Für die Anzeige haben wir bisher folgendes verwendet cudamemcpy( pixels, devptr, size, cudamemcpydevicetohost ); gldrawpixels( width, height,, pixels ); Da sich die Pixeldaten bereits auf der GPU befinden sind dies zwei unnötige Kopiervorgänge Kann durch Verwendung von PixelBufferObjects (PBOs) vermieden werden 4

5 CUDA-OpenGL GLKommunikation i durch hpixelbufferobjects Gemeinsamer Buffer für OpenGL und CUDA reservieren Unterschiedlicher Name für denselben Speicherbereich #include cuda_gl_interop.h GLuint bufferobj; cudagraphicsresource *resource; 5

6 GPU Device auswählen Wähle eine GPU mit CUDA Fähigkeit aus device cudadeviceprop prop; int dev; memset( &prop, 0, sizeof( cudadeviceprop ) ); prop.major =1; prop.minor = 0; cudachoosedevice( &dev, &prop ); CUDA GL Device setzen Diese GPU wird auch für OpenGL Anzeige verwendet cudaglsetgldevice( dev ); Danach GLUT Init 6

7 GPU Device auswählen Pixel Buffer Object (PBO) anlegen Speicher für Pixeldaten, ähnlich zu VBO usw. glgenbuffers( 1, &bufferobj ); glbindbuffer( GL_PIXEL_UNPACK_BUFFER_ARB, bufferobj ); glbufferdata( GL_PIXEL_UNPACK_BUFFER_ARB, sizeinbytes, NULL, GL_DYNAMIC_DRAW_ARB DRAW ARB ); glbindbuffer( GL_PIXEL_UNPACK_BUFFER_ARB, 0 ); Buffer bei CUDA anmelden: resource bufferobj cudagraphicsglregisterbuffer( &resource, bufferobj, cudagraphicsmapflagsnone ) ); 7

8 Drawpixels In der display Funktion Buffer Object mappen devptr für den Kernel cudagraphicsmapresources( 1, &resource, NULL ); cudagraphicsresourcegetmappedpointer( (void**)&devptr, &size, resource); kernelcall<<< >>>(devptr ); cudagraphicsunmapresources( 1, &resource, NULL ); Nach unmap unmap kann der Buffer gezeichnet werden Wenn PixelBufferObject gebunden ist, dann zeichnet gldrawpixels das aktuelle PBO (der data-pointer ist dann ein offset) Daten bleiben auf fgpu, keine Kopieraktionen i GPU CPU glbindbuffer( GL_PIXEL_UNPACK_BUFFER_ARB, bufferobj ); gldrawpixels( DIM, DIM, GL_LUMINANCE, LUMINANCE, GL_FLOAT, 0 ); 8

9 Freigabe Buffer Object und Resource löschen cudagraphicsunregisterresource(resource); gldeletebuffers(1, &bufferobj); Ähnliche Verknüpfung auch für Vertex Buffer Object möglich 9

10 Wärmeausbreitung

11 Wärmeausbreitung auf der GPU Die GPU eignet sich gut zum numerischen Lösen von Differentialgleichungen Einfache Operationen auf (2D) Gitter z.b. Wärmeausbreitung Hier vereinfachtes Modell, keine physikalische Korrektheit Raum = 2D Grid Einige Zellen sind (konstante) Wärmequellen Einige Zellen sind konstant kalt (Hindernisse) Die Übertragung der Wärme erfolgt zu den Nachbarzellen Wie sieht die resultierende Wärmeverteilung im Raum aus? 11

12 Wärmeausbreitung auf der GPU Die Wärmeübertragung ist dabei proportional zur Differenz der beiden benachbarten Werte z.b. Übertragung gnach rechts Δ f r = c ( f ( x + 1) f ( x)) c = c gibt dabei die Geschwindigkeit der Wärmeübertragung an BiB Bei Berücksichtigung ükihi aller vier Nachbarpixel ergibt sich Iteration Δ f = c ( f ( x + 1) + f ( x 1) + f ( y + 1) + f ( y 1) 4 f ( x )) Δf f Pro Pixel berechnen (parallel) und auf addieren 0 12

13 Wärmeausbreitung auf der GPU Konvergierter Zustand In jede Zelle fliesst genausoviel Wärme herein wie heraus c = Δf = Wird nach vielen Iterationen erreicht D Grid, Blockaufteilung beliebig Jeder Thread berechnet eine Zelle Umsetzung mit Texturspeicher (Cache ausnutzen) Ping-PongP Rendering 2. Iteration 13

14 KernelFunktion Blend global void blend_kernel( float *dst, bool dstout ) { // map from threadidx/blockidx to pixel position int x = threadidx.x + blockidx.x * blockdim.x; int y = threadidx.y + blockidx.y * blockdim.y; int offset = x + y * blockdim.x * griddim.x; // 1D Textur int left = offset - 1; // Randbehandlung int right = offset + 1; if (x == 0) left++; if (x == DIM-1) right--; int top = offset - DIM; int bottom = offset + DIM; if (y == 0) top += DIM; if (y == DIM-1) bottom -= DIM; 14

15 KernelFunktion Blend (2) } float t, l, c, r, b; if (dstout) { // Ping-Pong Rendering t = tex1dfetch(texin,top); // texin = source texture l = tex1dfetch(texin,left); c = tex1dfetch(texin,offset); r = tex1dfetch(texin,right); b = tex1dfetch(texin,bottom); } else { t = tex1dfetch(texout,top); // texout = source texture l = tex1dfetch(texout,left); c = tex1dfetch(texout,offset); r = tex1dfetch(texout,right); b = tex1dfetch(texout,bottom); } dst[offset] = c + SPEED * (t+b+r+l * c); // Übertragung 15

16 KernelFunktion CopyConstC // konstante Wärmequellen in jeder Iteration einfuegen global void copy_const_kernel( float *iptr ) { // map from threadidx/blockidx to pixel position int x = threadidx.x + blockidx.x * blockdim.x; int y = threadidx.y + blockidx.y * blockdim.y; int offset = x + y * blockdim.x * griddim.x; } float c = tex1dfetch(texconstsrc,offset); if (c!= 0) iptr[offset] = c; 16

17 Display Funktion void display() { if (dstout) { in = dev_insrc; // Speicheradresse fuer Textur1 out = dev_outsrc; // Speicheradresse fuer Textur2 } else { out = dev_insrc; in = dev_outsrc; } copy_const_kernel<<<blocks,threads>>>( in ); blend_kernel<<<blocks,threads>>>( out, dstout ); dstout =!dstout; // Ping-Pong } 17

18 Bi Beispiel ilwärmeausbreitung Zeit 18

19 N-Body Problem

20 N-Body Problem Gegeben: N Partikel Jedes Partikel hat eine Masse m und wirkt (Gravitations-)Kraft auf alle anderen Partikel aus Gesucht: Position und Geschwindigkeit der Partikel zu Zeitpunkt t Gravitation F = G ij m m i 2 ij r j G = Gravitationskonstante 20

21 Gesamtkraft als Vektor v F ij = G m m m m v r i j i j ij rij,0 = G = 2 2 ij rij rij r v G m m i r 3 ij j v r ij v N v F i = F ij j= 1 F v F v 1 12 F v 13 F v 14 Um die Singularität ität bei r = 0 zu vermeiden, kann z.b. eine Konstante im Nenner addiert werden 21

22 Physikalische h Größen Zur Bewegung gder Partikel benötigen wir einige physikalische Grundgesetze v F = v a = v = v ma v dv dt dx v dt Kraft = Masse * Beschleunigung Beschleunigung g = Änderung Geschwindigkeit pro Zeit Geschwindigkeit = Änderung Position pro Zeit 22

23 Physikalische h Größen Die (Gesamt-)Kraft auf ein Partikel muß in eine Änderung der Position und Geschwindigkeit des Partikels umgerechnet werden v a ( t ) v F( t) m = Beschleunigung aus Kraft bestimmen v v v ( t + dt) = ( t) + a( t) dt Neue Geschwindigkeit v v v x ( t + dt) = x( t) + ( t) dt Neue Position (hier kann auch schon v(t+dt) verwendet werden) 23

24 N-Body einfacher Pseudocode d calcforces for all particles i { F_i = 0 for all particles j{ F_ij = G * m_i * m_j / (r*r) F_i += F_ij } } integrate for all particles i { a_i = F_i / m_i v_i = v_i + a_i * dt x_i = x_i + v_i * dt } Die Dauer des Zeitschritts dt wird durch den Benutzer vorgegeben main for (t = 1.. numtimesteps) { calcforces integrate draw } v ( t 2 ) v ( t 1 ) v x v ( t 1 ) x(t 0 ) x v ( t 2 ) 24

25 N-Body erste Idee calcforces: Ersetze die äußere Schleife (for all particles i ) durch N parallele Threads Jeder Thread wertet die innere Schleife aus, im Idealfall ll gilt dann O(N*N) O(N) integrate: ebenfalls durch N parallele Threads berechnen 1D Grid, N Threads, Blockaufteilung (zunächst) beliebig 25

26 Berechnung der Kräfte (einfache Version) global void calcforcessimple(float4* positions, float4* forces, float mass, int numbodies) { int index = blockidx.x * blockdim.x + threadidx.x; float4 pos = positions[index]; float4 force = make_float4(0.0f, 0.0f, 0.0f, 0.0f); float4 r; float G = 1.0f / f; // set G to arbitrary constant float softeningsquared = 0.01; for (int j = 0 ; j < numbodies ; j++) { r.x = positions[j].x - pos.x; r.y = positions[j].y - pos.y; r.z = positions[j].z - pos.z; float distsqr = r.x * r.x + r.y * r.y + r.z * r.z; distsqr += softeningsquared; float invdist = 1.0f / sqrtf(distsqr); float invdistcube = invdist * invdist * invdist; float scale = mass * mass *G G; force.x += scale * invdistcube * r.x; force.y += scale * invdistcube * r.y; force.z += scale * invdistcube * r.z; } forces[index].x = force.x; forces[index].y = force.y; forces[index].z = force.z; GPU } Programmierung v F ij = G m m i 3 ij r j v r Leider keine Vektor-Operatoren in CUDA Aber: Operatoren können überladen werden ij 26

27 Berechnung neue Positionen i /Geschwindigkeiten i global void integratebodies(float4* newposdev, float4* newveldev, float4* oldposdev, float4* oldveldev, float4* forcesdev, float mass, float deltatime) { int index = blockidx.x * blockdim.x + threadidx.x; float4 pos = oldposdev[index]; float4 vel = oldveldev[index]; float4 force = forcesdev[index]; } v F ) m float4 newvel, accel; accel.x = force.x / mass; v F ( t accel.y = force.y / mass; a( t) = accel.z = force.z / mass; newvel.x = vel.x + accel.x * deltatime; newvel.y = vel.y + accel.y * deltatime; newvel.z = vel.z + accel.z * deltatime; newveldev[index].x = newvel.x; newveldev[index].y VlD = newvel.y; Vl newveldev[index].z = newvel.z; newposdev[index].x = pos.x + newvel.x * deltatime; newposdev[index].y ]y= pos.y + newvel.y * deltatime; newposdev[index].z = pos.z + newvel.z * deltatime; v v v ( t + dt) = ( t) + a( t) dt v v x ( t + dt ) = x ( t ) + v ( t ) dt 27

28 N-Body Verbesserung Problem bei einfacher Variante: Es funktioniert, aber: Zu viele (langsame) Speicherzugriffe Jeder der N Threads liest die gleichen N Positionen aller Partikel N*N Speicherzugriffe iff [Nyland et al. GPU Gems 3] Verwende 1D Grid der Größe N / p, also p Threads pro Block Jeder Thread hat Schleife über alle Blöcke Pro Schleifendurchlauf: Jeder Thread berechnet nur die Interaktionen mit den p Partikeln des aktuellen Blocks Die Positionen der p Partikel werden dazu im Shared Memory eingetragen (jeder Thread kopiert einen Wert paralleles Lesen möglich, siehe nächste Vorlesung) Danach kommt der nächste Block dran (sync!) 28

29 N-Body Verbesserung schematisch h [Nyland et al. GPU Gems 3] 1. Lade Partikel 1-4 in Shared Memory (jeder Thread kopiert ein Partikel) 2. Sync 3. Berechne Kräfte der Partikel 1 4 (auf alle Partikel parallel) 4. Sync 5. Lade Partikel 5 8 ins Shared Memory (jeder Thread kopiert ein Partikel) 6. Sync 7. Berechne Kräfte der Partikel 5 8 (auf alle Partikel parallel) 8. Sync 29

30 Berechnung der Kräfte mit Shared Memory Kernel enthält Schleife über alle Blöcke (tiles) Shared Memory wird mit Positionen gefüllt Berechnung der Kräfte von Partikeln aus Shared Memory global void calcforces(float4* positions, float4* forces, float mass, int numbodies) { shared float4 positioncache[blocksize]; int index = blockidx.x * blockdim.x + threadidx.x; float4 pos = positions[index]; float4 force = make_float4(0.0f, 0f 0.0f, 0f 0.0f, 0f 0.0f); 0f); float4 r; float G = 1.0f / f; // set G to arbitrary constant float softeningsquared = 0.01; for (int tile = 0 ; tile < griddim.x ; tile++) { positioncache[threadidx.x] = positions[tile * blockdim.x + threadidx.x]; syncthreads(); 30

31 Berechnung der Kräfte mit Shared Memory for (int j = 0 ; j < blockdim.x ; j++) { r.x = positioncache[j].x - pos.x; r.y = positioncache[j].y - pos.y; r.z = positioncache[j].z - pos.z; float distsqr = r.x * r.x + r.y * r.y + r.z * r.z; distsqr += softeningsquared; float invdist = 1.0f / sqrtf(distsqr); float invdistcube = invdist * invdist * invdist; float scale = mass * mass * G; v F ij = G m im j 3 r ij v r ij force.x += scale * invdistcube * r.x; force.y += scale * invdistcube * r.y; force.z += scale * invdistcube * r.z; } } syncthreads(); } forces[index].x = force.x; forces[index].y ]y= force.y; forces[index].z = force.z; forces[index].w = 0.0f; 31

32 Zi Zeitmessung Laptop, NV 9600M GT 4096 Partikel Messung für Kernel Aufruf von calcforces & integrate Ohne Shared Memory: ~58 ms Mit Shared Memory: ca 8 x schneller Genauere Untersuchung: siehe [Nyland et al. GPU Gems 3] BlockSize Zeit (ms) mit Shared Memory Viele Sync Aufrufe nicht alle Multiprozessoren ausgelastet 32

33 NB Body Partikel [Nyland et al. GPU Gems 3] Partikel 2^28 = 256 Millionen Interaktionen NV 8800 GPU: ca. 10 Billionen Interaktionen pro Sekunde NV 8800 GPU ca. 50x schneller als CPU 33

34 Erweiterungen Die hier verwendete Integration ist eine einfache Euler- Integration Es muss ein kleiner Zeitschritt gewählt werden, sonst driften die berechneten Positionen immer weiter von der exakten Lösung weg Schlauere Integrationsverfahren Predictor-Corrector, Runge-Kutta, Bei der Berechnung der Kräfte müssen nicht unbedingt alle N*N Kombinationen berechnet werden Verschiedene Ansätze, durch hcluster-bildung die Anzahl zu reduzieren (ersetze Gruppe von M entfernten Partikeln durch ein Partikel mit Gesamtmasse nur kleiner Fehler) [Yokota and Barba, GPU Computing Gems 2011][Barnes and Hut 1986][Greengard and Rokhlin 1987] 34

35 Masse-Feder System

36 Masse-Feder Fd Systeme Deformierbare Oberfläche/Volumen aus Punkten Kräfte zwischen benachbarten Massepunkten Feder Federkraft prop. Auslenkung (Hooke sches Gesetz) Vergleich zu N-Body Nur direkte Nachbarn (z.b. 4) Kraft prop. r (statt 1/r*r) Gleiche Integration Beispiel: Stoff siehe Übung, oder Wasseroberfläche 36

37 Fd Federkraft Die Feder hat eine Originallänge g r0 Die Kraft ist proportional zur Auslenkung r - r0 Die Gesamtkraft auf Partikel i ergibt sich durch Summe über alle Kräfte der anhängenden Federn: v v F i = F ij j NachbarnN F v ij F x ij i = r ij,0 k ( r r 0) ij ij, F v x r ij r ij,0 ji k: Federkonstante j v F i = v m a i Umrechnung in Position, Geschwindigkeit: siehe N-Body (gleiche integrate-funktion) i v F ij x j x i = x j xi v v F ji = F ij F ij 37

38 Zusätzliche Kräfte Reibung: FR Wirkt entgegen zum Geschwindigkeitsvektor F v Proportional zum Betrag der ij Geschwindigkeit Dämpfung, sonst endlose F v Ri x i Schwingung v F R Gravitation: FG v = μ Konstante t Kraft nach unten F v F G = 0 0 mg v F G v r i x j 38

39 Bi Beispiel: ilcloth hsimulation i Federkräfte, Dämpfung, Gravitation (außer an zwei Eckpunkten, hier wird dastuch festgehalten) Siehe Übung 39

40 Micro Rendering

41 Vergleich hlokale l globale l Beleuchtung Globale Beleuchtung Simulation aller Lichtwege von der Lichtquelle bis zum Auge Indirektes Licht, Spiegelungen, weiche Schatten, Ziele: Photorealistische Darstellung Echtzeitdarstellung, also mind. 25 Bilder / sek. Virtuelle 3D Szene, keine Beleuchtung Lokale Beleuchtung: Nur direktes Licht Schnell, aber künstlich Globale Beleuchtung: Photorealistisch, aber zeitaufwändig 41

42 Globale l Beleuchtung Direktes Licht Lichtquelle Reflexion an Oberfläche Auge Einfach zu berechnen Indirektes Licht Lichtquelle mehrfach an Oberfläche reflektiert Auge Schwierig zu berechnen Licht an einem Punkt hängt L o von Licht an allen anderen b v v ω i Punkten ab ωo Integralgleichung x L o v ( x, ω ) o v v v v v = L ( x, ω ) + f ( x, ω, ω ) cosθ L ( x, ω ) dω e o 2π sr r Das Licht an einem Punkt x in Richtung des Betrachters ergibt sich aus der Eigenemission i i an x plus dem Licht aus allen einfallenden Richtungen, das in Richtung des Betrachters reflektiert wird Siehe Master-Vorlesung Photorealistische Computergrafik i o f r i i y L i i 42

43 Indirektes Licht kann man z.b. so berechnen Pro Pixel im Bild wird die Szene mit direkte Licht aus der Sicht des zugehörigen 3D-Punkts tsgezeichnet ec et( (Blickrichtung c = Flächennormale) ae) Für den Punkt y (vorige Folie) wird also nur das direkte Licht berechnet Das indirekte Licht (1 x reflektiert) am 3D-Punkt ergibt sich dann als Summe der Pixelhelligkeiten 43

44 Indirektes Licht mit CUDA Idee: Parallel pro Pixel das Bild zeichnen (1 Thread pro Pixel) Direktes Rendering mit CUDA schwierig Also: alternative Darstellung der Szene 44

45 QSplat Schnelles Rendering von grossen Punkt-Modellen Punkthierarchie Genauer: oriented disks Berechne Cut durch Punkthierarchie Wenn ein innerer Knoten auf nur ein Pixel abgebildet wird, keine weitere Traversierung des Teilbaums Cut QSplat: Insgesamt 127 Mio Punkte Nur ~300k gezeichnet 5-10 fps Szymon Rusinkiewicz and Marc Levoy: QSplat: A Multiresolution Point Rendering System for Large Meshes SIGGRAPH 2001 Michelangelo: St. Mathew (unfinished) Before

46 Indirektes Licht mit CUDA Idee: Verwende beleuchtete Punkthierarchie mit direktem Licht Jeder Thread traversiert die Hierarchie Splatting in eigenen, kleinen Framebuffer pro Pixel (= 2D Array im Thread) Danach hberechnet jeder Thread ddie Summe aller Werte im 2D Array (= Reduce) 46

47 Micro Rendering Pro Pixel im Bild wird das direkte Licht aus der Sicht des zugehörigen 3D- Punkts in den Micro coframebuffer e gezeichnet e et (mit z-buffer) Dazu wird die beleuchtete Punkthierarchie traversiert Das indirekte Licht am 3D-Punkt ergibt sich dann als Summe der Micro-Pixel [Ritschel, Engelhardt, Grosch, Seidel, Kautz, Dachsbacher] SIGGRAPH ASIA

48 Traversierung Hierarchie Keine Rekursion auf der GPU Baumtraversierung schwierig Alternative: ti Baumtraversierung durch eigenen Stack Oder: Child- und Skip-Pointer 48

49 Child / Skip Pointer Traversierung ohne Stack möglich Child: linkes Kind Skip: Knoten, bei dem die Traversierung fortsetzt, wenn der Teilbaum unterhalb des aktuellen Knotens übersprungen wird Knoten werden in 1D Array gespeichert Vorberechnung (CPU), Baum bleibt statisch Traversierung kompletter Baum: falls Child!= NULL : verfolge Child-Pointer sonst: verfolge Skip-Pointer QSplat Falls Projektion von aktuellem Knoten > 1 Pixel : Verfolge Child-Pointer Sonst : Zeichne Pixel Verfolge Skip-Pointer 49

50 Micro Rendering Video 50

51 Micro Rendering Hierarchie 51

52 Glossy Final Gather Photon Mapping Simulation (CPU, offline) Export von beleuchteten (diffusen) Surfels Glossy Final Gather mit Micro Rendering, 2 fps 52

53 Micro Rendering Vergleich Micro Rendering Path Tracing Referenzlösung, Minuten-Stunden (Monte-Carlo-Simulation) 53

54 Zusammenfassung Diverse physikalische Simulationen: Heat, N-Body, Masse- Feder, Lichtsimulation (Microrendering) CUDA-OpenGL Nächste Woche: Ki Keine Vorlesung (Pfingsten), aber Übung In zwei Wochen: letzte reguläre Vorlesung: z.b. GPU Sortierverfahren In drei Wochen: Keine Vorlesung Danach noch eine Vorlesung mit Wiederholung & Fragen zur Klausur 54

Programmierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de

Programmierbeispiele 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

Mehr

CUDA. 7. Vorlesung GPU Programmierung. Danke an Hendrik Lensch

CUDA. 7. Vorlesung GPU Programmierung. Danke an Hendrik Lensch CUDA 7. Vorlesung Thorsten Grosch Danke an Hendrik Lensch Parallele l Programmierung mit der GPU Bisher: GPU = OpenGL Pipeline mit Shadern Alles orientiert sich am Rendering Programme für Eckpunkte und

Mehr

GPGPU-Programming. Constantin Timm Informatik 12 TU Dortmund 2012/04/09. technische universität dortmund. fakultät für informatik informatik 12

GPGPU-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

Mehr

CUDA. 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. 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

Mehr

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering Probelektion zum Thema Shadow Rendering Shadow Maps Shadow Filtering Renderman, 2006 CityEngine 2011 Viewport Real reconstruction in Windisch, 2013 Schatten bringen viel Realismus in eine Szene Schatten

Mehr

Programmierung von Graphikkarten

Programmierung 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

Mehr

Übung 3. Dipl.-Inf. Domenic Jenz (jenz@hlrs.de) Übungen zur Vorlesung Molekulardynamik und Lattice Boltzmann Methoden. HLRS, Universität Stuttgart

Übung 3. Dipl.-Inf. Domenic Jenz (jenz@hlrs.de) Übungen zur Vorlesung Molekulardynamik und Lattice Boltzmann Methoden. HLRS, Universität Stuttgart Übung 3 Dipl.-Inf. Domenic Jenz (jenz@hlrs.de) HLRS, Universität Stuttgart Übungen zur Vorlesung Molekulardynamik und Lattice Boltzmann Methoden Outline Ein kleines MD Programm Einführung Das Grundgerüst

Mehr

GPU Programmierung. Thorsten Grosch

GPU Programmierung. Thorsten Grosch Thorsten Grosch Willkommen zur ersten Vorlesung! g Heute Organisatorisches Vorstellung von Team und Vorlesung Historischer Rückblick zu GPUs 2 Das Team Vorlesung Jun.-Prof. Thorsten Grosch AG Computervisualistik

Mehr

Globale Beleuchtung. Thorsten Grosch. Thorsten Grosch Seit September 2009 Juniorprofessor für CV in Magdeburg

Globale Beleuchtung. Thorsten Grosch. Thorsten Grosch Seit September 2009 Juniorprofessor für CV in Magdeburg Praktikum Globale Beleuchtung Thorsten Grosch Wer bin ich Thorsten Grosch Seit September 2009 Juniorprofessor für CV in Magdeburg g Davor Studium Informatik TU Darmstadt Fraunhofer IGD Lichtsimulation

Mehr

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU (7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung

Mehr

Parallele Programmierung mit GPUs

Parallele Programmierung mit GPUs Parallele Programmierung mit GPUs Jutta Fitzek Vortrag im Rahmen des Moduls Parallele Programmierung, WS12/13, h_da Agenda GPUs: Historie GPU Programmierung Konzepte Codebeispiel Generelle Tipps & Tricks

Mehr

1. Eindimensionale Bewegung

1. Eindimensionale Bewegung 1. Eindimensionale Bewegung Die Gesamtheit aller Orte, die ein Punkt während seiner Bewegung einnimmt, wird als Bahnkurve oder Bahn bezeichnet. Bei einer eindimensionalen Bewegung bewegt sich der Punkt

Mehr

Physik 1. Kinematik, Dynamik.

Physik 1. Kinematik, Dynamik. Physik Mechanik 3 Physik 1. Kinematik, Dynamik. WS 15/16 1. Sem. B.Sc. Oec. und B.Sc. CH Physik Mechanik 5 Themen Definitionen Kinematik Dynamik Physik Mechanik 6 DEFINITIONEN Physik Mechanik 7 Was ist

Mehr

Lokale Beleuchtungsmodelle

Lokale Beleuchtungsmodelle Lokale Beleuchtungsmodelle Oliver Deussen Lokale Modelle 1 Farbschattierung der Oberflächen abhängig von: Position, Orientierung und Charakteristik der Oberfläche Lichtquelle Vorgehensweise: 1. Modell

Mehr

Cuda Speicherhierarchie

Cuda Speicherhierarchie Cuda Speicherhierarchie Threads eines Blocks können über Shared Memory kommunizieren Der Shared Memory ist klein aber sehr schnell Alle Threads können nur über Global Memory kommunizieren Der Global Memory

Mehr

(13) Hot Topics. Vorlesung Computergrafik T. Grosch

(13) Hot Topics. Vorlesung Computergrafik T. Grosch (13) Hot Topics Vorlesung Computergrafik T. Grosch Heute Vorstellung der besten Flugsimulatoren Hot Topics T. Grosch - - Warum Hot Topics? Typischerweise i Computergrafik 1 : Grundlagen, konstant Computergrafik

Mehr

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben

Mehr

Modell der Punktmasse

Modell der Punktmasse Kinematik Die Kinematik (kinema, griech., Bewegung) ist die Lehre von der Bewegung von Punkten und Körpern im Raum, beschrieben durch die Größen Weg (Änderung der Ortskoordinate) s, Geschwindigkeit v und

Mehr

GPU Programmierung. Thorsten Grosch

GPU Programmierung. Thorsten Grosch Thorsten Grosch Willkommen zur ersten Vorlesung! g Heute Organisatorisches Vorstellung von Team und Vorlesung Historischer Rückblick zu GPUs 2 Das Team Vorlesung Jun.-Prof. Thorsten Grosch AG Computervisualistik

Mehr

CUDA. Axel Jena, Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Axel Jena, Jürgen Pröll 1

CUDA. Axel Jena, Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Axel Jena, Jürgen Pröll 1 CUDA Axel Jena, Jürgen Pröll Multi-Core Architectures and Programming Axel Jena, Jürgen Pröll 1 Warum Tesla? Traditionelle Graphikkarten Getrennte Prozessoren für Vertex- / Pixelberechnungen - Nachteil:

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Beginn der Vorlesung zur Numerik I (Wintersemester 2010/2011)

Beginn der Vorlesung zur Numerik I (Wintersemester 2010/2011) M. Sc. Frank Gimbel Beginn der Vorlesung zur Numerik I (Wintersemester 2010/2011) 1 Motivation Ziel ist es, ein gegebenes lineares Gleichungssystem der Form Ax = b (1) mit x, b R n und A R n n zu lösen.

Mehr

Klausur Physik 1 (GPH1) am 8.7.02

Klausur Physik 1 (GPH1) am 8.7.02 Name, Matrikelnummer: Klausur Physik 1 (GPH1) am 8.7.02 Fachbereich Elektrotechnik und Informatik, Fachbereich Mechatronik und Maschinenbau Zugelassene Hilfsmittel: Beiblätter zur Vorlesung Physik 1 im

Mehr

Funktionen 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: 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

Mehr

Fadenpendel (M1) Ziel des Versuches. Theoretischer Hintergrund

Fadenpendel (M1) Ziel des Versuches. Theoretischer Hintergrund Fadenpendel M) Ziel des Versuches Der Aufbau dieses Versuches ist denkbar einfach: eine Kugel hängt an einem Faden. Der Zusammenhang zwischen der Fadenlänge und der Schwingungsdauer ist nicht schwer zu

Mehr

OpenCL. OpenCL. Boris Totev, Cornelius Knap

OpenCL. OpenCL. Boris Totev, Cornelius Knap OpenCL OpenCL 1 OpenCL Gliederung Entstehungsgeschichte von OpenCL Was, warum und überhaupt wieso OpenCL CUDA, OpenGL und OpenCL GPUs OpenCL Objekte Work-Units OpenCL Adressbereiche OpenCL API Codebeispiel

Mehr

Optimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks

Optimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks Fachhochschule Köln, Campus Gummersbach Optimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks 03.06.2009 Eugen Sewergin, B. Sc. Erstprüfer: Prof. Dr.

Mehr

Mathematik-Tutorium für Maschinenbauer II: Differentialgleichungen und Vektorfelder

Mathematik-Tutorium für Maschinenbauer II: Differentialgleichungen und Vektorfelder DGL Schwingung Physikalische Felder Mathematik-Tutorium für Maschinenbauer II: Differentialgleichungen und Vektorfelder Johannes Wiedersich 23. April 2008 http://www.e13.physik.tu-muenchen.de/wiedersich/

Mehr

M1 Maxwellsches Rad. 1. Grundlagen

M1 Maxwellsches Rad. 1. Grundlagen M1 Maxwellsches Rad Stoffgebiet: Translations- und Rotationsbewegung, Massenträgheitsmoment, physikalisches Pendel. Versuchsziel: Es ist das Massenträgheitsmoment eines Maxwellschen Rades auf zwei Arten

Mehr

GPGPU mit NVIDIA CUDA

GPGPU mit NVIDIA CUDA 01.07.12 GPGPU mit NVIDIA CUDA General-Purpose on Formatvorlagecomputing des Graphics Processing durch Units Untertitelmasters mit KlickenCompute bearbeiten NVIDIA Unified Device Architecture Gliederung

Mehr

TECHNISCHE MECHANIK III (DYNAMIK)

TECHNISCHE MECHANIK III (DYNAMIK) Klausur im Fach TECHNISCHE MECHANIK III (DYNAMIK) WS 2014 / 2015 Matrikelnummer: Vorname: Nachname: Ergebnis Klausur Aufgabe: 1 2 3 4 Summe Punkte: 15 7 23 15 60 Davon erreicht Bearbeitungszeit: Hilfsmittel:

Mehr

1. Bewegungsgleichung

1. Bewegungsgleichung 1. Bewegungsgleichung 1.1 Das Newtonsche Grundgesetz 1.2 Dynamisches Gleichgewicht 1.3 Geführte Bewegung 1.4 Massenpunktsysteme 1.5 Schwerpunktsatz Prof. Dr. Wandinger 2. Kinetik des Massenpunkts Dynamik

Mehr

OpenCL Implementierung von OpenCV Funktionen

OpenCL 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

Mehr

Photonik Technische Nutzung von Licht

Photonik Technische Nutzung von Licht Photonik Technische Nutzung von Licht Raytracing und Computergraphik Überblick Raytracing Typen von Raytracern z-buffer Raytracing Lichtstrahlen-Verfolgung (engl. ray tracing): Berechnung von Lichtstrahlen

Mehr

Programmierung mit C Zeiger

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

Mehr

Computergrafik/Visualisierung II

Computergrafik/Visualisierung II Vorlesung Computergrafik/Visualisierung II Hochschule für Technik und Wirtschaft Dresden University of Applied Sciences Prof. Dr. Marco Block-Berlitz Sommersemester 2014 Studiengang Medieninformatik Vorlesungsteil

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

Mehr

Lösung der zweidimensionalen Wirbeltransportgleichung auf NVIDIA Grafikkarten - Bachelorarbeit -

Lösung der zweidimensionalen Wirbeltransportgleichung auf NVIDIA Grafikkarten - Bachelorarbeit - Lösung der zweidimensionalen Wirbeltransportgleichung auf NVIDIA Grafikkarten - Bachelorarbeit - Seminar des Fachgebiets Optimierung bei partiellen Differentialgleichungen 13. Januar 2011 Gliederung 1

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Übersicht 1. Anzeigegeräte 2. Framebuffer 3. Grundlagen 3D Computergrafik 4. Polygongrafik, Z-Buffer 5. Texture-Mapping/Shading 6. GPU 7. Programmierbare Shader 1 LCD/TFT Technik Rotation der Licht-Polarisationsebene

Mehr

Tag der Umweltmeteorologie 12.05.2015. Michael Kunz

Tag der Umweltmeteorologie 12.05.2015. Michael Kunz Tag der Umweltmeteorologie 12.05.2015 Michael Kunz Beschleunigung von Ausbreitungsmodellen durch Portierung auf Grafikkarten Einleitung Das GRAL/GRAMM-System Cuda-GRAL Ergebnisse Vergleich der Modellergebnisse

Mehr

Klausur Physik 1 (GPH1) am

Klausur Physik 1 (GPH1) am Name, Matrikelnummer: Klausur Physik 1 (GPH1) am 18.9.09 Fachbereich Elektrotechnik und Informatik, Fachbereich Mechatronik und Maschinenbau Zugelassene Hilfsmittel: Beiblätter zur Vorlesung Physik 1 ab

Mehr

Gewöhnliche Differentialgleichungen am Beispiel des harmonischen Oszillators

Gewöhnliche Differentialgleichungen am Beispiel des harmonischen Oszillators Gewöhnliche Differentialgleichungen am Beispiel des harmonischen Oszillators Horst Laschinsky 12. Oktober 1999 Inhaltsverzeichnis 1 Gewöhnliche lineare homogene Differentialgleichungen 2. Ordnung mit konstanten

Mehr

GPGPU Programming nvidia CUDA vs. AMD/ATI Stream Computing. Seminar HWS 08/09 by Erich Marth

GPGPU Programming nvidia CUDA vs. AMD/ATI Stream Computing. Seminar HWS 08/09 by Erich Marth Computing 1 Inhalt Einführung nvidia CUDA AMD Stream Computing CUDA vs. Stream Computing - Warum, Vorteile, Motivation - Überblick, API - Details, Beispiele - Überblick, API - Details, Beispiele - wesentliche

Mehr

Vektorrechnung in der Physik und Drehbewegungen

Vektorrechnung in der Physik und Drehbewegungen Vektorrechnung in der Physik und Drehbewegungen 26. November 2008 Vektoren Vektoren sind bestimmt durch a) Betrag und b) Richtung Beispiel Darstellung in 3 Dimensionen: x k = y z Vektor in kartesischen

Mehr

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II Matrixzugriff Wir wollen nun unsere Einführung in die Arbeit mit Vektoren und Matrizen in MATLAB

Mehr

9. Vorlesung Wintersemester

9. Vorlesung Wintersemester 9. Vorlesung Wintersemester 1 Die Phase der angeregten Schwingung Wertebereich: bei der oben abgeleiteten Formel tan φ = β ω ω ω0. (1) ist noch zu sehen, in welchem Bereich der Winkel liegt. Aus der ursprünglichen

Mehr

computer graphics & visualization

computer graphics & visualization Entwicklung und Implementierung echtzeitfähiger Verfahren zur Darstellung von reflektierenden Objekten auf GPUs echtzeitfähiger Verfahren zur Darstellung von reflektierenden Objekten auf GPUs Motivation

Mehr

Seminar: Grafikprogrammierung

Seminar: Grafikprogrammierung Game Developer Converence 08 Seminar: Grafikprogrammierung Alexander Weggerle 17.04.08 Seite 2 Einführung Themenüberblick Organisatorisches Seminarablauf liches Seite 3 Einführung Seminar Motivation Vorbereitung

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Rendering Grundlagen Autodesk Maya. Grundlagen. Version 1.0-2009-04-08. 2009 Ingo Clemens brave rabbit www.braverabbit.de

Rendering Grundlagen Autodesk Maya. Grundlagen. Version 1.0-2009-04-08. 2009 Ingo Clemens brave rabbit www.braverabbit.de Rendering Grundlagen Version 1.0-2009-04-08 Allgemeine Unterschiede bei Renderern Scanline Rendering Raytrace Rendering Renderlayer Einsatz von Renderlayern Overrides Material Overrides Layer Presets Batch

Mehr

Mechanische Schwingungen Aufgaben 1

Mechanische Schwingungen Aufgaben 1 Mechanische Schwingungen Aufgaben 1 1. Experiment mit Fadenpendel Zum Bestimmen der Fallbeschleunigung wurde ein Fadenpendel verwendet. Mit der Fadenlänge l 1 wurde eine Periodendauer von T 1 =4,0 s und

Mehr

2. Lagrange-Gleichungen

2. Lagrange-Gleichungen 2. Lagrange-Gleichungen Mit dem Prinzip der virtuellen Leistung lassen sich die Bewegungsgleichungen für komplexe Systeme einfach aufstellen. Aus dem Prinzip der virtuellen Leistung lassen sich die Lagrange-Gleichungen

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

1. Einführung in OpenMP

1. 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

Mehr

Der Goopax Compiler GPU-Programmierung in C++ ZKI AK-Supercomputing, Münster, 27.03.2014, Ingo Josopait

Der 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

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 4-1 Übung 1) Schreiben Sie ein Programm, das die Fläche unter einer Parabel, also das Integral

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm Organiosatorisches. Tutorial CUDA. Ralf Seidler

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm Organiosatorisches. Tutorial CUDA. Ralf Seidler Friedrich-Alexander-Universität Erlangen-Nürnberg 05.10.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm 4 Organiosatorisches Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell

Mehr

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke, 2013-05-08

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke, 2013-05-08 Parallele Algorithmen mit OpenCL Universität Osnabrück, Henning Wenke, 2013-05-08 Aufräumen Ressourcen in umgekehrter Abhängigkeitsreihenfolge freigeben Objekte haben Reference-Count (RC), initial 1 clrelease

Mehr

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Sortierverfahren. Sortierverfahren für eindimensionale Arrays Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige

Mehr

Effiziente Erzeugung qualitativ hochwertiger Bilder anhand punktbasierter Geometriedaten

Effiziente Erzeugung qualitativ hochwertiger Bilder anhand punktbasierter Geometriedaten Effiziente Erzeugung qualitativ hochwertiger Bilder anhand punktbasierter Geometriedaten Referent: Arndt Ebert 1 2 Ziel des Vortrags Einordnung der point based representation (PBR) und Grundlagen Effiziente

Mehr

Wima-Praktikum 2: Bildsynthese-Phong

Wima-Praktikum 2: Bildsynthese-Phong Wima-Praktikum 2: Bildsynthese-Phong Wima-Praktikum 2: Prof. Dr. Lebiedz, M. Sc. Radic 1 Inhaltsverzeichnis 1 Einleitung 3 2 Kurze Beschreibung der Aufgabenstellung und dem Phong- Modell 3 3 Modellierung

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Wie groß ist die Page Table?

Wie 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

Mehr

Lattice Boltzmann Simulation bewegter Partikel

Lattice Boltzmann Simulation bewegter Partikel Lattice Boltzmann Simulation bewegter Partikel, Nils Thürey, Hans-Joachim Schmid, Christian Feichtinger Lehrstuhl für Systemsimulation Universität Erlangen/Nürnberg Lehrstuhl für Partikeltechnologie Universität

Mehr

Simulation multipler Streuung an Haaren mit Hilfe eines Photon-Mapping-Ansatzes

Simulation multipler Streuung an Haaren mit Hilfe eines Photon-Mapping-Ansatzes Fakultät Informatik Institut für Software- und Multimediatechnik, Professur für Computergraphik und Visualisierung Simulation multipler Streuung an Haaren mit Hilfe eines Photon-Mapping-Ansatzes Hauptseminar

Mehr

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens

Mehr

14. Mechanische Schwingungen und Wellen

14. Mechanische Schwingungen und Wellen 14. Mechanische Schwingungen und Wellen Schwingungen treten in der Technik in vielen Vorgängen auf mit positiven und negativen Effekten (z. B. Haarrisse, Achsbrüche etc.). Deshalb ist es eine wichtige

Mehr

Informatik Aufgaben. 1. Erstelle ein Programm zur Berechnung der Summe der Zahlen von 1 bis n, z.b. n = 100.

Informatik Aufgaben. 1. Erstelle ein Programm zur Berechnung der Summe der Zahlen von 1 bis n, z.b. n = 100. Informatik Aufgaben 1. Erstelle ein Programm zur Berechnung der Summe der Zahlen von 1 bis n, z.b. n = 100. 2. Erstelle ein Programm, das die ersten 20 (z.b.) ungeraden Zahlen 1, 3, 5,... ausgibt und deren

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge

Mehr

Materialien WS 2014/15 Dozent: Dr. Andreas Will.

Materialien WS 2014/15 Dozent: Dr. Andreas Will. Master Umweltingenieur, 1. Semester, Modul 42439, Strömungsmechanik, 420607, VL, Do. 11:30-13:00, R. 3.21 420608, UE, Do. 13:45-15:15, R. 3.17 Materialien WS 2014/15 Dozent: Dr. Andreas Will will@tu-cottbus.de

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale

Mehr

Rendering. Rendern (Umsetzung oder Übertragung) Ursprüngliche Rendergleichung

Rendering. Rendern (Umsetzung oder Übertragung) Ursprüngliche Rendergleichung DIE RENDERGLEICHUNG Die Rendergleichung, wird in der 3D-Computergrafik verwendet. Es handelt sich um eine Integralgleichung, welche die Energieerhaltung bei der Ausbreitung von Lichtstrahlen beschreibt

Mehr

Schritt 1 - Ein Spielfeld

Schritt 1 - Ein Spielfeld Schritt 1 - Ein Spielfeld Wir beginnen mit zwei einfachen Java-Klassen, dem eigentlichen Spielfeld und dem Applet zum Anzeigen des Spielfeldes (und später der Buttons und der anderen Bedienelemente). Hier

Mehr

ad Physik A VL2 (11.10.2012)

ad Physik A VL2 (11.10.2012) ad Physik A VL2 (11.10.2012) korrigierte Varianz: oder: korrigierte Stichproben- Varianz n 2 2 2 ( x) ( xi ) n 1 i1 1 n 1 n i1 1 Begründung für den Vorfaktor : n 1 Der Mittelwert der Grundgesamtheit (=

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

Speicher und Adressraum

Speicher und Adressraum Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode

Mehr

3. Erhaltungsgrößen und die Newton schen Axiome

3. Erhaltungsgrößen und die Newton schen Axiome Übungen zur T1: Theoretische Mechanik, SoSe13 Prof. Dr. Dieter Lüst Theresienstr. 37, Zi. 45 Dr. James Gray James.Gray@physik.uni-muenchen.de 3. Erhaltungsgrößen und die Newton schen Axiome Übung 3.1:

Mehr

Grafikkarten-Architektur

Grafikkarten-Architektur > Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Speicher Übersicht Speicherhierarchie Cache Grundlagen Verbessern der Cache Performance Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 2 Speicherhierarchie

Mehr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2013/14. 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr 8. Übung Abgabe bis 20.12.2013, 16:00 Uhr Aufgabe 8.1: Zeigerverdopplung Ermitteln Sie an folgendem Beispiel den Rang für jedes Listenelement sequentiell und mit dem in der Vorlesung vorgestellten parallelen

Mehr

2. Räumliche Bewegung

2. Räumliche Bewegung 2. Räumliche Bewegung Prof. Dr. Wandinger 1. Kinematik des Punktes TM 3 1.2-1 2. Räumliche Bewegung Wenn die Bahn des Punkts nicht bekannt ist, reicht die Angabe einer Koordinate nicht aus, um seinen Ort

Mehr

2. Räumliche Bewegung

2. Räumliche Bewegung 2. Räumliche Bewegung Wenn die Bahn des Massenpunkts nicht bekannt ist, reicht die Angabe einer Koordinate nicht aus, um seinen Ort im Raum zu bestimmen. Es muss ein Ortsvektor angegeben werden. Prof.

Mehr

GPU-BESCHLEUNIGTE PACKUNGSOPTIMIERUNG. André Müller, Johannes J. Schneider, Elmar Schömer

GPU-BESCHLEUNIGTE PACKUNGSOPTIMIERUNG. André Müller, Johannes J. Schneider, Elmar Schömer GPU-BESCHLEUNIGTE PACKUNGSOPTIMIERUNG André Müller, Johannes J. Schneider, Elmar Schömer BETRACHTETES PACKPROBLEM gegeben N = 5, 6,,50 harte Kugeln in Dimension d mit ganzzahligen Radien r i = 1,2,,N gesucht

Mehr

Einführung in LabVIEW

Einführung in LabVIEW Einführung in LabVIEW von Wolfgang Georgi, Ergun Metin 5., überarbeitete und erweiterte Auflage Einführung in LabVIEW Georgi / Metin schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG

Mehr

Kapitel 12: Übersetzung objektorienter Konzepte

Kapitel 12: Übersetzung objektorienter Konzepte Kapitel 12: Übersetzung objektorienter Konzepte Themen Klassendarstellung und Methodenaufruf Typüberprüfung Klassenhierarchieanalyse Escape Analyse 12.1 Klassendarstellung bei Einfachvererbung class Punkt

Mehr

Theoretische Mechanik

Theoretische Mechanik Prof. Dr. R. Ketzmerick/Dr. R. Schumann Technische Universität Dresden Institut für Theoretische Physik Sommersemester 2008 Theoretische Mechanik 9. Übung 9.1 d alembertsches Prinzip: Flaschenzug Wir betrachten

Mehr

Praktikum Ingenieurinformatik. Termin 5. Felder, Kurvendarstellung mit Excel

Praktikum Ingenieurinformatik. Termin 5. Felder, Kurvendarstellung mit Excel Praktikum Ingenieurinformatik Termin 5 Felder, Kurvendarstellung mit Excel 1 Praktikum Ingenieurinformatik Termin 5 1. Felder 2. Kurvendarstellung mit Excel 3. Zusatzaufgaben 2 1.1. Mining-Truck TR 100

Mehr

1. Grundlegende Konzepte in Java (6 Punkte)

1. Grundlegende Konzepte in Java (6 Punkte) 1. Grundlegende Konzepte in Java (6 Punkte) a) Welches der folgenden Literale ist korrekt und wenn ja, von welchem Typ ist es? "true" nicht korrekt X korrekt vom Typ String 'true' X nicht korrekt korrekt

Mehr

Beobachtung 1: Beispiel: Intuitive Programme sind oft ineffizient.

Beobachtung 1: Beispiel: Intuitive Programme sind oft ineffizient. Beobachtung 1: Intuitive Programme sind oft ineffizient. Beispiel: void swap (int i, int j) { int t; if (a[i] > a[j]) { t = a[j]; a[j] = a[i]; a[i] = t; } } 731 Ineffizienzen: Adressen a[i], a[j] werden

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu Bin Hu Algorithmen und Datenstrukturen 2 Arbeitsbereich fr Algorithmen und Datenstrukturen Institut fr Computergraphik und Algorithmen Technische Universität Wien One of the few resources increasing faster

Mehr

Monte Carlo Simulationen

Monte Carlo Simulationen Monte Carlo Simulationen Zahlreiche Vorgänge in der Natur werden durch stochastische Prozesse bestimmt. Beispiele: Diffusion Spin-Spin-Wechselwirkung (Magnetisierung eines Ferromagneten, Ising-Modell)

Mehr

Kontrollstrukturen und Funktionen in C

Kontrollstrukturen und Funktionen in C Kontrollstrukturen und Funktionen in C Lernziele: Vertiefen der Kenntnisse über Operatoren, Kontrollstrukturen und die Verwendung von Funktionen. Aufgabe 1: Quickies: Datentypen in C a) Was sind die elementaren

Mehr