College 10: OpenCL (1)
|
|
- Bertha van der Woude
- 5 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Concurrency Gerard Tel / Jacco Bikker - november 2017 februari 2018 College 10: OpenCL (1) Welkom!
2 Previously in Concurrency
3 Concurrency College 8 Patronen 3 SIMD System.Numerics.Vectors namespace System.Numerics { public struct Vector3 : IEquatable<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);
4 Concurrency College 8 Patronen 4 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 [7FE90EEA518h] vdivss xmm0,xmm0,xmm1 ; division...
5 Concurrency College 8 Patronen 5 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%
6 Concurrency College 8 Patronen 6 SIMD Scalar Flow Vector3 D = Vector3.Normalize( T - P ); Wat gebeurt hier nu eigenlijk echt? Vector3 d = T P; float dot = d.x * d.x + d.y * d.y + d.z * d.z; float length = sqrt( dot ); d /= length; D = D;
7 Concurrency College 8 Patronen 7 SIMD Scalar Flow Vector3 D = Vector3.Normalize( T - P ); Wat gebeurt hier nu eigenlijk echt? float dx = T.x P.x; float dy = T.y P.y; float dz = T.z P.z; float dot = d.x * d.x; float v1 = d.y * d.y; float v2 = d.z * d.z; dot += v1; dot += v2; float length = sqrt( dot ); D.x = dx / length; D.y = dy / length; D.z = dz / length; Scalar flow: Het programma, teruggebracht tot de kleinste elementen, waarbij elke berekening een of twee operanden transformeert in een resultaat.
8 Concurrency College 8 Patronen 8 SIMD Scalar Flow Vector3 D = Vector3.Normalize( T - P ); Vectorizatie: Optimaal normaliseren met SIMD: input is 4x T, 4x P opgedeeld in componenten: Tx4, Ty4, Tz4 en Px4, Py4, Pz4 output is 4x D: Dx4, Dy4, Dz4 float dx = T.x P.x; float dy = T.y P.y; float dz = T.z P.z; float dot = d.x * d.x; float v1 = d.y * d.y; float v2 = d.z * d.z; dot += v1; dot += v2; float length = sqrt( dot ); D.x = dx / length; D.y = dy / length; D.z = dz / length; float4 dx4 = sub4( Tx4, Px4 ); float4 dy4 = sub4( Ty4, Py4 ); float4 dz4 = sub4( Tz4, Pz4 ); float4 dot4 = mul4( dx4, dx4 ); float4 v1 = mul4( dy4, dy4 ); float4 v2 = mul4( dz4, dz4 ); dot4 = add4( dot4, v1 ); dot4 = add4( dot4, v2 ); float4 length4 = sqrt4( dot4 ); Dx4 = div4( dx4 / length4 ); Dy4 = div4( dy4 / length4 ); Dz4 = div4( dz4 / length4 );
9 Concurrency College 8 Patronen 9 SIMD SIMD Data class Particle { Vector3 position; Vector3 velocity; float mass; } Particle p[1024]; Optimaal normaliseren met SIMD: input is 4x T, 4x P opgedeeld in componenten: Tx4, Ty4, Tz4 en Px4, Py4, Pz4 output is 4x D: Dx4, Dy4, Dz4 = AoS Array of Structures Structure of Arrays SoA float px[1024]; float py[1024]; float pz[1024]; float vx[1024]; float vy[1024]; float vz[1024]; float mass[1024]; Vector4 px4[256]; Vector4 py4[256]; Vector4 pz4[256]; Vector4 vx4[256]; Vector4 vy4[256]; Vector4 vz4[256]; Vector4 mass4[256];
10 Concurrency College 8 Patronen 10 SIMD 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 struct of arrays. Theoretische winst is 4x. Maar: Er is bijna altijd sprake van enige overhead om data in het juiste formaat te krijgen. De C# JIT compiler is niet optimaal.
11 Concurrency College 8 Patronen 11 SIMD SIMD en Control Flow Wat doen we wanneer niet alle lanes hetzelfde willen?? A B
12 Concurrency College 8 Patronen 12 SIMD
13 Agenda: Introductie OpenCL OpenCL / C# Workgroups Tot Slot
14 Concurrency College 10 OpenCL (1) 14 Introductie Heterogene Systemen Een modern system heeft naast 1 (of 2) CPUs een grafische co-processor: de GPU.
15 Concurrency College 10 OpenCL (1) 15 Introductie AMD: RX Vega NVidia: GTX1080Ti 709 Intel: i9-7980xe 1899 Xeon Phi 7120P GB/s 13.7 TFLOPS 320 GB/s 11.3 TFLOPS 50 GB/s 1.1 TFLOPS 352 GB/s ~6 TFLOPS
16 Concurrency College 10 OpenCL (1) 16 Introductie Heterogene Systemen Een modern system heeft naast 1 (of 2) CPUs een grafische co-processor: de GPU. GPU: veel rekenkracht: >10 Tflops (i9: ~1 Tflops) veel bandbreedte: 512GB/s (i9: 50GB/s)
17 Concurrency College 10 OpenCL (1) 17 Introductie GPU Performance Rekenkracht: Beperkt executiemodel 32-wide SIMT Bandbreedte: Streaming executiemodel Expliciete geheugenarchitectuur
18 Concurrency College 10 OpenCL (1) 18 Introductie Beperkt Executiemodel Geen branch prediction Een taak tegelijk Geen context switching Beperkte super-scalar pipeline Geen out-of-order execution En: Lage kloksnelheid (~1Ghz)
19 Concurrency College 10 OpenCL (1) 19 Introductie GPU: Massively Parallel Een GPU bestaat uit: * 24 Shading Multiprocessors Per SM: 128 CUDA cores (4 groepen van 32) Totaal: 3072 CUDA cores. Eén SM kan maximaal 2048 threads uitvoeren: 16 per CUDA core. Het mechanisme wat hier voor gebruikt wordt lijkt op hyperthreading. Het maximale aantal threads is dus * Titan X / Maxwell architectuur
20 Concurrency College 10 OpenCL (1) 20 Introductie Beperkt Executiemodel Een GPU groepeert de threads in warps van 32 threads, en voert deze uit met SIMT: Single Instruction, Multiple Thread Een GPU is dus eigenlijk een 32-wide vector machine.
21 Concurrency College 10 OpenCL (1) 21 Introductie GPGPU Samenvatting: Tienduizenden threads In groepen van 32 Een GPU is ongeschikt voor taak-parallellisme. Een GPU is zeer geschikt voor data parallellisme, maar: alleen wanneer de parallelle taken een identieke flow hebben.
22 Concurrency College 10 OpenCL (1) 22 Introductie GPGPU CPU GPU
23 Concurrency College 10 OpenCL (1) 23 If you were plowing a field, which would you rather use? Two strong oxen, or 1024 chickens? - Seymour Cray
24 Concurrency College 10 OpenCL (1) 24 Introductie Heterogene Systemen In een heterogeen systeem kan een applicatie zowel de CPU als de GPU benutten. Doel: data-parallelle taken uitvoeren op de GPU; taak-parallel werk en serieel werk op de CPU. De GPU is dus géén vervanging voor de CPU.
25 Agenda: Introductie OpenCL OpenCL / C# Workgroups Tot Slot
26 Concurrency College 10 OpenCL (1) 26 OpenCL OpenCL Standaard Framework voor het ontwikkelen van software die uitgevoerd kan worden op heterogene platformen, bestaande uit CPUs, GPUs, DSPs, FPGAs en andere processoren. Computing System Compute Devices Compute Units Processing Elements OpenCL Memory Hierarchy: Global memory Read-only memory Local memory Per-element private memory CPU Cores SIMD Lanes GPU SMs CUDA cores
27 Concurrency College 10 OpenCL (1) 27 OpenCL OpenCL Standaard Het OpenCL executiemodel is fundamenteel parallel, en gaat uit van regular parallelism: meerdere processing elements voeren dezelfde code uit: een kernel.
28 Concurrency College 10 OpenCL (1) 28 OpenCL Kernel #define C(p) min(1.,sqrt(10.*abs(length(p-.5)-.4))) #define D(p,o) ((d=length(p-o)*5.)<=.6? d:1.) void mainimage( out vec4 O, in vec2 pos ) { vec2 res = iresolution.xy; vec2 C = vec2( 0.5, 0.5 ); vec2 d = pos / res - C; if (length( d ) <.2) O.xyz = vec3( 1, 0, 0 ); else O.xyz = vec3( 0, 0, 0 ); }
29 Concurrency College 10 OpenCL (1) 29 OpenCL Kernel bool test( out vec3 N, in vec3 D, in vec3 s, in float r ) { float A = dot( D, D ), B = dot( D, s )*(-2.0); float C = dot( s, s ) - r*r, det = B*B - 4.0*A*C; if (det < 0.0 ) return false; float t = (-B+sqrt(det)) / (2.0*A); N = normalize( D*t - s ); return true; } void mainimage( out vec4 color, in vec2 pos ) { float Y = pos.y / iresolution.y; vec3 N, Sky = vec3( 0.45, 0.75, 1.0 )*Y*0.4; vec3 V = normalize( vec3( (pos.xy - iresolution.xy*0.5) / iresolution.xx, 1.0 )); color = vec4(sky,1.0); if (!test( N, V, vec4(0,0,5), 1.0 )) return; vec3 H = normalize( V - reflect(v,n)), L = normalize( vec3(1.0,1.0,1.0)); float dotnl = max(dot(n,l),0.), dothl = max(dot(h,l),0.), spec = pow(dothl,32.); color = vec4(vec3(1,0.5,0.5)*dotnl*0.9 + vec3(1,1,1)*spec*0.9 + Sky,1.); }
30 Concurrency College 10 OpenCL (1) 30 OpenCL Kernel Shaders op Shadertoy: korte programma s die uitgevoerd worden voor elke pixel van een bitmap. Regular parallelism / Map Geen synchronisatie tussen threads. Uitvoer is 1 pixel, op een vaste locatie. pos pos pos pos pos pos pos pos K K K K K K K K Executie op GPU hardware: Elke pixel van de bitmap is een thread. Groepering van threads in warps en de verdeling over SMs wordt overgelaten aan WebGL / de driver. Eventuele input data voor een kernel wordt aangeboden in de vorm van textures. color color color color color color color color
31 Concurrency College 10 OpenCL (1) 31 OpenCL Kernel Kernels in OpenCL: korte programma s die uitgevoerd worden voor elke taak in een lijst. Regular parallelism / Map Synchronisatie tussen threads is mogelijk. In- en uitvoer kan complex zijn. in in in in in in in in K K K K K K K K Executie op GPU hardware: Elke taak in de lijst is een thread. Groepering van threads in warps en de verdeling over SMs kan expliciet gespecificeerd worden. Input- en output data in de vorm van textures en/of generieke buffers. Expliciete controle over de memory hierarchy. out out out out out out out out
32 Concurrency College 10 OpenCL (1) 32 OpenCL OpenCL Specificatie Gebaseerd op C99 Extensies: address space qualifiers work-items workgroups vector types synchronizatie Ingebouwde functies: image manipulation work item manipulation math functies Beperkingen: geen functiepointers geen recursie kernel void SAXPY( global float* x, global float* y, float a, write_only image2d_t image ) { int i = get_global_id( 0 ); y[i] += a * cos( x[i] ); y[i] += a * native_cos( x[i] ); float3 tmp = (float3)(a, a, a ); int2 pos = (int2)(i,0); write_imagef( image, pos, tmp ); tmp = native_cos( tmp ); y[i] += tmp.x; y[i] += tmp.y; y[i] += tmp.z; }
33 Agenda: Introductie OpenCL OpenCL / C# Workgroups Tot Slot
34 Concurrency College 10 OpenCL (1) 34 OpenCL / C# OpenTK / Cloo OpenCL kan in C# gebruikt worden via de Cloo library: using Cloo; Om een OpenCL kernel te kunnen gebruiken hebben we nodig: een compute platform een OpenCL context een OpenCL command queue een OpenCL program de kernel
35 Concurrency College 10 OpenCL (1) 35 OpenCL / C# Devices & Vendors: Compute Platform Het Compute Platform is de interface naar de vendor-specific implementatie van OpenCL. In een systeem met een NVidia GPU zijn in principe twee OpenCL platforms aanwezig: 1. De NVidia OpenCL implementatie; 2. De Intel OpenCL implementatie (voor de CPU). Platform ComputePlatform platform = ComputePlatform.Platforms[0]; Console.Write( platform.name ); // NVIDIA CUDA Console.Write( platform.profile ); // FULL PROFILE
36 Concurrency College 10 OpenCL (1) 36 OpenCL / C# OpenCL Context In de context wordt de state van de OpenCL API bijgehouden. ComputeContext context = new ComputeContext( ComputeDeviceTypes.Gpu, new ComputeContextPropertyList( platform ), null, IntPtr.Zero ); Platform Context
37 Concurrency College 10 OpenCL (1) 37 OpenCL / C# Program Een OpenCL program is een collectie kernels. Ook wanneer we maar één kernel hebben wordt deze ondergebracht in een program. var streamreader = new StreamReader( "../../program.cl" ); string clsource = streamreader.readtoend(); streamreader.close(); // create program with opencl source ComputeProgram program = new ComputeProgram( context, clsource ); Compileren van OpenCL code: program.build( null, null, null, IntPtr.Zero ); Platform Context Program
38 Concurrency College 10 OpenCL (1) 38 OpenCL / C# Kernel We kunnen nu de kernel opvragen: ComputeKernel kernel = program.createkernel( "device_function" ); Platform Context Program Kernel
39 Concurrency College 10 OpenCL (1) 39 OpenCL / C# Kernel Arguments Stel dat we de volgende kernel willen uitvoeren: kernel void device_function( global float* x, float a ) { int i = get_global_id( 0 ); x[i] *= a; } Deze kernel heeft twee arguments. We geven de data door vanuit C# met: kernel.setmemoryargument( 0, buffer ); kernel.setvalueargument( 1, f ); Platform Context Program Kernel Arguments
40 Concurrency College 10 OpenCL (1) 40 OpenCL / C# Buffers In het voorbeeld is een van de argumenten een array van floats. kernel void device_function( global float* x, float a ) { int i = get_global_id( 0 ); x[i] *= a; } Platform Context Program Kernel Arguments Buffers In C#: float [] data = new float[65536]; We maken hier een buffer van waarmee OpenCL kan werken: var flags = ComputeMemoryFlags.ReadWrite ComputeMemoryFlags.UseHostPointer; buffer = new ComputeBuffer<float>( context, flags, data );
41 Concurrency College 10 OpenCL (1) 41 OpenCL / C# Queue Alles staat nu klaar om uitgevoerd te worden. Kernel execution gaat via een job queue: ComputeCommandQueue queue = new ComputeCommandQueue( context, context.devices[0], 0 ); queue.execute( kernel, null, new long [] { 512 * 512 }, null, null ); queue.finish(); Als laatste stap lezen we de GPU buffer terug naar de C# array. queue.readfrombuffer( buffer, ref data, true, null ); Platform Context Program Kernel Arguments Buffers Queue
42 Concurrency College 10 OpenCL (1) 42 OpenCL / C# Recap Voor het uitvoeren van een kernel hebben we nodig: een OpenCL platform: platform = ComputePlatform.Platforms[0]; een OpenCL context: context = new ComputeContext( ); een program: program = new ComputeProgram( context, clsource ); de kernel: kernel = program.createkernel( "device_function" ); een job queue: queue = new ComputeCommandQueue( ); We zetten (eenmalig / voor updates) de arguments van de kernel met: SetMemoryArgument / SetValueArgument De kernel wordt uitgevoerd door een job aan de queue toe te voegen: queue.execute( kernel, null, new long [] { N }, null, null ); Platform Context Program Kernel Arguments Buffers Queue
43 Concurrency College 10 OpenCL (1) 43 OpenCL / C# Voorbeeld Het berekenen van de Mandelbrot set: M = cεc lim n Z n, Z 0 = c, Z n+1 = Z n 2 + c De verzameling M van alle complexe getallen waarvoor geldt dat de recursieve functie Z n voor c niet naar oneindig gaat. In pseudocode: Z re = c real, Z imaginary = c imaginary isinside = true for( n = 0; n < iterations; n++ ) { if (Z 2 real + Z 2 imaginary > 4) { isinside = false; break; } } Z imaginary = 2 Z real Z imaginary + c imaginary Z real = Z 2 real Z 2 imaginary + c real
44 Concurrency College 10 OpenCL (1) 44 OpenCL / C# Mandelbrot kernel void device_function( global int* a, float t ) { // adapted from inigo quilez - iq/2013 int id = get_global_id( 0 ); if (id >= (512 * 512)) return; float2 fragcoord = (float2)( (id & 511), (float)(id >> 9) ), resolution = (float2)( 512, 512 ); float3 col = (float3)( 0.f, 0.f, 0.f ); for( int m = 0; m < 2; m++ ) for( int n = 0; n < 2; n++ ) { float2 p = -resolution + 2.f * (fragcoord + (float2)(.5f * (float)m,.5f * (float)n )); float w = (float)( 2 * m + n ), l = 0.0f; float time = t +.5f * (1.f / 24.f) * w / 4.f; float zoo =.32f +.2f * cos(.07f * time ); float coa = cos(.15f * (1.f - zoo) * time ); float sia = sin(.15f * (1.f - zoo) * time ); zoo = pow( zoo, 8.f ); float2 xy = (float2)( p.x * coa - p.y * sia, p.x * sia + p.y * coa ); float2 c = (float2)( -.745f,.186f ) + xy * zoo, z = (float2)( 0.f, 0.f ); for( int i = 0; i < 256; i++ ) { z = (float2)( z.x * z.x - z.y * z.y, 2.f * z.x * z.y ) + c; if (dot( z, z ) > f) break; else l += 1.f; } float sl = l - log2( log2( dot( z, z ) ) ) + 4.f; float al = smoothstep( -.1f, 0.f, 1.f ); l = mix( l, sl, al ); col +=.5f +.5f * cos( 3.f + l * 0.15f + (float3)(.0f,.6f, 1.f ) ); } int r = (int)min( 255.0f, 64.0f * col.x ); int g = (int)min( 255.0f, 64.0f * col.y ); int b = (int)min( 255.0f, 64.0f * col.z ); a[id] = (r << 16) + (g << 8) + b; }
45 Concurrency College 10 OpenCL (1) 45 OpenCL / C#
46 Concurrency College 10 OpenCL (1) 46 OpenCL / C#
47 Agenda: Introductie OpenCL OpenCL / C# Workgroups Tot Slot
48 Concurrency College 10 OpenCL (1) 48 Workgroups Verdeling van Threads over de SMs In de Mandelbrot renderer hebben we: 512 * 512 = threads. De Titan X kan maximaal threads tegelijk uitvoeren. De output wordt dus door minstens 5 batches van pixels en 1 batch van pixels verwerkt. Bij deze batch-grootte zijn er per SM /24 = 2048 threads actief, in 64 warps. Workgroup.
49 Concurrency College 10 OpenCL (1) 49 Workgroups Verdeling van Threads over de SMs per SM zijn 2048 threads actief, in 64 warps. In het Mandelbrot voorbeeld: 2048 threads voor 2048 pixels, bij een resolutie van 512x512: de pixels van de eerste 4 regels. for( int i = 0; i < 256; i++ ) { z = (float2)(z.x*z.x-z.y*z.y, 2.f*z.x*z.y) + c; if (dot( z, z ) > f) break; else l += 1.f; } Wat gebeurd er als 1 thread een break doet, en de andere threads door willen gaan?
50 Concurrency College 10 OpenCL (1) 50 Workgroups Occupancy z=5; if (cond1) 1111 Wat gebeurd er als 1 thread een break doet, en de andere threads door willen gaan? De threads in een warp worden in lockstep uitgevoerd: iedere thread voert dezelfde instructie uit. Masking wordt gebruikt om streams tijdelijk uit te schakelen. Een break in sommige threads in een warp betekent dat sommige threads inactief worden. Occupancy: aantal actieve threads per SM maximaal aantal threads per SM x = y + z; if (cond2) w = t + u; else w = t u; p = q + r; else x = y z; x++;
51 Concurrency College 10 OpenCL (1) 51 Workgroups Occupancy Wanneer we de totale taak als een 2D probleem beschouwen verbeterd de occupancy: Tiles hebben een betere program flow coherence dan regels.
52 Concurrency College 10 OpenCL (1) 53 Workgroups Experiment queue.execute( kernel, null, new long [] { 512 * 512 }, null, null ); wordt: int [] worksize = { 512, 512 }; queue.execute( kernel, null, worksize, null, null ); Voor t = 21.5: fps = 30.0 int [] worksize = { 512, 512 }; int [] localsize = { 32,... }; // 2, 4, 8, 16 queue.execute( kernel, null, worksize, localsize, null ); fps = 60.0
53 Concurrency College 10 OpenCL (1) 54 Workgroups Workgroup Size Waarom is de workgroup size van belang? Een SM heeft een beperkt aantal registers: 64K voor Kepler en Maxwell threads = bitregisters per thread. Wanneer de compiler onvoldoende registers beschikbaar heeft wordt local memory gebruikt.
54 Concurrency College 10 OpenCL (1) 55 Workgroups Workgroup Size Waarom is de workgroup size van belang? Een SM heeft snel local memory dat toegankelijk is voor alle threads op de SM.
55 Concurrency College 10 OpenCL (1) 56 Workgroups Workgroup Size Waarom is de workgroup size van belang? De threads in een workgroup kunnen barriers gebruiken voor synchronisatie.
56 Agenda: Introductie OpenCL OpenCL / C# Workgroups Tot Slot
57 Concurrency College 10 OpenCL (1) 58 Tot Slot GL Interop Data flow in Mandelbrot: screen (template) texture Buffer (host) t ReadFromBuffer Buffer (device, write-only) host Execute device
58 Concurrency College 10 OpenCL (1) 59 Tot Slot GL Interop OpenCL kan een OpenGL texture gebruiken als input / output. Voordeel: de data is al op de GPU, geen verkeer. Voorwaarden: OpenGL context moet gekoppeld worden aan OpenCL context OpenGL texture moet gelocked worden voor OpenCL
59 Concurrency College 10 OpenCL (1) 60 Tot Slot GL Interop OpenCL / OpenGL koppelen: [System.Runtime.InteropServices.DllImport("opengl32", SetLastError = true)] static extern IntPtr wglgetcurrentdc(); IntPtr glhandle = (GraphicsContext.CurrentContext as IGraphicsContextInternal).Context.Handle; IntPtr wglhandle = wglgetcurrentdc(); var p1 = new ComputeContextProperty(ComputeContextPropertyName.Platform, platform.handle.value); var p2 = new ComputeContextProperty(ComputeContextPropertyName.CL_GL_CONTEXT_KHR, glhandle); var p3 = new ComputeContextProperty(ComputeContextPropertyName.CL_WGL_HDC_KHR, wglhandle); var cpl = new ComputeContextPropertyList(new ComputeContextProperty[] { p1, p2, p3 }); context = new ComputeContext( ComputeDeviceTypes.Gpu, cpl, null, IntPtr.Zero );
60 Concurrency College 10 OpenCL (1) 61 Tot Slot GL Interop OpenGL texture voor interop aanmaken: float [] texdata = new float[512 * 512 * 4]; ComputeImage2D texbuffer; int texid = GL.GenTexture(); GL.BindTexture( TextureTarget.Texture2D, texid ); GL.TexParameter( TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)textureminfilter.nearest ); GL.TexParameter( TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)texturemagfilter.nearest ); GL.TexImage2D( TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba32f, 512, 512, 0, OpenTK.Graphics.OpenGL.PixelFormat.Rgb, PixelType.Float, texdata ); flags = ComputeMemoryFlags.WriteOnly; texbuffer = ComputeImage2D.CreateFromGLTexture2D( context, flags, (int)texturetarget.texture2d, 0, texid );
61 Concurrency College 10 OpenCL (1) 62 Tot Slot GL Interop OpenGL texture locken / unlocken: List<ComputeMemory> c = new List<ComputeMemory>() { texbuffer }; queue.acquireglobjects( c, null ); queue.execute( kernel, null, worksize, localsize, null ); queue.finish(); queue.releaseglobjects( c, null );
62 Concurrency College 10 OpenCL (1) 63 Tot Slot GL Interop Render-to-texture is de meest gebruikte toepassing voor GL interop. Andere toepassingen: Mesh simplification Procedural landscapes / meshes Particle systems
63 Agenda: Introductie OpenCL OpenCL / C# Workgroups Tot Slot
64 Concurrency College 10 OpenCL (1) 65 Tot Slot Literatuur NVIDIA s Fermi: The First Complete GPU Computing Architecture p.glaskowsky_nvidia's_fermi-the_first_complete_gpu_architecture.pdf Boek: 2.4.3, 2.4.4
65 Concurrency Gerard Tel / Jacco Bikker - november 2017 februari 2018 EINDE van OpenCL (1) volgende college: OpenCL (2)
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 informatieConcurrency. 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 informatieCollege 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 informatieConcurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom!
Concurrency Gerard Tel / Jacco Bikker - november 2015 januari 2016 Welkom! Agenda: Introductie Path Tracing C# en SIMD Vectorizatie Speculative xecution Concurrency college 7 Vectorizatie 3 Introductie
Nadere informatieCollege 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 informatiecollege 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 informatieConcurrency. 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 informatieConcurrency. 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 informatieCollege 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 informatieCollege 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 informatieConcurrency. 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 informatieConcurrency. Gerard Tel / Jacco Bikker - november 2015 januari Welkom!
Concurrency Gerard Tel / Jacco Bikker - november 2015 januari 2016 Welkom! genda: Introductie Seriële Compositie & Flow le Compositie & Flow Concurrency college 5 Patronen (1) 3 Introductie Patronen zijn
Nadere informatieCentrale 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 informatieComputerarchitectuur. 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 informatieComputerarchitectuur. 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 informatieComputerarchitectuur. 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 informatieTentamen 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 informatieUniversiteit 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 informatieHOGESCHOOL 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 informatieCollege 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 informatieKompas. 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 informatieUitwerking 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 informatieVakgroep CW KAHO Sint-Lieven
Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be
Nadere informatieTentamen 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 informatieHigh Performance Computing
High Performance Computing Kristian Rietveld (krietvel@liacs.nl, kamer 138) Groep Computer Systems - Embedded systems - Specifieke software mappen op specfieke hardware. - Hardware synthesis. - Real-time
Nadere informatiePyCuda. oftewel massief parallel rekenen. Jasper Spaans, Fox-IT PUN meeting
PyCuda oftewel massief parallel rekenen Jasper Spaans, Fox-IT PUN meeting 2009-09-24 Cuda Techniek om berekingen op je GPU te kunnen uitvoeren ( GPGPU ) Cuda Techniek om berekingen op je
Nadere informatieReal-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 informatieDe Parallelle Revolutie van GPU's en CPU's
De Parallelle Revolutie van GPU's en CPU's George van Venrooij Organic Vectory BV Bits&Chips Embedded Systemen 18 November 2011 Eindhoven Een nieuw speelveld Desktop PC anno 2005 2 GHz CPU (1 core, 6 GFLOP/s)
Nadere informatieTweede 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 informatieinformatica. 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 informatien-queens minimale dominantie verzamelingen Chessboard Domination on Programmable Graphics Hardware door Nathan Cournik
n-queens minimale dominantie verzamelingen Chessboard Domination on Programmable Graphics Hardware door Nathan Cournik Rick van der Zwet 4 augustus 2010 Samenvatting Dit schrijven zal
Nadere informatieInstructies 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 informatieOvererving & Polymorfisme
Overerving & Polymorfisme Overerving Sommige klassen zijn speciaal geval van andere klasse Docent is een speciaal geval van werknemer, dwz. elke docent is ook werknemer Functionaliteit van docent = functionaliteit
Nadere informatieTentamen Programmeren in C (EE1400)
TU Delft Tentamen Programmeren in C (EE1400) 3 feb. 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd
Nadere informatieDergelijke 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 informatiehttp://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 informatieMulti-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 informatieDatastructuren: stapels, rijen en binaire bomen
Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)
Nadere informatieDatastructuren 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 informatieProgrammeren in Java 3
7 maart 2010 Deze les Zelf componenten maken Concurrency (multithreading): werken met threads levenscyclus van een thread starten tijdelijk onderbreken wachten stoppen Zelf componenten maken Je eigen component:
Nadere informatieToetsbundel 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 informatieDebugging in embedded en native systemen met GDB
Debugging in embedded en native systemen met GDB A.M. ten Doesschate July 15, 2015 Abstract Een korte beschrijving : intro gebruik met welke tools en hulpmiddelen van de GDB setup en een summier aantal
Nadere informatieElementary Data Structures 3
Elementary Data Structures 3 Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 september 2014 ODE/FHTBM Elementary Data Structures 3 29 september 2014 1/14 Meer
Nadere informatieHPC CLOUD INTRODUCTIE. Jan Bot, SURFsara 5 augustus 2015
HPC CLOUD INTRODUCTIE Jan Bot, SURFsara 5 augustus 2015 Iets over jullie Doel van vandaag Introductie van het nieuwe HPC Cloud Kweken van een gezamelijk vocabulaire [S4R] Gelegenheid tot netwerken De hands-on
Nadere informatieHet begrip 'Proces' Proces-toestand
Het begrip 'Proces' Een proces is de uitvoering van een programma Bij een proces hoort een programma (de code) Program Counter (Instructiewijzer) stack data (data sectie) twee of meer processen kunnen
Nadere informatieBeter, 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 informatieWat is FP? The Haskell School of Expression. Functies. Types 1+1=2. Iedere expressie (en waarde) heeft een type.
Wat is FP? The Haskell School of Expression Functioneel Programmeren Een andere manier om tegen programmeren aan te kijken Gebaseerd op het uitrekenen van expressies 1+1=2 Eenvoudig maar krachtig (modulair,
Nadere informatieDe MySQL C API. Variabelen in C Functies in C Pointers in C
LinuxFocus article number 304 http://linuxfocus.org De MySQL C API door Özcan Güngör Over de auteur: Ik gebruik Linux sinds 1997. Vrijheid, flexibiliteit en opensource. Dat
Nadere informatieGPU versus CPU. Renderen terwijl uw processor stil staat? SketchUp Pro. Octane Render
GPU versus CPU Renderen terwijl uw processor stil staat? SketchUp Pro Octane Render 1 Visualisatie toekomst is er al? Jen-Hsun Huang, oprichter en president en CEO van NVIDIA (GTC Jan Jose Convention Center)
Nadere informatieHoe werkt een computer precies?
Hoe werkt een computer precies? Met steun van stichting Edict Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam Overview Introductie SIM-PL Simulatietool voor werking computer
Nadere informatieComputerarchitectuur. 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 informatieGelijktijdigheid: 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 informatieTweede 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 informatieimport java.io.*; één klasse public class Hallo { public static void main (String[] a) ...met één functie System.out.println("Hallo!
Voorbeeld Java-programma import java.io.*; één klasse...met één functie...met één opdracht public class Hallo { public static void main (String[] a) { System.out.println("Hallo!"); accolades begrenzen
Nadere informatieLessen Java: Reeks pag. 1
Lessen Java: Reeks 2 1-3-2016 pag. 1 Primitieve types type grootte waardes byte 8 bits 128, 127 short 16 bits 32768, 32767 int 32 bits 2 31, 2 31 1 long 64 bits 2 63, 2 63 1 type grootte waardes float
Nadere informatieHoofdstuk 7. Computerarchitectuur
Hoofdstuk 7 Computerarchitectuur 1 controlebus CPU MEMORY I/O databus adresbus Figuur 71 Schematische opbouw van een computersysteem 8 Figuur 72 Een busverbinding Buslijn Out E A In Out E B In Out E C
Nadere informatie3 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 informatieReal-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 informatieCollege 11: Game Engines
Concurrency Gerard Tel / Jacco Bikker - november 2016 februari 2017 College 11: Game Engines Welkom! Agenda: A Brief History Of Valve s Source Engine, 2007 id Tech 5, 2009 Bungie s Destiny, 2015 Naughty
Nadere informatieAanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur
Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten
Nadere informatieTentamen 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 informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 9 december 2015 Foreach String arrays Boomstructuren Interfaces Ingebouwde datastructuren Quiz Foreach Foreach Speciale versie van for om iets voor alle elementen
Nadere informatieEen gelinkte lijst in C#
Een gelinkte lijst in C# In deze tutorial ga demonstreren hoe je een gelinkte lijst kan opstellen in C#. We gaan een klasse schrijven, die een gelijkaardige functionaliteit heeft als een ArrayList, namelijk
Nadere informatieALGORITMIEK: 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 informatieObjectgericht programmeren 1.
Objectgericht programmeren 1 joost.vennekens@kuleuven.be http://www.cs.kuleuven.be/~joost/dn Objectgericht ontwerpen 35% Objectgericht ontwerpen 65% OP1 Informatiesystemen 50% Databanken 50% OP1 Evaluatie
Nadere informatieToets In2305-ii Embedded Programming Dinsdag 28 November 2006, 15:45-16:30
Toets In2305-ii Embedded Programming Dinsdag 28 November 2006, 15:45-16:30 Teneinde misverstanden over de syntactische geldigheid van code fragmenten in dit tentamen te voorkomen, zal altijd worden gesproken
Nadere informatiewat 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 informatieStacks 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 informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde
Nadere informatieDeel 1: schriftelijk deel
Examen Computerarchitectuur en systeemsoftware Donderdag 15 januari 2009, namiddag Deel 1: schriftelijk deel Algemene bemerkingen: Het examen bestaat uit 2 delen. Dit zijn de vragen voor het eerste deel.
Nadere informatieEen.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder
Een.NET-besturingssysteemtoolkit Discovering Cosmos Sijmen J. Mulder Agenda Boek 1 Cosmos: a very short introduction Boek 2 Modern Operating Systems Pauze Boek 3 The Design and Implementation of the Cosmos
Nadere informatieVan Poort tot Pipeline. Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam
Van Poort tot Pipeline Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam Van Poort tot Pipeline Pipeline processor One cycle machine Calculator File of registers Assembly
Nadere informatieComputerarchitectuur 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 informatieC++ programmeermethoden Bachelor Kunstmatige Intelligentie
C++ programmeermethoden Bachelor Kunstmatige Intelligentie 1e Deeltentamen Datum: 28 maart 2016 Tijd: 13.00-14.30 Aantal pagina s: 8 (inclusief voorblad) Aantal vragen: 5 Maximaal aantal te behalen punten:
Nadere informatieHoofdstuk 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 informatieHertentamen 8D040 - Basis beeldverwerking
Hertentamen 8D040 - Basis beeldverwerking 6 augustus 203, 4:00-7:00 Opmerkingen: Maak elke opgave op een apart vel. Antwoord op vraag 4 mag gewoon in het Nederlands. Een gewone rekenmachine is toegestaan.
Nadere informatieint main() { int m; m = power(2,3) /* berekent 2^3 en geeft de resultaat naar m terug */ }
1 Functies ( ) voorbeeld: int power(int base, int n) int i, p; p = 1; for ( i=1, i
Nadere informatiepublic 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 informatieJava Programma structuur
Java Programma structuur public class Bla // div. statements public static void main(string argv[]) // meer spul Voortgezet Prog. voor KI, week 4:11 november 2002 1 Lijsten Voorbeelden 2, 3, 5, 7, 13 Jan,
Nadere informatieEE1400: Programmeren in C BSc. EE, 1e jaar, , 4e college
EE1400: Programmeren in C BSc. EE, 1e jaar, 2012-2013, 4e college Arjan van Genderen, Computer Engineering 11-12-2012 Delft University of Technology Challenge the future Mededelingen Voortgangstoets: Woensdagmiddag
Nadere informatieVoorbeeld: 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 informatiepublic 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 informatieIntroductie 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 informatieTentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft
I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
Nadere informatieUitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur
Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is
Nadere informatieJeroen uit. Extra informatie. Voor de lunch. Arduino zo aangesloten om mijn code te laten werken. (versie voor lunch) (code voor de lunch)
We zijn weer aan dag drie al beland vandaag weer een dag CLE aangezien ik zag dat ik het vorige blog was vergeten CLE staat voor Contextiual Learning Enviroment ( weet je dat ook weer ) Maar ja zoals ik
Nadere informatieNederlandse samenvatting (Dutch summary)
Nederlandse samenvatting (Dutch summary) Ditproefschriftpresenteerteen raamwerk voorhetontwikkelenvanparallellestreaming applicaties voor heterogene architecturen met meerdere rekeneenheden op een chip.
Nadere informatieDigitale 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 informatieInleiding C++ Coding Conventions
Inleiding C++ Coding Conventions Opleiding Bachelor of Science in Informatica, van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2012-2013. Ruben Van den Bossche,
Nadere informatieHPC CLOUD INTRODUCTIE. Jan$Bot,$SURFsara$ 15$oktober$2015$
HPC CLOUD INTRODUCTIE Jan$Bot,$SURFsara$ 15$oktober$2015$ Iets over jullie Doel van vandaag Introductie van het nieuwe HPC Cloud Kweken van een gezamelijk vocabulaire [S4R] Gelegenheid tot netwerken De
Nadere informatieSyntax 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 informatiepublic Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;
Beschouw bijvoorbeeld de twee onderstaande klassen, waarvan de attributen en eigenschappen geannoteerd zijn met bijkomende XML-annotaties: using System ; using System. Xml ; using System. Xml. S e r i
Nadere informatieGo: een snelle introductie
Go: een snelle introductie Auteur: Daniël Heres Datum: Januari 2010 3,2,1 Go! "Weer een nieuwe taal". De keuze in programmeertalen is groot en de gelijkenis vaak ook. Toch is er een ding dat vaak overeind
Nadere informatieUitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur
Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf
Nadere informatieFOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE
FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Bewijzen en Technieken 1 7 januari 211, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe.
Nadere informatieInstructies en blokken
Herhaling 1 Instructies en blokken 2 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 informatieTentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft
Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Digitale
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in
Nadere informatie