Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom!

Maat: px
Weergave met pagina beginnen:

Download "Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom!"

Transcriptie

1 Concurrency Gerard Tel / Jacco Bikker - november 2015 januari 2016 Welkom!

2 Agenda: Introductie Path Tracing C# en SIMD Vectorizatie Speculative xecution

3 Concurrency college 7 Vectorizatie 3 Introductie Wat vooraf ging: Hardware: Multiple core Vector instructies Caches, cache lines, data locality Patterns Map pattern Patterns en hardware Performance

4 Concurrency college 7 Vectorizatie 4 Introductie Hardware Low Level Parallellisme Instructie-verwerking door de CPU 1. Fetch 2. Decode 3. xecute 4. Writeback t

5 Concurrency college 7 Vectorizatie 5 Introductie Hardware Low Level Parallellisme Pipelining: parallelle executie van de stages. Kloksnelheid wordt bepaald door de meest complexe stage. t

6 Concurrency college 7 Vectorizatie 6 Introductie Hardware Low Level Parallellisme Optimalisatie van pipelining: vereenvoudigen van de stages vergroten van het aantal stages hogere kloksnelheid t

7 Concurrency college 7 Vectorizatie 7 Introductie Hardware Low Level Parallellisme xecution units zijn complex en gespecialiseerd: floating point operaties integer operaties memory operaties

8 Concurrency college 7 Vectorizatie 8 Introductie Hardware Low Level Parallellisme Dit leidt uiteindelijk tot de superscalar pipeline: per klok worden meerdere instructies gefetched, en meerdere instructies uitgevoerd. Superscalar - voorwaarden Instructies gebruiken niet dezelfde execution units Instructies hebben elkaars resultaten niet nodig Flow is voorspelbaar Data is voorhanden t

9 Concurrency college 7 Vectorizatie 9 Introductie Hardware Low Level Parallellisme Feeding the Beast Dependencies, execution units: out of order execution Flow: branch prediction Data: caches, registers Stage cost: VLIW (very large instruction width) t

10 Concurrency college 7 Vectorizatie 10 Introductie Hardware Low Level Parallellisme Reality Check: welke code is sneller? int[] arr = new int[64 * 1024 * 1024]; // 256MB // loop 1 for (int i = 0; i < arr.length; i++) arr[i] *= 3; // loop 2 for (int i = 0; i < arr.length; i += 16) arr[i] *= 3; Loop 2 is ongeveer 2x sneller, en niet 16x! Oorzaak: cachelines; i+=16 zorgt dat elke operatie in een unieke cacheline gebeurd (16x sizeof(int) == 64).

11 Concurrency college 7 Vectorizatie 11 Introductie Hardware Low Level Parallellisme Reality Check: welke code is sneller? int steps = 64 * 1024 * 1024; int[] a = new int[4]; // loop 1 for (int i = 0; i < steps; i++) { a[0]++; a[0]++; a[0]++; a[0]++; } // loop 2 for (int i = 0; i < steps; i++) { a[0]++; a[1]++; a[2]++; a[3]++; } Loop 2 is ongeveer 2x sneller. Oorzaak: instruction dependencies; in loop 1 heeft iedere increment het resultaat van de vorige nodig, waardoor de CPU deze niet tegelijk kan uitvoeren.

12 Concurrency college 7 Vectorizatie 12 Introductie Hardware Low Level Parallellisme Feeding the Beast Dependencies, execution units: out of order execution Flow: branch prediction Data: caches, registers Stage cost: VLIW (very large instruction width) Murphy Under-utilization: bubble Branch misprediction: pipeline clear Cache miss: stall, hyperthread

13 Concurrency college 7 Vectorizatie 13 Introductie Hardware VLIW Vector instructies: Vector4 a = { 1, PI, e, 2 }; Vector4 b = { 2, 2, 4, 4 }; Vector4 c = a * b; SIMD: Single Instruction, Multiple Data A A A A Idee: Functie A4 bestaat uitsluitend uit instructies die 4 items verwerken Het uitvoeren van A4 vereist dan net zo veel instructies als A De throughput van A4 is vier maal hoger. Maar: Dan moeten we wel het map pattern op grote schaal toepassen.

14 Agenda: Introductie Path Tracing C# en SIMD Vectorizatie Speculative xecution

15 Concurrency college 7 Vectorizatie 15 Path Tracing Grote schaal: Path Tracing nergietransport: van lichtbron naar camera, via oppervlakken Lichtbron: sky, arealight Camera: via pixel op virtueel scherm (sensor) Oppervlakken: diffuus, spiegelend, glas, lichtgevend Intuïtief, natuur: Volg een hoeveelheid fotonen Niet intuïtief, wel praktisch: Keer de paden om (camera, door pixel, naar licht)

16 Concurrency college 7 Vectorizatie 16 Path Tracing Grote schaal: Path Tracing Paden: Vertices: punt op camera, punten op geometrie, punt op licht Verbonden door rays Ray: P(t) = O + td

17 Concurrency college 7 Vectorizatie 17 Path Tracing Grote schaal: Path Tracing // feed me with primary ray for a pixel Color Trace( vec3 O, vec3 D ) { // find intersection point, normal, material I, N, mat = Intersect( O, D ); // terminate path if we found a light if (mat.islight()) return mat.emissive; // otherwise, bounce randomly and recurse vec3 R = RandomReflection( N ); return mat.color * dot( N, R ) * Trace( I, R ); }

18 Concurrency college 7 Vectorizatie 18 Path Tracing Grote schaal: Path Tracing

19 Concurrency college 7 Vectorizatie 19 Path Tracing Grote schaal: Path Tracing Optimaliseren van path tracing: Multi-threading: mogelijkheden op grote schaal embarrassingly parallel Beter resultaat met minder paden: variance reduction Instruction level parallelism: concurrency binnen één thread (remind me to turn off F.Lux)

20 Agenda: Introductie Path Tracing C# en SIMD Vectorizatie Speculative xecution

21 Concurrency college 7 Vectorizatie 21 C# en SIMD C++: m128 x4 = _mm_set_ps( 1, 5, 3.14, 0.1 ); m128 y4 = _mm_set_ps( 2, 2, 2, 2 ); m128 result4 = _mm_add_ps( x4, y4 ); // result: 3, 7, 5.14, 2.1 C#:?

22 Concurrency college 7 Vectorizatie 22 C# en SIMD RyuJIT Benodigd voor Windows 7 / VS2013:.NT 4.6 Nuget (mogelijk eerst deïnstalleren) Install-Package System.Numerics.Vectors Pre x64 Let op: veel informatie op internet bespreekt oudere versies van RyuJIT. Je hebt géén environmentvariabelen nodig.

23 Concurrency college 7 Vectorizatie 23 C# en SIMD System.Numerics.Vectors namespace System.Numerics { public struct Vector3 : Iquatable<Vector3>, IFormattable { public float X; public float Y; public float Z; public Vector3(float value); public Vector3(Vector2 value, float z); public Vector3(float x, float y, float z); public static Vector3 operator -(Vector3 value); public static Vector3 operator -(Vector3 left, Vector3 right); public static bool operator!=(vector3 left, Vector3 right); public static Vector3 operator *(float left, Vector3 right); public static Vector3 operator *(Vector3 left, float right); public static Vector3 operator *(Vector3 left, Vector3 right); public static Vector3 operator /(Vector3 value1, float value2); public static Vector3 operator /(Vector3 left, Vector3 right); public static Vector3 operator +(Vector3 left, Vector3 right); public static bool operator ==(Vector3 left, Vector3 right);

24 Concurrency college 7 Vectorizatie 24 C# en SIMD System.Numerics.Vectors Voorbeeld: C# code: Vector3 D = Vector3.Normalize( T - P ); Assembler: vsubps xmm0,xmm1,xmm6 ; subtract vmovaps xmm1,xmm0 vdpps xmm1,xmm1,xmm0,0f1h ; dot vcvtss2sd xmm1,xmm1,xmm1 ; float to double vsqrtsd xmm1,xmm0,xmm1 ; square root vcvtsd2ss xmm1,xmm1,xmm1 ; double to float vmovupd xmmword ptr [rsp+40h],xmm0 vmovss xmm0,dword ptr [7F90A518h] vdivss xmm0,xmm0,xmm1 ; division...

25 Concurrency college 7 Vectorizatie 25 C# en SIMD Klaar? Nee. Vector3 D = Vector3.Normalize( T - P ); Vector3 A = T P // 75% float B = dot( A, A ) // 75% Vector3 C = { B, B, B } // 75% Vector3 D = A / C // 75%

26 Agenda: Introductie Path Tracing C# en SIMD Vectorizatie Speculative xecution

27 Concurrency college 7 Vectorizatie 27 Vectorizatie Scalar Flow Vector3 D = Vector3.Normalize( T - P ); A = T.X P.X B = T.Y P.Y C = T.Z P.Z D = A * A = B * B F = C * C F += F += D G = sqrt( F ) D.X = A / G D.Y = B / G D.Z = C / G A = T.X P.X B = T.Y P.Y C = T.Z P.Z D = A * A = B * B F = C * C F += F += D G = sqrt( F ) D.X = A / G D.Y = B / G D.Z = C / G A = T.X P.X B = T.Y P.Y C = T.Z P.Z D = A * A = B * B F = C * C F += F += D G = sqrt( F ) D.X = A / G D.Y = B / G D.Z = C / G A = T.X P.X B = T.Y P.Y C = T.Z P.Z D = A * A = B * B F = C * C F += F += D G = sqrt( F ) D.X = A / G D.Y = B / G D.Z = C / G

28 Concurrency college 7 Vectorizatie 28 Vectorizatie Scalar Flow Optimaal normaliseren met SIMD: Invoer is 4 vectoren. A A A A

29 Concurrency college 7 Vectorizatie 29 Vectorizatie Scalar Flow A = T.X P.X B = T.Y P.Y C = T.Z P.Z D = A * A = B * B F = C * C F += F += D G = sqrt( F ) D.X = A / G D.Y = B / G D.Z = C / G A4 = TX4 PX4 B4 = TY4 PY4 C4 = TZ4 PZ4 D4 = A4 * A4 4 = B4 * B4 F4 = C4 * C4 F4 += 4 F4 += D4 G4 = sqrt4( F4 ) DX4 = A4 / G4 DY4 = B4 / G4 DZ4 = C4 / G4 A4

30 Concurrency college 7 Vectorizatie 30 Vectorizatie Path Tracing - SIMD class Ray { Vector3 O; Vector3 D; float t, u, v; Vector3 N; int objidx; } Ray ray[4]; class Ray4 { Vector4 OX4, OY4, OZ4; Vector4 DX4, DY4, DZ4; Vector4 t4, u4, v4; Vector4 NX4, NY4, NZ4; Vector4i objidx; } Ray4 ray; OX4 = { ray[0].o.x, ray[1].o.x, ray[2].o.x, ray[3].o.x }; OY4 = { ray[0].o.y, ray[1].o.y, ray[2].o.y, ray[3].o.y }; OZ4 = { ray[0].o.z, ray[1].o.z, ray[2].o.z, ray[3].o.z };

31 Concurrency college 7 Vectorizatie 31 Vectorizatie SIMD Data class Ray { Vector3 O; Vector3 D; float t, u, v; Vector3 N; int objidx; } Ray ray[4]; AoS Array of Structures

32 Concurrency college 7 Vectorizatie 32 Vectorizatie SIMD Data class Ray4 { Vector4 OX4, OY4, OZ4; Vector4 DX4, DY4, DZ4; Vector4 t4, u4, v4; Vector4 NX4, NY4, NZ4; Vector4i objidx; } Ray4 ray; SoA Structure of Arrays

33 Concurrency college 7 Vectorizatie 33 Vectorizatie SIMD Data class Ray4 { Vector<float> OX4, OY4, OZ4; Vector<float> DX4, DY4, DZ4; Vector<float> t4, u4, v4; Vector<float> NX4, NY4, NZ4; Vector<int> objidx; } Ray4 ray; SoA Structure of Arrays

34 Concurrency college 7 Vectorizatie 34 Vectorizatie Vectorization public Ray Generate( Random rng, int x, int y ) { float r0 = (float)rng.nextdouble(); float r1 = (float)rng.nextdouble(); float r2 = (float)rng.nextdouble() - 0.5f; float r3 = (float)rng.nextdouble() - 0.5f; // calculate sub-pixel ray target position on screen plane float u = ((float)x + r0) / (float)screenwidth; float v = ((float)y + r1) / (float)screenheight; Vector3 T = p1 + u * (p2 - p1) + v * (p3 - p1); // calculate position on aperture Vector3 P = pos + lenssize * (r2 * right + r3 * up); // calculate ray direction Vector3 D = Vector3.Normalize( T - P ); // return new primary ray return new Ray( P, D, 1e34f ); }

35 Concurrency college 7 Vectorizatie 35 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... }

36 Concurrency college 7 Vectorizatie 36 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) { // float r0 = (float)rng.nextdouble(); // float r1 = (float)rng.nextdouble(); // float r2 = (float)rng.nextdouble() - 0.5f; // float r3 = (float)rng.nextdouble() - 0.5f;... }

37 Concurrency college 7 Vectorizatie 37 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) { // float r0 = (float)rng.nextdouble(); // float r1 = (float)rng.nextdouble(); // float r2 = (float)rng.nextdouble() - 0.5f; // float r3 = (float)rng.nextdouble() - 0.5f; float [] r0 = { (float)rng.nextdouble(), (float)rng.nextdouble(), (float)rng.nextdouble(), (float)rng.nextdouble() }; Vector<float> r0_4 = new Vector( r0 ); float [] r1 = { (float)rng.nextdouble(), (float)rng.nextdouble(), (float)rng.nextdouble(), (float)rng.nextdouble() }; Vector<float> r0_4 = new Vector( r1 ); float [] r2 = { (float)rng.nextdouble() - 0.5f, (float)rng.nextdouble() 0.5f, (float)rng.nextdouble() - 0.5f, (float)rng.nextdouble() 0.5f }; Vector<float> r0_4 = new Vector( r2 ); float [] r3 = { (float)rng.nextdouble() 0.5f, (float)rng.nextdouble() 0.5f, (float)rng.nextdouble() 0.5f, (float)rng.nextdouble() 0.5f }; Vector<float> r0_4 = new Vector( r3 );... }

38 Concurrency college 7 Vectorizatie 38 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... // calculate sub-pixel ray target position on screen plane // float u = ((float)x + r0) / (float)screenwidth; // float v = ((float)y + r1) / (float)screenheight;... }

39 Concurrency college 7 Vectorizatie 39 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... // calculate sub-pixel ray target position on screen plane // float u = ((float)x + r0) / (float)screenwidth; // float v = ((float)y + r1) / (float)screenheight; float [] values = { x, x + 1, x + 2, x + 3 }; Vector<float> x4 = new Vector<float>( values ); Vector<float> y4 = new Vector<float>( y ); Vector<float> u4 = (x4 + r0_4) / screenwidth4; Vector<float> v4 = (y4 + r1_4) / screenheight4;... }

40 Concurrency college 7 Vectorizatie 40 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... // Vector3 T = p1 + u * (p2 - p1) + v * (p3 - p1);... }

41 Concurrency college 7 Vectorizatie 41 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... // Vector3 T = p1 + u * (p2 - p1) + v * (p3 - p1); Vector<float> Tx4 = p1x4 + u4 * (p2x4 - p1x4) + v4 * (p3x4 - p1x4);... }

42 Concurrency college 7 Vectorizatie 42 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... // Vector3 T = p1 + u * (p2 - p1) + v * (p3 - p1); Vector<float> Tx4 = p1x4 + u4 * (p2x4 - p1x4) + v4 * (p3x4 - p1x4); Vector<float> Ty4 = p1y4 + u4 * (p2y4 - p1y4) + v4 * (p3y4 - p1y4); Vector<float> Tz4 = p1z4 + u4 * (p2z4 - p1z4) + v4 * (p3z4 - p1z4);... }

43 Concurrency college 7 Vectorizatie 43 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... // Vector3 P = pos + lenssize * (r2 * right + r3 * up);... }

44 Concurrency college 7 Vectorizatie 44 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... // Vector3 P = pos + lenssize * (r2 * right + r3 * up); Vector<float> Px4 = posx4 + lenssize4 * (r2_4 * rightx4 + r3_4 * upx4); Vector<float> Py4 = posy4 + lenssize4 * (r2_4 * righty4 + r3_4 * upy4); Vector<float> Pz4 = posz4 + lenssize4 * (r2_4 * rightz4 + r3_4 * upz4);... }

45 Concurrency college 7 Vectorizatie 45 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... Vector3.Normalize( T - P ); Vector<float> x4 = Tx4 - Px4; Vector<float> y4 = Ty4 - Py4; Vector<float> z4 = Tz4 - Pz4; Vector<float> len4 = Vector.SquareRoot<float>( x4 * x4 + y4 * y4 + z4 * z4 ); x4 /= len4; y4 /= len4; z4 /= len4;... }

46 Concurrency college 7 Vectorizatie 46 Vectorizatie Vectorization public Ray4 Generate4( Random rng, int x, int y ) {... Ray4 r4 = new Ray4(); r4.ox4 = Px4; r4.oy4 = Py4; r4.oz4 = Pz4; r4.dx4 = x4; r4.dy4 = y4; r4.dz4 = z4; r4.t4 = new Vector<float>( 1e34f ); return r4; }

47 Concurrency college 7 Vectorizatie 47 Vectorizatie Vectorization Digest: Vectorizatie begint met het identificeren van een scalar flow. Uitgevoerd met vector artithmetic voeren we 4 onafhankelijke, identieke flows in parallel uit. De data moet passend zijn voor de vector flow: waar we eerst pos.x gebruiken, gebruiken we nu pos.x4 (en dus niet pos.xyzw!), waar we eerst de constante PI gebruiken, gebruiken we nu { PI, PI, PI, PI }. We noemen deze data layout structure of arrays. Theoretische speedup is 4x. Maar: r is bijna altijd sprake van enige overhead om data in het juiste formaat te krijgen. De C# JIT compiler is niet optimaal.

48 Agenda: Introductie Path Tracing C# en SIMD Vectorizatie Speculative xecution

49 Concurrency college 7 Vectorizatie 49 Speculative Broken Streams Wat doen we als niet alle streams dezelfde code uitvoeren? void IntersectPlane( int idx, Plane plane, Ray ray ) { float OdotN = Vector3.Dot( ray.o, plane.n ); float DdotN = Vector3.Dot( ray.d, plane.n ); float t = -(OdotN + plane.d) / DdotN; if ((t <= 0) (t > ray.t)) return; ray.n = plane.n; ray.objidx = idx; ray.t = t; }

50 Concurrency college 7 Vectorizatie 50 Speculative Broken Streams Wat doen we als niet alle streams dezelfde code uitvoeren? void IntersectPlane4( int idx, Plane plane, Ray4 rays ) { Vector<float> OdotN = Dot4(... ); Vector<float> DdotN = Dot4(... ); Vector<float> t4 = -(OdotN4 + plane.d4) / DdotN4; if ((t4 <= 0) (t4 > ray.t4)) return; ray.n4 =...; ray.objidx4 = Vector<int>( idx ); ray.t4 = t4; }

51 Concurrency college 7 Vectorizatie 51 Speculative Broken Streams Vector<int> mask = Vector.LessThan( t4, ray.t4 ); r4.t4 = Vector.ConditionalSelect( mask, t4, ray.t4 );

52 Concurrency college 7 Vectorizatie 52 Speculative Broken Streams void IntersectPlane4( int idx, Plane plane, Ray4 rays ) { Vector<float> OdotN = Dot4(... ); Vector<float> DdotN = Dot4(... ); Vector<float> t4 = -(OdotN4 + plane.d4) / DdotN4; // if ((t4 <= 0) (t4 > ray.t4)) return; Vector<int> mask1 = Vector.GreaterThan( t4, Vector<float>.Zero ); Vector<int> mask2 = Vector.LessThan( t4, ray.t4 ); Vector<int> mask = Vector.BitwiseAnd( mask1, mask2 ); rays.nx4 = Vector.ConditionalSelect( mask, rays.nx4, new Vector<float>( plane.n.x ) ); rays.ny4 = Vector.ConditionalSelect( mask, rays.ny4, new Vector<float>( plane.n.y ) ); rays.nz4 = Vector.ConditionalSelect( mask, rays.nz4, new Vector<float>( plane.n.z ) ); rays.t4 = Vector.ConditionalSelect( mask, rays.t4, t4 ); rays.objidx4 = Vector.ConditionalSelect( mask, rays.objidx4, new Vector<int>( idx ) ); }

53 Concurrency college 7 Vectorizatie 53 Speculative Broken Streams Digest: Streams uitschakelen kan niet We kunnen wel zorgen dat acties geen effect meer hebben, middels masking Dit is een voorbeeld van speculative execution. Speculative execution heeft een belangrijk voordeel: r is geen branching code, en dus geen branch misprediction. Hierdoor kan SIMD code in sommige gevallen meer dan 4x sneller zijn: superlinear speedup.

54 Agenda: Introductie Path Tracing C# en SIMD Vectorizatie Speculative xecution

55 Concurrency college 7 Vectorizatie 55 Praktikum xtra opdracht: Niet om in te leveren!

56 Concurrency college 7 Vectorizatie 56 Literatuur Lezen: Boek hoofdstuk 2.3 Deze slides SIMD-nabled Vector Types with C#, Gastón Hillar, DrDobbs, 2014: The JIT finally proposed. JIT and SIMD are getting married, Immo Landweth, Microsoft, 2014:

57 Concurrency Gerard Tel / Jacco Bikker - november 2015 januari 2016 IND van Vectorizatie volgende college: Concurrency in The Last of Us

58 Bonus Slides: Cache & VLIW C# Performance Tests

59 Paste in template: Stopwatch timer = new Stopwatch(); int[] arr = new int[64 * 1024 * 1024]; // 256MB public void Tick() { // clear the screen screen.clear( 0 ); int elapsed1, elapsed2; // cache test // loop 1 timer.reset(); timer.start(); for (int i = 0; i < arr.length; i++) arr[i] *= 3; timer.stop(); elapsed1 = (int)timer.lapsedmilliseconds; // loop 2 timer.reset(); timer.start(); for (int i = 0; i < arr.length; i += 16) arr[i] *= 3; timer.stop(); elapsed2 = (int)timer.lapsedmilliseconds; // show timings string tm = "loop 1: " + elapsed1.tostring(); screen.print( tm, 10, 10, 0xffffff ); tm = "loop 2: " + elapsed2.tostring(); screen.print( tm, 10, 30, 0xffffff ); }

60 Paste in template: Stopwatch timer = new Stopwatch(); int[] arr = new int[4]; public void Tick() { // clear the screen screen.clear( 0 ); int elapsed1, elapsed2; int steps = 64 * 1024 * 1024; // loop 1 timer.reset(); timer.start(); for (int i = 0; i < steps; i++) { arr[0]++; arr[0]++; arr[0]++; arr[0]++; } timer.stop(); elapsed1 = (int)timer.lapsedmilliseconds; // loop 2 timer.reset(); timer.start(); for (int i = 0; i < steps; i++ ) { arr[0]++; arr[1]++; arr[2]++; arr[3]++; } timer.stop(); elapsed2 = (int)timer.lapsedmilliseconds; // show timings string tm = "loop 1: " + elapsed1.tostring(); screen.print( tm, 10, 10, 0xffffff ); tm = "loop 2: " + elapsed2.tostring(); screen.print( tm, 10, 30, 0xffffff ); }

Concurrency. Gerard Tel / Jacco Bikker - november 2017 februari College 8: Patronen. Welkom!

Concurrency. Gerard Tel / Jacco Bikker - november 2017 februari College 8: Patronen. Welkom! Concurrency Gerard Tel / Jacco Bikker - november 2017 februari 2018 College 8: Patronen Welkom! Previously in Concurrency Blur embarrassingly parallel ST prefix-sum loop dependency Blur embarrassingly

Nadere informatie

College 10: OpenCL (1)

College 10: OpenCL (1) Concurrency Gerard Tel / Jacco Bikker - november 2017 februari 2018 College 10: OpenCL (1) Welkom! Previously in Concurrency Concurrency College 8 Patronen 3 SIMD System.Numerics.Vectors namespace System.Numerics

Nadere informatie

College 13: Patterns (2)

College 13: Patterns (2) Concurrency Gerard Tel / Jacco Bikker - november 2016 februari 2017 College 13: Patterns (2) Welkom! genda: Collective Operations Reduce Scan Stencil Recurrence Concurrency college 13 Patterns (2) 3 Collectives

Nadere informatie

Computerarchitectuur. Terugblik / discussie / oefenopgaven

Computerarchitectuur. Terugblik / discussie / oefenopgaven Computerarchitectuur Terugblik / discussie / oefenopgaven Kristian Rietveld http://ca.liacs.nl/ Trends & Performance Voorkennis We bouwden een 4-bit microprocessor bij Digitale Technieken. Bij computerarchitectuur

Nadere informatie

College 4: Mechanismen

College 4: Mechanismen Concurrency Gerard Tel / Jacco Bikker - november 2017 februari 2018 College 4: Mechanismen Welkom! Agenda: Wat vooraf ging Hardware Electronic components are submerged into a bath of dielectric heat transfer

Nadere informatie

Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom!

Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom! Concurrency Gerard Tel / Jacco Bikker - november 2015 januari 2016 Welkom! Agenda: Wat vooraf ging Taken en Data Hardware Performance Theorie Concurrency college 3 Hardware 3 Previously in Concurrency

Nadere informatie

Beter, Sneller, Mooier. Processoren 12 januari 2015

Beter, Sneller, Mooier. Processoren 12 januari 2015 Beter, Sneller, Mooier Processoren 12 januari 2015 Beter! Sneller! Krachtigere CPU: maak instructies die meer doen Snellere CPU: pipeline, out-of-order execution Sneller RAM: cache meer mogelijkheden...

Nadere informatie

Uitwerking oefententamen Computerarchitectuur December 2016

Uitwerking oefententamen Computerarchitectuur December 2016 Uitwerking oefententamen Computerarchitectuur December 2016 I.a. De overall CPI kan worden berekend met de formule n IC i CPI Instruction count CPI i voor de ratio vullen we telkens de geven frequentie

Nadere informatie

College 11: OpenCL (2)

College 11: OpenCL (2) Concurrency Gerard Tel / Jacco Bikker - november 2017 februari 2018 College 11: OpenCL (2) Welkom! Agenda: Recap Bouncers - Intro Bouncers - Voorbereiding Bouncers OpenCL Conclusie Previously in Concurrency

Nadere informatie

Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom!

Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom! Concurrency Gerard Tel / Jacco Bikker - november 2015 januari 2016 Welkom! Agenda: Concepten en patronen Multi-threading in C# Concurrency college 1 3 Alles Parallel Opteron 6300 16 cores i7 4 cores Atom

Nadere informatie

college 2: Introductie

college 2: Introductie Concurrency Gerard Tel / Jacco Bikker - november 2017 februari 2018 college 2: Welkom! Agenda: Concepten en patronen Multi-threading in C# Concurrency college 2 3 Concurrency college 2 4 Jacco Bikker j.bikker@uu.nl

Nadere informatie

College 15: Monte-Carlo

College 15: Monte-Carlo Concurrency Gerard Tel / Jacco Bikker - november 2016 februari 2017 College 15: Monte-Carlo Welkom! Agenda: Monte-Carlo Heterogeneous Computing Brigade Toets 2 Concurrency college 15 Monte-Carlo 3 Monte-Carlo

Nadere informatie

Computerarchitectuur. H&P App. C. Pipelining

Computerarchitectuur. H&P App. C. Pipelining Computerarchitectuur H&P App. C. Pipelining Kristian Rietveld http://ca.liacs.nl/ Motivatie Pipelining is een techniek die tegenwoordig in iedere CPU wordt gebruikt om de performance te verbeteren. Idee:

Nadere informatie

Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom!

Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom! Concurrency Gerard Tel / Jacco Bikker - november 2015 januari 2016 Welkom! Agenda: Context Heterogeneous Rendering Load Balancing Application Conclusion Concurrency college 15 Heterogeen 3 Context Concurrency

Nadere informatie

Tentamen Computersystemen

Tentamen Computersystemen Tentamen Computersystemen baicosy6 2e jaar bachelor AI, 2e semester 21 oktober 213, 9u-11u OMHP D.9 vraag 1 Van een Single Cycle Harvard machine hebben de componenten de volgende propagation delay time:

Nadere informatie

Computerarchitectuur. Hoofdstuk 3: Instruction-Level Parallelism

Computerarchitectuur. Hoofdstuk 3: Instruction-Level Parallelism Computerarchitectuur Hoofdstuk 3: Instruction-Level Parallelism Kristian Rietveld http://ca.liacs.nl/ Instruction-level Parallelism Doel: gebruik maken van potentiële overlap tussen opeenvolgende instructies.

Nadere informatie

Digitale en analoge technieken

Digitale en analoge technieken Digitale en analoge technieken Peter Slaets February 14, 2006 Peter Slaets () Digitale en analoge technieken February 14, 2006 1 / 33 Computerarchitectuur 1 Processors 2 Primair geheugen 3 Secundair geheugen

Nadere informatie

Centrale begrippen hoofdstuk 3. Waarom multiprogramming? Vandaag. processen proces state: running, ready, blocked,... Vragen??

Centrale begrippen hoofdstuk 3. Waarom multiprogramming? Vandaag. processen proces state: running, ready, blocked,... Vragen?? Vragen?? Vandaag Hoofdstuk 4: threads (tentamenstof : 4.1 t/m 4.2) Kleine Opgaven 4.1 (niet alleen ja of nee, ook waarom!) en 4.4 inleveren maandag Centrale begrippen hoofdstuk 3 processen proces state:

Nadere informatie

Beter, Sneller, Mooier. Processoren 27 maart 2012

Beter, Sneller, Mooier. Processoren 27 maart 2012 Beter, Sneller, Mooier Processoren 27 maart 2012 Beter! Sneller! Krach:gere CPU: microcode Snellere CPU: pipeline, out- of- order execu:on Sneller RAM: cache meer mogelijkheden... Welke extra s kan processor-

Nadere informatie

College 17: Monte-Carlo

College 17: Monte-Carlo Concurrency Gerard Tel / Jacco Bikker - november 2017 februari 2018 College 17: Monte-Carlo Welkom! Agenda: Monte-Carlo Heterogeneous Computing Brigade Toets 2 Concurrency college 17 Monte-Carlo 3 Monte-Carlo

Nadere informatie

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

Programmeren in C# Samenvatting van C#

Programmeren in C# Samenvatting van C# Programmeren in C# Samenvatting van C# Proceduraal Programmeren Functies (O: void + return, I: referentie of value) Arrays, Lijsten Lussen (for, while, do while) Condities, if-else, switch Variabelen,

Nadere informatie

Computerarchitectuur 2016 Inleveropdracht 3: Exploiting Memory Hierarchies in Modern Systems

Computerarchitectuur 2016 Inleveropdracht 3: Exploiting Memory Hierarchies in Modern Systems Computerarchitectuur 2016 Inleveropdracht 3: Exploiting Memory Hierarchies in Modern Systems Gesuggereerde Deadline: zondag 27 november 2016 Zoals we in het hoorcollege uitgebreid hebben besproken spelen

Nadere informatie

Inhoudsopgave. Optimalisatie van de mmips. Forwarding optie 1. Design flow. implementation

Inhoudsopgave. Optimalisatie van de mmips. Forwarding optie 1. Design flow. implementation 2 Inhoudsopgave Optimalisatie van de mmips pc Sander Stuijk Veel gestelde vragen Hoe moet ik forwarding implementeren? Hoe moet ik clipping implementeren? Waarom is mijn simulatie zo traag? Hoe kan ik

Nadere informatie

3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken

3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken 18 Februari 2013 Tigran Gasparian 3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken Gydo Nieraeth 4 e jaars student, 3 e jaars GameTech C++ ervaring: Software

Nadere informatie

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax, Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt

Nadere informatie

Toetsbundel Deel 2 Concurrency 8 oktober 2018, Gerard Tel, Niet verspreiden 1!.

Toetsbundel Deel 2 Concurrency 8 oktober 2018, Gerard Tel, Niet verspreiden 1!. Toetsbundel Deel 2 Concurrency 8 oktober 2018, Gerard Tel, Niet verspreiden 1!. Deze bundel bevat een collectie toetsvragen over het tweede deel van Concurrency. Behalve dat goede antwoorden worden gegeven,

Nadere informatie

From High-Level Language to language of the hardware

From High-Level Language to language of the hardware Overzichtscollege 1 Abstractieniveaus Een computersysteem bestaat uit een hiërarchie van lagen Elke laag heeft een goed gedefinieerde interface naar de bovenliggende en onderliggende lagen Essentieel bij

Nadere informatie

Kompas. zijn klasse. protected override void OnDraw(Canvas canv) { base.ondraw(canv);

Kompas. zijn klasse. protected override void OnDraw(Canvas canv) { base.ondraw(canv); Kompas class KompasView : View, ISensorEventListener { Bitmap b; float Schaal; float Hoek; public KompasView(Context belooft c) : methodes base(c) { b = BitmapFactory.DecodeResource(...UU...); SensorManager

Nadere informatie

Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom!

Concurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom! Concurrency Gerard Tel / Jacco Bikker - november 2015 januari 2016 Welkom! Agenda: Introductie OpenCL OpenCL / C# Workgroups Tot Slot Concurrency college 11 OpenCL Primer 3 Introductie Heterogene Systemen

Nadere informatie

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10 CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel

Nadere informatie

Multi-core systemen. door Alexander Melchior

Multi-core systemen. door Alexander Melchior Multi-core systemen Multi-cpu & Multi-core Multi cpu & Multi core door Alexander Melchior Toevoeging aan GDP Overdragen Capita Selecta Waarom? Een stukje geschiedenis 2005: Introductie eerste consumenten

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

Tentamen in2705 Software Engineering

Tentamen in2705 Software Engineering Tentamen in2705 Software Engineering Voorbeeld (bijna tweemaal te groot) U mag meenemen naar dit tentamen: Lethbridge, afdrukken PPT slides, afdrukken handouts. 1. De TU wil een nieuw systeem ontwikkelen

Nadere informatie

Aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 3 januari 2014, uur

Aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 3 januari 2014, uur Aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 3 januari 2014, 8.30-10.30 uur Naam: Studentnummer: Het tentamen bestaat uit 2 opgaven. De eerste opgave levert 15 punten op, de tweede opgave 25 punten.

Nadere informatie

Tweede Toets Concurrency 2 februari 2017, , Educ-β.

Tweede Toets Concurrency 2 februari 2017, , Educ-β. Tweede Toets Concurrency 2 februari 2017, 8.30 10.30, Educ-β. Motiveer je antwoorden kort! Zet je mobiel uit. Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe

Nadere informatie

http://www.liacs.nl/home/kosters/java/

http://www.liacs.nl/home/kosters/java/ sheets Programmeren 1 Java college 2, Walter Kosters De sheets zijn gebaseerd op de hoofdstukken 2 tot en met 6 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

Tentamen Computersystemen

Tentamen Computersystemen Tentamen Computersystemen baicosy06 2e jaar bachelor AI, 2e semester 23 september 2013 13u-15u IWO 4.04A (blauw), Academisch Medisch Centrum, Meidreef 29, Amsterdam ZuidOost Het is niet toegestaan communicatieapparatuur

Nadere informatie

Introductie in C++ Jan van Rijn. September 2013

Introductie in C++ Jan van Rijn. September 2013 Introductie in C++ Jan van Rijn September 2013 Inhoud Classes Overerving Const correctness Standard C++ library Templates Classes Voordelen van classes: Modelleren Modulariteit Informatie afschermen Makkelijk(er)

Nadere informatie

Real-Time Software (RTSOF) EVMINX9 Week 2

Real-Time Software (RTSOF) EVMINX9 Week 2 Real-Time Software (RTSOF) EVMINX9 Week 2 C++ Threads C++ heeft (nog) geen standaard library voor concurrent programmeren. Boost Thread library http://www.boost.org/ Intel Threading Building Blocks (TBB)

Nadere informatie

Aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 4 januari 2013, uur

Aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 4 januari 2013, uur Naam: Aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 4 januari 2013, 11.00-13.00 uur Studentnummer: Het tentamen bestaat uit 2 opgaven. De eerste opgave levert 15 punten op, de tweede opgave 25

Nadere informatie

EECS 452 Lecture 10 Chip Multiprocessors. Instructor: Gokhan Memik EECS Dept., Northwestern University

EECS 452 Lecture 10 Chip Multiprocessors. Instructor: Gokhan Memik EECS Dept., Northwestern University EECS 452 Lecture 10 Chip Multiprocessors Instructor: Gokhan Memik EECS Dept., Northwestern University Chip-Multiprocessors Place multiple, relatively simple cores on a single chip E.g., 32 RISC cores on

Nadere informatie

Syntax van opdracht. opdracht. expressie. variabele. = expressie ; klasse naam. methode naam. property naam += object

Syntax van opdracht. opdracht. expressie. variabele. = expressie ; klasse naam. methode naam. property naam += object Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; object expressie. property naam +=, variabele = expressie ; Static gewone methoden Bewerken een object Aanroep: object. methode ( )

Nadere informatie

Hardware Beginners. Processoren. Door Theo De Paepe

Hardware Beginners. Processoren. Door Theo De Paepe Hardware Beginners Processoren Merken en types Intel AMD * Pentium * Pentium II * Pentium III * Pentium 4 * Celeron * K6 * K7 / Athlon (64 BIT) * Duron * Sempron Opbouw En nog: * FPU * Datalijnen * Adreslijnen

Nadere informatie

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Kleuren met: Prisma & Coverslipper HQ plus. Door: Jorrit van het Bolscher Aplication specialist Sakura

Kleuren met: Prisma & Coverslipper HQ plus. Door: Jorrit van het Bolscher Aplication specialist Sakura Kleuren met: Prisma & Coverslipper HQ plus Door: Jorrit van het Bolscher Aplication specialist Sakura Agenda Update Prisma & Coverslipper HQ plus Kleuringen (H&E) Bij de gebruiker Wat als: De Kleuring

Nadere informatie

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

Programmeren 1 20 januari 2012 Prof. T. Schrijvers Programmeren 1 20 januari 2012 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

NAAM: Programmeren 1 Examen 31/08/2011

NAAM: Programmeren 1 Examen 31/08/2011 Programmeren augustus 0 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je zelf

Nadere informatie

2IV10 Oefentoets 2010

2IV10 Oefentoets 2010 2IV10 Oefentoets 2010 Deze oefentoets bestaat uit drie opgaven. Bij voldoe resultaat wordt een bonuspunt toegek voor het tentamen. In alle gevallen geldt: LICHT UW ANTWOORD TOE. Gebruik waar nodig schetsen

Nadere informatie

Veel succes! 1. Gegeven is de volgende klasse:

Veel succes! 1. Gegeven is de volgende klasse: Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A Eskwadraat. A Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen. Derde deeltentamen

Nadere informatie

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn. Tweede deeltentamen Gameprogrammeren Vrijdag 18 oktober 2013, 11.00-13.00 uur Naam: Studentnummer: Het tentamen bestaat uit 3 opgaven. Opgaven 1 levert 10 punten op, opgave 2 levert 6 punten op, en opgave

Nadere informatie

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden

Nadere informatie

Real-Time Systems (RTSYST)

Real-Time Systems (RTSYST) Real-Time Systems (RTSYST) Week 3 C++ concurrent programmeren C++ heeft sinds C++11 een standaard library voor concurrent programmeren. Alternatieve libraries: Boost Thread library http://www.boost.org/

Nadere informatie

Programmeren in Java les 3

Programmeren in Java les 3 4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een

Nadere informatie

Scripting 2 TUTORIAL EEN APP ONTWIKKELEN VOOR ANDROID MET PROCESSING. ellipse(screenwidth/2, screenheight/2, 140,140); DOOR THIERRY BRANDERHORST

Scripting 2 TUTORIAL EEN APP ONTWIKKELEN VOOR ANDROID MET PROCESSING. ellipse(screenwidth/2, screenheight/2, 140,140); DOOR THIERRY BRANDERHORST Scripting 2 ellipse(screenwidth/2, screenheight/2, 140,140); TUTORIAL EEN APP ONTWIKKELEN VOOR ANDROID MET PROCESSING. DOOR THIERRY BRANDERHORST ANDROID APPLICATIES Tegenwoordig zijn er duizenden applicaties

Nadere informatie

public boolean egualdates() post: returns true i f f there i f the l i s t contains at least two BirthDay objects with the same daynumber

public boolean egualdates() post: returns true i f f there i f the l i s t contains at least two BirthDay objects with the same daynumber Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden

Nadere informatie

wat is er nodig om een ISensorEventListener te zijn?

wat is er nodig om een ISensorEventListener te zijn? Interface In de library interface ISensorEventListener { public void OnSensorChanged(SensorEvent s); public void OnAccuracyChanged(SensorEvent s); In je eigen programma class KompasView : View, ISensorEventListener

Nadere informatie

NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. DOEL: SIMULATOR:

NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. DOEL: SIMULATOR: NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. Door mee te doen aan deze uitdaging kan je Nspyre laten zien wat je kan. Schrijf jij de beste oplossing dan is deze lego mindstorms nxt 2.0 set voor jou.

Nadere informatie

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur Naam: Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, 11.00-13.00 uur Studentnummer: Het tentamen bestaat uit 3 opgaven. Opgaven 1 levert 20 punten op, opgave 2 levert 10 punten op, en opgave

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Tentamen Programmeren in C (EE1400) 5 april 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code

Nadere informatie

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: 5.1-5.2, Appendix A.

Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: 5.1-5.2, Appendix A. Gelijktijdigheid: Wederzijdse Uitsluiting & Synchronisatie Concurrency: Mutual Exclusion & Synchonization (5e ed: 51-52, Appendix A1) Processes zijn meestal niet onafhankelijk Bijvoorbeeld: 2 processen

Nadere informatie

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college EE1400: Programmeren in C BSc. EE, 1e jaar, 2012-201, e college Arjan van Genderen, Computer Engineering 4-12-2012 Delft University of Technology Challenge the future Hoorcollege Arrays, Pointers en Strings

Nadere informatie

Deel 2 S7 Graph Ont4 - GA3

Deel 2 S7 Graph Ont4 - GA3 Deel 2 S7 Graph Ont4 - GA3 Deel 2 : Graph 09/05 1 Wanneer er in een installatie een sequentiële beweging geprogrammeerd moet worden is het interessant om gebruik te maken van S7 Graph. De progammastructuur

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

FAAC DRIVER. Driver install procedure for FAAC boards. Installatieprocedure voor driver voor FAAC-kaarten.

FAAC DRIVER. Driver install procedure for FAAC boards. Installatieprocedure voor driver voor FAAC-kaarten. FAAC DRIVER Driver install procedure for FAAC boards Installatieprocedure voor driver voor FAAC-kaarten www.record-toegangstechniek.nl 1 When a FAAC board (E124 or E145) is connected to the USB port, it

Nadere informatie

Performance Testing van applicaties in de cloud

Performance Testing van applicaties in de cloud Performance testen in de Cloud Zinvol? TestNet Najaarsevenement 2011 Lammert Vinke Johan Vink Agenda 1. Introductie 2. Performance kenmerken 3. Introductie loterij case 4. Aanpak performance test 5. Performance

Nadere informatie

Dynamisch geheugen beheer

Dynamisch geheugen beheer Dynamisch geheugen beheer + Normaal wordt laats in het werkgeheugen gereserveerd tijdens de comilatie aan de hand van de declaraties van de variabelen. + Deze geheugenreservering is statisch: in het bronbestand

Nadere informatie

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek

Nadere informatie

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Programmeren 1 23 januari 2013 Prof. T. Schrijvers Programmeren 1 23 januari 2013 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 8.30-10.30 uur 1. Een Intent-object wordt gebruikt voor communicatie (a) van een Activity naar een bijbehorende View

Nadere informatie

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen. Indexers in C#.Net In deze tutorial ga ik het hebben over indexers. Bij het gebruik van bijvoorbeeld een ArrayList object, kan je de gegevens uit deze collectie opvragen als ware het een array. // ArrayList

Nadere informatie

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn. Eerste deeltentamen Gameprogrammeren Vrijdag 26 september 2014, 8.30-10.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Elke opgave levert 10 punten op. Je cijfer is het totaal aantal punten

Nadere informatie

ALGORITMIEK: answers exercise class 7

ALGORITMIEK: answers exercise class 7 Problem 1. See slides 2 4 of lecture 8. Problem 2. See slides 4 6 of lecture 8. ALGORITMIEK: answers exercise class 7 Problem 5. a. Als we twee negatieve (< 0) getallen bij elkaar optellen is het antwoord

Nadere informatie

WebSite Director Gebruikersgids

WebSite Director Gebruikersgids WebSite Director Gebruikersgids CyberTeams, Inc. 104 South Main Street, Mt. Airy, MD 21771 301-829-6144! www.cyberteams.com CyberTeams and WebSite Director are registered trademarks of CyberTeams, Inc.

Nadere informatie

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het

Nadere informatie

Computerarchitectuur. Ch 4. Data-Level Parallelism

Computerarchitectuur. Ch 4. Data-Level Parallelism Computerarchitectuur Ch 4. Data-Level Parallelism Kristian Rietveld http://ca.liacs.nl/ Data-Level Parallelism Nu we de limieten hebben gezien van parallelisme tussen instructies, kunnen we parallelisme

Nadere informatie

Software Instructions for Real Kids - Felix Plesoianu (2009) en Kris Merckx (2013) - Creative Commons License

Software Instructions for Real Kids - Felix Plesoianu (2009) en Kris Merckx (2013) - Creative Commons License SIRK Software Instructions for Real Kiddies (versie 0.247) De programmeeromgeving, interpreter en compiler kan je online gebruiken op www.ardeco.be/sirk Variabele Functies Functienaam Parameters Voorbeeld

Nadere informatie

Werkcollegebundel Deel 1 Concurrency 8 oktober 2018, Gerard Tel, Niet verspreiden 1!.

Werkcollegebundel Deel 1 Concurrency 8 oktober 2018, Gerard Tel, Niet verspreiden 1!. Werkcollegebundel Deel 1 Concurrency 8 oktober 2018, Gerard Tel, Niet verspreiden 1!. Deze bundel bevat een collectie toetsvragen over het eerste deel van Concurrency. Behalve dat goede antwoorden worden

Nadere informatie

informatica. hardware. overzicht. moederbord CPU RAM GPU architectuur (vwo)

informatica. hardware. overzicht. moederbord CPU RAM GPU architectuur (vwo) informatica hardware overzicht moederbord CPU RAM GPU architectuur (vwo) 1 moederbord basis van de computer componenten & aansluitingen chipset Northbridge (snel) Southbridge ("traag") bussen FSB/HTB moederbord

Nadere informatie

Ingebouwde klassen & methodes

Ingebouwde klassen & methodes Ingebouwde klassen & methodes Statische methodes Methodes die bij een klasse horen ipv. bij een object public class Docent { public static Docent departementshoofd() { return new Docent("Jan Ivens"); private

Nadere informatie

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49 Stacks and queues Introductie 45 Leerkern 45 6.1 Stacks 45 6.2 Queues 47 6.3 Double-ended queues 48 Terugkoppeling 49 Uitwerking van de opgaven 49 Bijlage: Diagrammen belangrijkste interfaces en klassen

Nadere informatie

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces? Hoofdstuk 3: Processen: Beschrijving en Besturing Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces? 1 Wat is een proces? Een proces is een programma in uitvoering

Nadere informatie

Adding value to test tooling

Adding value to test tooling Adding value to tooling performance ing and automation Hoe we performance risico's ook in een CI/CD wereld de baas blijven Wie Ben Ik? >20 jaar ervaring in IT 10 jaar PerformanceArchitecten Software engineer

Nadere informatie

Computerarchitectuur. H&P Appendix A: Instruction Set Principles

Computerarchitectuur. H&P Appendix A: Instruction Set Principles Computerarchitectuur H&P Appendix A: Instruction Set Principles Kristian Rietveld http://ca.liacs.nl/ Instruction Sets Een processor moet precies worden verteld wat deze moet doen. Dit staat opgeschreven

Nadere informatie

Adding value to test tooling

Adding value to test tooling Adding value to test tooling performance testing and test automation Hoe we performance risico's ook in een CI/CD wereld de baas blijven Wie Ben Ik? >20 jaar ervaring in IT 10 jaarperformancearchitecten

Nadere informatie

Computerarchitectuur. H&P Appendix A: Instruction Set Principles

Computerarchitectuur. H&P Appendix A: Instruction Set Principles Computerarchitectuur H&P Appendix A: Instruction Set Principles Kristian Rietveld http://ca.liacs.nl/ Instruction Sets Een processor moet precies worden verteld wat deze moet doen. Dit staat opgeschreven

Nadere informatie

Computerarchitectuur. App. B. Review of Memory Hierarchy

Computerarchitectuur. App. B. Review of Memory Hierarchy Computerarchitectuur App. B. Review of Memory Hierarchy Kristian Rietveld http://ca.liacs.nl/ Caching De memory wall is een zeer groot probleem dat vraagt om oplossingen. De gebruikelijke oplossing is

Nadere informatie

Voortgezet Prog. voor KI

Voortgezet Prog. voor KI Voortgezet Prog. voor KI Docent: Michael Wilkinson IWI 142 tel. 050-3638140 (secr. 3633939) Frank Brokken RC 352 tel. 050-3633688 Voorkennis: Inleiding Programmeren voor KI (nieuwe stijl) Stof: Practicum

Nadere informatie

Today s class. Digital Logic. Informationsteknologi. Friday, October 19, 2007 Computer Architecture I - Class 8 1

Today s class. Digital Logic. Informationsteknologi. Friday, October 19, 2007 Computer Architecture I - Class 8 1 Today s class Digital Logic Friday, October 19, 2007 Computer Architecture I - Class 8 1 Digital circuits Two logical values Binary 0 (signal between 0 and 1 volt) Binary 1 (signal between 2 and 5 volts)

Nadere informatie

Activant Prophet 21. Prophet 21 Version 12.0 Upgrade Information

Activant Prophet 21. Prophet 21 Version 12.0 Upgrade Information Activant Prophet 21 Prophet 21 Version 12.0 Upgrade Information This class is designed for Customers interested in upgrading to version 12.0 IT staff responsible for the managing of the Prophet 21 system

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 18 december 2015 Overerving (inheritance) Constructors Overriding Inheritance demo Exceptions Zelf exceptions veroorzaken Overerving (inheritance) 2-dimensionaal

Nadere informatie

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A Eskwadraat. A Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen. Aanvullende

Nadere informatie

Voorbeeld: Simulatie van bewegende deeltjes

Voorbeeld: Simulatie van bewegende deeltjes Voorbeeld: Simulatie van bewegende deeltjes Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten Simulatie Samenhang van objecten sim geërfd van Form stap zelf gedeclareerd auto r1

Nadere informatie

Computerarchitectuur. Ch 4. Data-Level Parallelism

Computerarchitectuur. Ch 4. Data-Level Parallelism Computerarchitectuur Ch 4. Data-Level Parallelism Kristian Rietveld http://ca.liacs.nl/ Data-Level Parallelism Nu we de limieten hebben gezien van parallelisme tussen instructies, kunnen we parallelisme

Nadere informatie

Het handboek van KDE Screen Ruler. Lauri Watts Vertaling van het handboek: Niels Reedijk Vertaler/Nalezer: Alexander S. Koning

Het handboek van KDE Screen Ruler. Lauri Watts Vertaling van het handboek: Niels Reedijk Vertaler/Nalezer: Alexander S. Koning Lauri Watts Vertaling van het handboek: Niels Reedijk Vertaler/Nalezer: Alexander S. Koning 2 Inhoudsopgave 1 Inleiding 5 2 Menubeschrijvingen 6 3 Dankbetuigingen en licentie 8 Samenvatting KDE Screen

Nadere informatie

RAAK ViaVote Symposium

RAAK ViaVote Symposium RAAK ViaVote Symposium Computer Vision: Trends en ontwikkelingen 22 januari 2015 Jaap van de Loosdrecht Lector Computer Vision NHL Kenniscentrum Computer Vision Overzicht Wat is Computer Vision? NHL Kenniscentrum

Nadere informatie

Computerarchitectuur. Hoofdstuk 1: Introductie

Computerarchitectuur. Hoofdstuk 1: Introductie Computerarchitectuur Hoofdstuk 1: Introductie Kristian Rietveld http://ca.liacs.nl/ Inhoud Bestuderen van de opbouw van moderne computerarchitecturen. Wat gebeurt er allemaal binnen een Central Processing

Nadere informatie

Instructies en blokken

Instructies en blokken Herhaling 1 Instructies en blokken Naar elke instructie staat een ; puntkomma Verschillende instructies worden door de accolades in een block samengevat. Een blok is het zelfde als een enkele instructie.

Nadere informatie