Mestrado em Informática
|
|
- José Soares Cesário
- 6 Há anos
- Visualizações:
Transcrição
1 Sistemas de Computação e Desempenho Arquitecturas Paralelas Mestrado em Informática 2010/11 A.J.Proença Tema Arquitecturas Paralelas (2) Estrutura do tema AP 1. A evolução das arquitecturas pelo paralelismo 2. Multiprocessadores (SMP e MPP) 3. Data Parallelism: SIMD, Vector, GPU, 4. Topologias de interligação Adaptado de Documentos da NVidia e de slides de outras apresentações AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 1 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 2 Instruction and Data Streams SIMD An alternate classification Instruction Streams Single Multiple Single SISD: Intel Pentium 4 MISD: No examples today Data Streams Multiple SIMD: SSE instructions of x86 MIMD: Intel Xeon e5345 MD: Single Program Multiple Data A parallel program on a MIMD computer Conditional code for different processors!" #"! &"! %" # &" # %" ()+*" ()(*" '" '",-./01%" $" $ &" $ %" Single Instruction Multiple Data architectures make use of data parallelism SIMD can be area and power efficient Amortize control overhead over SIMD width Parallelism exposed to programmer & compiler AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 3 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 4
2 SIMD Vector Processors Operate element-wise on vectors of data E.g., MMX and SSE instructions in x86 Multiple data elements in 128-bit wide registers All processors execute the same instruction at the same time Each with different data address, etc. Simplifies synchronization Reduced instruction control hardware Works best for highly data-parallel applications AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 5 Highly pipelined function units Stream data from/to vector registers to units Data collected from memory into registers Results stored from registers to memory Example: Vector extension to MIPS 32! 64-element registers (64-bit elements) Vector instructions lv, sv: load/store vector addv.d: add vectors of double addvs.d: add scalar to each element of vector of double Significantly reduces instruction-fetch bandwidth AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 6 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 7 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 8
3 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 9 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 10 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 11 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 12
4 A Brief History of x86 SIMD AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 13 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 14 What to do with SIMD? Vector vs. Scalar 2",!3"()+*"4((56" &7",!3"()+*"489:6" Neglecting SIMD in the future will be more expensive AVX: 8 way SIMD, Larrabee: 16 way SIMD, Nvidia: 32 way SIMD, ATI: 64 way SIMD This problem composes with thread level parallelism We need a programming model which addresses both problems AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 15 Vector architectures and compilers Simplify data-parallel programming Explicit statement of absence of loop-carried dependences Reduced checking in hardware Regular access patterns benefit from interleaved and burst memory Avoid control hazards by avoiding loops More general than ad-hoc media extensions (such as MMX, SSE) Better match with compiler technology AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 16
5 GPU Architectures Classifying GPUs Processing is highly data-parallel GPUs are highly multithreaded Use thread switching to hide memory latency Less reliance on multi-level caches Graphics memory is wide and high-bandwidth Trend toward general purpose GPUs Heterogeneous CPU/GPU systems CPU for sequential code, GPU for parallel code Programming languages/apis DirectX, OpenGL C for Graphics (Cg), High Level Shader Language (HLSL) Compute Unified Device Architecture (CUDA) AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 17 Don t fit nicely into SIMD/MIMD model Conditional execution in a thread allows an illusion of MIMD But with performance degredation Need to write general purpose code with care Instruction-Level Parallelism Data-Level Parallelism Static: Discovered at Compile Time VLIW SIMD or Vector Dynamic: Discovered at Runtime Superscalar Tesla Multiprocessor AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 18!"#$%&'()*+,-*!+,.&'()* Terminology: Multicore, Manycore, SIMD The CUDA Programming model Mapping CUDA to NVidia GPUs Experiences with CUDA AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/ ;</-$=>?" +!@3$=>?" Multicore: yoke of oxen Each core optimized for executing a single thread Manycore: flock of chickens Cores optimized for aggregate throughput, deemphasizing individual performance AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 20
6 Performance gap between GPUs and CPUs /0+$*%1*+*&'()2* Is a core an ALU? ATI claims 800 streaming processors!! 5 way VLIW * 16 way SIMD * 10 SIMD cores Is a core a SIMD vector unit? NVidia claims 448 streaming processors!! 32 way SIMD * 14 multiprocessors To match ATI, they could count another factor of 2 for dual issue In these slides, we use core consistent with the CPU world Superscalar, VLIW, SIMD are part of a core s architecture, not the #cores AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 21 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 22 CUDA Devices and Threads Compute Unified Device Architecture CUDA is a recent programming model, designed for Manycore architectures Wide SIMD parallelism Scalability CUDA provides: A thread abstraction to deal with SIMD Synchr. & data sharing between small groups of threads CUDA programs are written in C with extensions OpenCL inspired by CUDA, but hw & sw vendor neutral Programming model essentially identical AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 23 A compute device Is a coprocessor to the CPU or host Has its own DRAM (device memory)! Runs many threads in parallel Is typically a GPU but can also be another type of parallel processing device Data-parallel portions of an application are expressed as device kernels which run on many threads Differences between GPU and CPU threads GPU threads are extremely lightweight Very little creation overhead GPU needs 1000s of threads for full efficiency Multi-core CPU needs only a few AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 24
7 A view of a GPU as a compute device: the G80 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 25 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 26 Compiling a CUDA Program C/C++ CUDA Application AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 27 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 28 Virtual Physical G80 NVCC PTX Code PTX to Target Compiler... GPU Target code float4 me = gx[gtid]; me.x += me.y * me.z; CPU Code Parallel Thread execution (PTX)" Virtual Machine and ISA Programming model Execution resources and state ld.global.v4.f32 {$f1,$f3,$f5,$f7}, [$r9+0]; mad.f32 $f1, $f5, $f3, $f1;
8 CUDA basic model: Single-Program Multiple-Data (MD) Programming Model: MD + SIMT/SIMD CUDA integrated CPU + GPU application C program Serial C code executes on CPU Parallel Kernel C code executes on GPU thread blocks GPU Parallel Kernel KernelA<<< nblk, ntid >>>(args); GPU Parallel Kernel KernelB<<< nblk, ntid >>>(args); CPU Serial Code CPU Serial Code Grid 0 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/ Grid 1 Hierarchy Device => Grids Grid => Blocks Block => Warps Warp => Threads Single kernel runs on multiple blocks (MD) Threads within a warp are executed in a lock-step way called singleinstruction multiple-thread (SIMT) Single instruction are executed on multiple threads (SIMD) Warp size defines SIMD granularity (G80 : 32 threads) Synchronization within a block using shared memory Courtesy NVIDIA AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 30 Hardware Implementation : a set of SIMD Processors The Computational Grid: Block IDs and Thread IDs Device a set of multiprocessors Multiprocessor a set of 32-bit SIMD processors Device Multiprocessor N Multiprocessor 2 Multiprocessor 1 Processor 1 Processor 2 Instruction Unit AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 31 Processor M Courtesy NVIDIA A kernel runs on a computational grid of thread blocks Threads share global memory Each thread uses IDs to decide what data to work on Block ID: 1D or 2D Thread ID: 1D, 2D, or 3D A thread block is a batch of threads that can cooperate by: Sync their execution w/ barrier Efficiently sharing data through a low latency shared memory Two threads from two different blocks cannot cooperate AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 32
9 CUDA Thread Block Thread Blocks: Scalable Cooperation Programmer declares (Thread) Block: Block size 1 to 512 concurrent threads Block shape 1D, 2D, or 3D Block dimensions in threads All threads in a Block execute the same thread program Threads share data and synchronize while doing their share of the work Threads have thread id numbers within Block Thread program uses thread id to select work and address shared data threadid CUDA Thread Block AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/ float x = input[threadid]; float y = func(x); output[threadid] = y; Divide monolithic thread array into multiple blocks Threads within a block cooperate via shared memory, atomic operations and barrier synchronization threadid Threads in different blocks cannot cooperate Thread Block 0 float x = input [threadid]; float y = func(x); output[threadid] = y; Thread Block 1 float x = input [threadid]; float y = func(x); output[threadid] = y; AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 34 Thread Block N float x = input [threadid]; float y = func(x); output[threadid] = y; Transparent Scalability Parallel Memory Sharing Hardware is free to assigns blocks to any processor at any time A kernel scales across any number of parallel processors Device Block 0 Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7 Kernel grid Block 0 Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7 time! Device Block 0 Block 1 Block 2 Block 3 Block 4 Block 5 Block 6 Block 7 Each block can execute in any order relative to other blocks. AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 35 Thread Block Grid 0 Grid 1 Local Memory Shared Memory Local Memory: per-thread Private per thread Auto variables, register spill Shared Memory: per-block Shared by threads of the same block Inter-thread communication Global Memory: per-application Shared by all threads Inter-Grid communication Global Memory Sequential Grids in Time AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 36
10 !)3'(.*3'-)#* CUDA Memory Model Overview (1)!"#$%&'!()*+, AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 37 Each thread can: R/W per-thread registers R/W per-thread local memory R/W per-block shared memory R/W per-grid global memory Read only per-grid constant memory Read only per-grid texture memory The host can R/W global, constant, and texture memories Host (Device) Grid Block (0, 0) Registers Local Memory Global Memory Constant Memory Texture Memory Shared Memory Registers Local Memory Block (1, 0) Registers Local Memory Shared Memory Registers Thread (0, 0) Thread (1, 0) Thread (0, 0) Thread (1, 0) Local Memory AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 38 Hardware Implementation: Memory Architecture CUDA Memory Model Overview (2) Device memory (DRAM) Slow (2~300 cycles) Local, global, constant, and texture memory On-chip memory Fast (1 cycle) Registers, shared memory, constant/texture cache Device Multiprocessor N Multiprocessor 2 Multiprocessor 1 Registers Processor 1 Device memory Shared Memory Registers Processor 2 Instruction Unit Courtesy NVIDIA AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 39 Registers Processor M Constant Cache Texture Cache AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 40
11 CUDA Memory Model Overview (3) CUDA Host-Device Data Transfer AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 41 Code example: Transfer a 64 * 64 single precision float array M is in host memory and Md is in device memory cudamemcpyhosttodevice and cudamemcpydevicetohost are symbolic constants cudamemcpy(md, M, size, cudamemcpyhosttodevice); cudamemcpy(m, Md, size, cudamemcpydevicetohost); AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/ *9)+$"()1*+:+%#+;#)*',*<=5* 45678*!%,%3+#*)>$),1%',1*$'*4?4@@* Declaration specifiers to indicate where things live!""#$%&'$""!(%)*!+,-.,$/ !66!kernel callable from host!""*,()1,""!(%)*!7,()1,/ !!66!function callable on device!""*,()1,""!).8!!9$%&'$:'-5!!!!!!66!variable in device memory!"";<'-,*""!).8!!=<'-,*:'-5!!!!!!66!in per-block shared memory Extend function invocation syntax for parallel kernel launch +,-.,$/0.1>>>?@@A!BCDEEE233345!!!!66!500 blocks, 128 threads each Special variables for thread identification in kernels *)FG!8<-,'*H*I5!!*)FG!&$%1JH*I5!!*)FG!&$%1J7)F5! Intrinsics that expose specific operations in kernel code "";K.18<-,'*;245!!!!!!!!!!!!!!66!barrier synchronization AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 43 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 44
12 45678*A",$%3)*1"BB'($* C)##'*/'(#-8*D)&$'(*7--%$%',* 66L%FM08,!(,18%-!;0F!LNOPQ! 66R'1<!8<-,'*!M,-S%-F;!%.,!M')-T);,!'**)8)%.! ""#$%&'$""!(%)*!(,1O**2S$%'8U!'A!S$%'8U!&A!S$%'8U!14!V!!).8!)!N!&$%1JH*I3I!U!&$%1J7)F3I!P!8<-,'*H*I3I5!!1W)X!N!'W)X!P!&W)X5! Y! ).8!F').24!V!!66Z0.![6C?\!&$%1J;!%S!C?\!8<-,'*;!,'1<!!(,1O**>>>[6C?\A!C?\EEE2*"'A!*"&A!*"145! Y! AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 45 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 46 Example: Vector Addition Host Code float* h_a = (float*) malloc(n * sizeof(float)); float* h_b = (float*) malloc(n * sizeof(float)); // initalize h_a and h_b // allocate device memory float* d_a, d_b, d_c; cudamalloc( (void**) &d_a, N * sizeof(float) ); cudamalloc( (void**) &d_b, N * sizeof(float) ); cudamalloc( (void**) &d_c, N * sizeof(float) ); // copy host memory to device cudamemcpy( d_a, h_a, N * sizeof(float), cudamemcpyhosttodevice ); cudamemcpy( d_b, h_b, N * sizeof(float), cudamemcpyhosttodevice ); // execute the kernel on N/256 blocks of 256 threads each vecadd<<< N/256, 256>>>( d_a, d_b, d_c); Courtesy NVIDIA AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 47 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 48
13 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 49 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 50 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 51 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 52
14 !+BB%,E*4567*$'*+*<=5F*!"#$%& CUDA is designed to be functionally forgiving First priority: make things work. Second: get performance. However, to get good performance, one must understand how CUDA is mapped to NVidia GPUs Threads: each thread is a SIMD vector lane Warps: A SIMD instruction acts on a warp Warp width is 32 elements: LOGICAL SIMD width Thread blocks: Each thread block is scheduled onto a processor Peak efficiency requires multiple thread blocks per processor The GPU is very deeply pipelined Throughput machine, trying to hide memory latency This means that performance depends on the number of thread blocks which can be allocated on a processor Therefore, resource usage costs performance: More registers => Fewer thread blocks More shared memory usage => Fewer thread blocks It is often worth trying to reduce register count in order to get more thread blocks to fit on the chip For previous architectures, 10 registers or less per thread meant full occupancy For GTX280, target 16 registers or less per thread AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 53 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 54 GeForce-8 Series HW Overview G80 Example: Executing Thread Blocks Streaming Processor Array t0 t1 t2 tm SM 0 SM 1 t0 t1 t2 tm Blocks! TPC TPC TPC TPC TPC TPC MT IU MT IU Texture Processor Cluster Streaming Multiprocessor Instruction L1 Data L1 SM Instruction Fetch/Dispatch TEX Shared Memory SM SFU SFU AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 55 Blocks Shared Memory Shared Memory Threads are assigned to Streaming Multiprocessors in block granularity Up to 8 blocks to each SM as resource allows SM in G80 can take up to 768 threads Could be 256 (threads/block) * 3 blocks Or 128 (threads/block) * 6 blocks, etc. Threads run concurrently SM maintains thread/block id #s SM manages/schedules thread exec AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 56
15 G80 Example: Thread Scheduling G80 Example: Scoreboarding Each Block is executed as 32- thread Warps An implementation decision, not part of the CUDA programming model Warps are scheduling units in SM If 3 blocks are assigned to an SM and each block has 256 threads, how many Warps are there in an SM? Each Block is divided into 256/32 = 8 Warps There are 8 * 3 = 24 Warps! Block 1 Warps t0 t1 t2 t31! t0 t1 t2 t31! AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 57! Block 2 Warps Streaming Multiprocessor Instruction L1 Instruction Fetch/Dispatch Shared Memory SFU Block 1 Warps! t0 t1 t2 t31! SFU SM implements zero-overhead warp scheduling At any time, only one of the warps is executed by SM Warps whose next instruction has its operands ready for consumption are eligible for execution Eligible warps are selected for execution on a prioritized scheduling policy All threads in a warp execute the same instruction when selected AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 58 SM Warp Scheduling SM Instruction Buffer Warp Scheduling time SM multithreaded Warp scheduler warp 8 instruction 11 warp 1 instruction 42 warp 3 instruction 95. warp 8 instruction 12 warp 3 instruction 96 SM hardware implements zero-overhead Warp scheduling Warps whose next instruction has its operands ready for consumption are eligible for execution Eligible Warps are selected for execution on a prioritized scheduling policy All threads in a Warp execute the same instruction when selected 4 clock cycles needed to dispatch the same instruction for all threads in a Warp in G80 If one global memory access is needed for every 4 instructions A minimal of 13 Warps are needed to fully tolerate 200-cycle memory latency AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 59 Fetch one warp instruction/cycle from instruction L1 cache into any instruction buffer slot Issue one ready-to-go warp instruction/ cycle from any warp - instruction buffer slot operand scoreboarding used to prevent hazards Issue selection based on round-robin/age of warp SM broadcasts the same instruction to 32 Threads of a Warp AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 60 I $ L 1 Multithreaded Instruction Buffer R F C $ Shared L 1 Mem Operand Select MAD SFU
16 G80 Block Granularity Considerations Famílias de GPU da NVidia For Matrix Multiplication using multiple blocks, should I use 8X8, 16X16 or 32X32 blocks? For 8X8, we have 64 threads per Block. Since each SM can take up to 768 threads, there are 12 Blocks. However, each SM can only take up to 8 Blocks, only 512 threads will go into each SM! For 16X16, we have 256 threads per Block. Since each SM can take up to 768 threads, it can take up to 3 Blocks and achieve full capacity unless other resource considerations overrule. For 32X32, we have 1024 threads per Block. Not even one can fit into an SM! AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 61 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 62 G80 & GT200 Texture/Processor Cluster, TPC: G80 and G200 G80 GT200 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 63 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 64
17 The new NVidia Fermi architecture Fermi Streaming Multiprocessor (SM) AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 65 GT200 and Fermi cores AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 67 Fermi Architecture AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 66 Fermi: Multithreading and Memory Hierarchy AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 68
18 !)3'(.F*!)3'(.F*!)3'(.*!)3'(.*%1*GH!6*$''* A many core processor # A device for turning a compute bound problem into a memory bound problem Virtually all processors have SIMD memory subsystems! " # " $ " % " & " ' " ( " ) "! 8=/A"=B"C>=$?AA=>AD"=@<3"=@?"A=$E?/"! +?F=>3"$=@$?>@A".=F-@!/?"C?>B=>F!@$?"/;@-@G" AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 69 $!$0?"<-@?",-./0 "! H0-A"0!A"/,="?I?$/AJ"! (C!>A?"!$$?AA",!A/?A"#!@.,-./0"! " # " $ " % " & " ' " ( " ) " %",=>.A";A?.D"K",=>.A"<=!.?.J" L""?I?$/-M?"#!@.,-./0"! N@!<-G@?."!$$?AA",!A/?A"#!@.,-./0"! " # " $ " % " & " ' " ( " ) " 2",=>.A";A?.D"K",=>.A"<=!.?.J" O"?I?$/-M?"#!@.,-./0" AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/ '+#)1&%,E* 6+$+*G$("&$"()*=+--%,E* Current GPUs don t have cache lines as such, but they do have similar issues with alignment and sparsity NVidia GPUs have a coalescer, which examines memory requests dynamically and coalesces them To use bandwidth effectively, when threads load, they should: Present a set of unit strided loads (dense accesses) Keep sets of loads aligned to vector boundaries 4>=,"F!P=>6" Multidimensional arrays are usually stored as monolithic vectors in memory Care should be taken to assure aligned memory accesses for the necessary access pattern!" #" AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 71 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 72
19 A Simple Running Example Matrix Multiplication Matrix multiplication: design step-by-step Matrix addition: code analysis step-by-step AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 73 A simple matrix multiplication example that illustrates the basic features of memory and thread management in CUDA programs Leave shared memory usage until later Local, register usage Thread ID usage Memory data transfer API between host and device Assume square matrix for simplicity AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 74 Programming Model: Square Matrix Multiplication Example Memory Layout of a Matrix in C N P = M * N of size x Without tiling: One thread calculates one element of P M 1,0! M 0,0! M 0,1! M 1,1! M 2,0! M 3,0! M 2,1! M 3,1! M and N are loaded times from global memory M AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 75 P M! M 0,2! M 1,2! M 2,2! M 3,2! M 0,3! M 1,3! M 2,3! M 3,3! M 0,0! M 1,0! M 2,0! M 3,0! M 0,1! M 1,1! M 2,1! M 3,1! M 0,2! M 1,2! M 2,2! M 3,2! M 0,3! M 1,3! M 2,3! M 3,3! AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 76
20 Step 1: Matrix Multiplication A Simple Host Version in C Step 2: Input Matrix Data Transfer (Host-side Code)! // Matrix multiplication on the host in double precision! N void MatrixMulOnHost(float* M, float* N, float* P, int Width)" { for (int i = 0; i < Width; ++i)" for (int j = 0; j < Width; ++j) { double sum = 0; for (int k = 0; k < Width; ++k) { double a = M[i * width + k]; double b = N[k * width + j]; sum += a * b; M } } } P[i * Width + j] = sum; k! AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 77 i! P j! k! void MatrixMulOnDevice(float* M, float* N, float* P, int Width)" { int size = Width * Width * sizeof(float); float* Md, Nd, Pd;! 1. // Allocate and Load M, N to device memory cudamalloc(&md, size); cudamemcpy(md, M, size, cudamemcpyhosttodevice); cudamalloc(&nd, size); cudamemcpy(nd, N, size, cudamemcpyhosttodevice); // Allocate P on the device cudamalloc(&pd, size); AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 78 Step 3: Output Matrix Data Transfer (Host-side Code)! Step 4: Kernel Function 2. // Kernel invocation code to be shown later 3. // Read P from the device cudamemcpy(p, Pd, size, cudamemcpydevicetohost); // Free device matrices cudafree(md); cudafree(nd); cudafree (Pd); } AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 79 // Matrix multiplication kernel per thread code global void MatrixMulKernel(float* Md, float* Nd, float* Pd, int Width)" { // Pvalue is used to store the element of the matrix // that is computed by the thread float Pvalue = 0; AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 80
21 Step 4: Kernel Function (cont.)! Step 5: Kernel Invocation (Host-side Code) for (int k = 0; k < Width; ++k)" { float Melement = Md[threadIdx.y*Width+k]; float Nelement = Nd[k*Width+threadIdx.x]; Pvalue += Melement * Nelement; } Pd[threadIdx.y*Width+threadIdx.x] = Pvalue; } Md k! AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 81 ty! Nd Pd tx! tx! k! ty! // Setup the execution configuration dim3 dimgrid(1, 1); dim3 dimblock(width, Width); // Launch the device computation threads! MatrixMulKernel<<<dimGrid, dimblock>>>(md, Nd, Pd, Width); AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 82 Only One Thread Block Used Step 7: Handling Arbitrary Sized Square Matrices One Block of threads compute matrix Pd Each thread computes one element of Pd Each thread Loads a row of matrix Md Loads a column of matrix Nd Perform one multiply and addition for each pair of Md and Nd elements Compute to off-chip memory access ratio close to 1:1 (not very high)! Size of matrix limited by the number of threads allowed in a thread block AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 83 Grid 1 Block 1 Thread!)2,2( Md Nd Pd 48 Have each 2D thread block to compute a (TILE_) 2 sub-matrix (tile) of the result matrix Each has (TILE_) 2 threads Generate a 2D Grid of (/TILE_) 2 blocks You still need to put a loop around the kernel call for cases where / TILE_ is greater than max grid size (64K)!! Md AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 84 Nd Pd bx! tx! by! TILE_! ty!
22 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 85 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 86 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 87 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 88
23 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 89 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 90 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 91 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 92
24 Summary- Typical Structure of a CUDA Program AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 93 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 94 repeat as needed 4567*G"33+(.* Latest News: #1 in TOP500 (Nov 2010) CUDA is a MD+SIMD programming model for manycore processors It abstracts SIMD, making it easy to use wide SIMD vectors It provides good performance on today s GPUs In the near future, CUDA-like approaches will map well to many processors & GPUs 28-Oct-10 CUDA encourages SIMD friendly, highly scalable algorithm design and implementation AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 95 AJProença, Sistemas de Computação e Desempenho, MInf, UMinho, 2010/11 96
Parallel Computing Paradigms
João Luís Ferreira Sobral www.di.uminho.pt/~jls jls@... Web: Elearning 1 At the end of the course, students should be able to: Design and optimise parallel applications that can efficiently run on a wide
5 Unidades de Processamento Gráfico GPUs
5 Unidades de Processamento Gráfico GPUs As GPUs são processadores maciçamente paralelos, com múltiplos elementos de processamento, tipicamente utilizadas como aceleradores de computação. Elas fornecem
A ENTREVISTA COMPREENSIVA: UM GUIA PARA PESQUISA DE CAMPO (PORTUGUESE EDITION) BY JEAN-CLAUDE KAUFMANN
Read Online and Download Ebook A ENTREVISTA COMPREENSIVA: UM GUIA PARA PESQUISA DE CAMPO (PORTUGUESE EDITION) BY JEAN-CLAUDE KAUFMANN DOWNLOAD EBOOK : A ENTREVISTA COMPREENSIVA: UM GUIA PARA CLAUDE KAUFMANN
Aula 21 Ordenação externa
MC3305 Algoritmos e Estruturas de Dados II Aula 21 Ordenação externa Slides adaptados de Brian Cooper (Yahoo Research) Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1 Números de Ackermann
Arquitetura e Organização de Computadores. Capítulo 7 Multicores, Multiprocessadores e Clusters
Arquitetura e Organização de Computadores Capítulo 7 Multicores, Multiprocessadores e Clusters Material adaptado de: Patterson e Henessy, Computer Organization and Design 4 th Edition 2 Objetivo: conectar
ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS (EM PORTUGUESE DO BRASIL) BY CHOO HYUNG KIM
Read Online and Download Ebook ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS (EM PORTUGUESE DO BRASIL) BY CHOO HYUNG KIM DOWNLOAD EBOOK : ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS Click link bellow
As 100 melhores piadas de todos os tempos (Portuguese Edition)
As 100 melhores piadas de todos os tempos (Portuguese Edition) Click here if your download doesn"t start automatically As 100 melhores piadas de todos os tempos (Portuguese Edition) As 100 melhores piadas
Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013
Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2012/2013 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 23 CUDA "Compute Unified Device Architecture" Parte 2
ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS (EM PORTUGUESE DO BRASIL) BY CHOO HYUNG KIM
Read Online and Download Ebook ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS (EM PORTUGUESE DO BRASIL) BY CHOO HYUNG KIM DOWNLOAD EBOOK : ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS Click link bellow
Parallel Algorithms for Multicore Game Engines
Lucas Euzébio Machado Parallel Algorithms for Multicore Game Engines TESE DE DOUTORADO DEPARTAMENTO DE INFORMÁTICA Postgraduate program in Informatics Rio de Janeiro March 2010 Lucas Euzébio Machado Parallel
Patrício Domingues Dep. Eng. Informática ESTG Instituto Politécnico de Leiria Leiria, Maio Programação Genérica de GPUs
Patrício Domingues Dep. Eng. Informática ESTG Instituto Politécnico de Leiria Leiria, Maio 2012 http://bit.ly/patricio Programação Genérica de GPUs 1 CUDA Teaching Center A ESTG/IPLeiria é um CUDA Teaching
Waldemar Celes. 25 de Agosto de 2014
Introdução a CUDA INF2062 Tópicos em Simulação e Visualização Waldemar Celes celes@inf.puc-rio.br Tecgraf, DI/PUC-Rio 25 de Agosto de 2014 W. Celes Introdução a CUDA 1 GPGPU Programação de propósito geral
Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel
Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel Processadores 8086 Registradores: 16 bits 1978 Data bus:
CIVILIZAçãO EM TRANSIçãO (OBRAS COMPLETAS DE CARL GUSTAV JUNG) (PORTUGUESE EDITION) BY CARL GUSTAV JUNG
Read Online and Download Ebook CIVILIZAçãO EM TRANSIçãO (OBRAS COMPLETAS DE CARL GUSTAV JUNG) (PORTUGUESE EDITION) BY CARL GUSTAV JUNG DOWNLOAD EBOOK : CIVILIZAçãO EM TRANSIçãO (OBRAS COMPLETAS DE Click
Taxonomia de Flynn. Procura classificar todas as arquitecturas de computadores com base no processamento das instruções e dos dado.
Multi-processamento Taxonomia de Flynn Arquitecturas SIMD Instruções vectoriais Arquitecturas MIMD Tipos de arquitectura MIMD Memória partilhada Multi-cores Taxonomia de Flynn Procura classificar todas
Organização de Computadores
Capítulo 2 - A Organização de Computadores Orlando Loques setembro 2006 Referências: principal: Capítulo 2, Structured Computer Organization, A.S. Tanenbaum, (c) 2006 Pearson Education Inc Computer Organization
Da Emoção à Lesão: um Guia de Medicina Psicossomática (Portuguese Edition)
Da Emoção à Lesão: um Guia de Medicina Psicossomática (Portuguese Edition) Geraldo José Ballone, Ida Vani Ortolani, Eurico Pereira Neto Click here if your download doesn"t start automatically Download
Uma introdução para computação paralela de modelos massivos. Adriano Brito Pereira inf.puc-rio.br
Uma introdução para computação paralela de modelos massivos Adriano Brito Pereira 1021752 apereira @ inf.puc-rio.br Departamento de Informática Novembro / 2010 1 Resultados obtivos com Manta Framework
Como Falar no Rádio - Prática de Locução Am e Fm (Portuguese Edition)
Como Falar no Rádio - Prática de Locução Am e Fm (Portuguese Edition) Cyro César Click here if your download doesn"t start automatically Como Falar no Rádio - Prática de Locução Am e Fm (Portuguese Edition)
Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2012/2013
Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2012/2013 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 19 CUDA "Compute Unified Device Architecture" Parte 1
Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva
Introdução à Programação Paralela através de Padrões Denise Stringhini Calebe Bianchini Luciano Silva Sumário Introdução: conceitos de paralelismo Conceitos básicos sobre padrões de programação paralela
Disciplina de Arquitetura de Computadores
USP - ICMC - SSC SSC 0510 - Informática - 2o. Semestre 2009 Disciplina de Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal: http://www.icmc.usp.br/~fosorio/
Medicina e Meditação - Um Médico Ensina a Meditar (Portuguese Edition)
Medicina e Meditação - Um Médico Ensina a Meditar (Portuguese Edition) Roberto Cardoso Click here if your download doesn"t start automatically Medicina e Meditação - Um Médico Ensina a Meditar (Portuguese
Aula 16: Memória Principal e Memória Virtual
Aula 16: Memória Principal e Memória Virtual Memória Principal Performance na memória principal: Latência: Miss Penalty na Cache Access Time: tempo entre requisição e retorno de palavra Cycle Time:
Efficient Locally Trackable Deduplication in Replicated Systems. www.gsd.inesc-id.pt. technology from seed
Efficient Locally Trackable Deduplication in Replicated Systems João Barreto and Paulo Ferreira Distributed Systems Group INESC-ID/Technical University Lisbon, Portugal www.gsd.inesc-id.pt Bandwidth remains
MASTER S DEGREE IN INTELLECTUAL PROPERTY ADMISSION EXAM
CADERNO DE QUESTÕES NOTA FINAL MASTER S DEGREE IN INTELLECTUAL PROPERTY ADMISSION EXAM Before reading the text, pay attention to these important and essential remarks. All the answers must be written in
Poder sem limites - o caminho do sucesso pessoal pela programação neurolinguística
Poder sem limites - o caminho do sucesso pessoal pela programação neurolinguística Anthony Robbins Click here if your download doesn"t start automatically Poder sem limites - o caminho do sucesso pessoal
Medicina e Meditação - Um Médico Ensina a Meditar (Portuguese Edition)
Medicina e Meditação - Um Médico Ensina a Meditar (Portuguese Edition) Medicina e Meditação - Um Médico Ensina a Meditar (Portuguese Edition) Médico há mais de vinte anos e meditador há mais tempo ainda,
Software Testing with Visual Studio 2013 (20497)
Software Testing with Visual Studio 2013 (20497) Formato do curso: Presencial Preço: 800 Nível: Intermédio Duração: 12 horas Este curso, mostra a Programadores e Testers como utilizar as ferramentas do
COMO ESCREVER PARA O ENEM: ROTEIRO PARA UMA REDAçãO NOTA (PORTUGUESE EDITION) BY ARLETE SALVADOR
Read Online and Download Ebook COMO ESCREVER PARA O ENEM: ROTEIRO PARA UMA REDAçãO NOTA 1.000 (PORTUGUESE EDITION) BY ARLETE SALVADOR DOWNLOAD EBOOK : COMO ESCREVER PARA O ENEM: ROTEIRO PARA UMA SALVADOR
Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011
Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2010/2011 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 11 CUDA Parte 2 N. Cardoso & P. Bicudo Programação em
Designing Solutions for Microsoft SQL Server 2014 (20465)
Designing Solutions for Microsoft SQL Server 2014 (20465) Formato do curso: Presencial Com certificação: MCSE: Data Platform Preço: 1090 Nível: Avançado Duração: 18 horas Este curso de 3 dias, destina-se
Bíblia do Obreiro - Almeida Revista e Atualizada: Concordância Dicionário Auxílios Cerimônias (Portuguese Edition)
Bíblia do Obreiro - Almeida Revista e Atualizada: Concordância Dicionário Auxílios Cerimônias (Portuguese Edition) Sociedade Bíblica do Brasil Click here if your download doesn"t start automatically Bíblia
DIBELS TM. Portuguese Translations of Administration Directions
DIBELS TM Portuguese Translations of Administration Directions Note: These translations can be used with students having limited English proficiency and who would be able to understand the DIBELS tasks
Arquitetura e Programação de GPU. Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973
Arquitetura e Programação de GPU Leandro Zanotto RA: 001962 Anselmo Ferreira RA: 023169 Marcelo Matsumoto RA: 085973 Agenda Primeiras Placas de Vídeo Primeira GPU Arquitetura da GPU NVIDIA Arquitetura
Transcript name: 1. Introduction to DB2 Express-C
Transcript name: 1. Introduction to DB2 Express-C Transcript name: 1. Introduction to DB2 Express-C Welcome to the presentation Introduction to DB2 Express-C. In this presentation we answer 3 questions:
Frederico Tavares - MICEI 06/07. Frederico Tavares
ICCA 07 8th Internal Conference on Computer Architecture FAQ - 05 Ao nível das últimas gerações do IA32 (Pentium III e ) quais as principais diferenças entre os processadores da Intel e da AMD? "IA32 processors:
Métodos Formais em Engenharia de Software. VDMToolTutorial
Métodos Formais em Engenharia de Software VDMToolTutorial Ana Paiva apaiva@fe.up.pt www.fe.up.pt/~apaiva Agenda Install Start Create a project Write a specification Add a file to a project Check syntax
MANUAL PRATICO DO PLANO DE PROJETO: UTILIZANDO O PMBOK GUIDE BY RICARDO VIANA VARGAS
Read Online and Download Ebook MANUAL PRATICO DO PLANO DE PROJETO: UTILIZANDO O PMBOK GUIDE BY RICARDO VIANA VARGAS DOWNLOAD EBOOK : MANUAL PRATICO DO PLANO DE PROJETO: UTILIZANDO Click link bellow and
GPU Computing: Implementação do método do Gradiente Conjugado utilizando CUDA
UNIVERSIDADE DE CAXIAS DO SUL CENTRO DE COMPUTAÇÃO E TECNOLOGIA DA INFORMAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO MAURÍCIO GRISA GPU Computing: Implementação do método do Gradiente Conjugado
Determine number of machine instructions executed. Determine how fast instructions are executed. Processor and memory system
Sistemas de Computação e Desempenho Mestrado em Informática 2009/10 A.J.Proença Tema Revisitando os Sistemas de Computação (2) 1 Análise do desempenho em Sistemas de Computação: oportunidades para optimizar
Capítulo Sistemas de Memória Memória Virtual. Ch7b 1
Capítulo Sistemas de Memória Memória Virtual Ch7b Memória Virtual Memória principal funciona como uma cache para o armazenamento secundário (disco) Virtual addresses Physical addresses Address translation
Programação em Paralelo. N. Cardoso & P. Bicudo. Física Computacional - MEFT 2010/2011
Programação em Paralelo CUDA N. Cardoso & P. Bicudo Física Computacional - MEFT 2010/2011 N. Cardoso & P. Bicudo Programação em Paralelo: CUDA 1 / 12 CUDA Parte 3 N. Cardoso & P. Bicudo Programação em
Buscai as coisas do alto (Portuguese Edition)
Buscai as coisas do alto (Portuguese Edition) Padre Léo SCJ Click here if your download doesn"t start automatically Buscai as coisas do alto (Portuguese Edition) Padre Léo SCJ Buscai as coisas do alto
Churrasco - Dando nome aos bois (Portuguese Edition)
Churrasco - Dando nome aos bois (Portuguese Edition) István Wessel Click here if your download doesn"t start automatically Churrasco - Dando nome aos bois (Portuguese Edition) István Wessel Churrasco -
Sistemas Distribuídos
Sistemas Distribuídos Classificação de Flynn Fonte: Professoras. Sarita UFRJ e Thais V. Batista - UFRN Arquiteturas Paralelas Computação Paralela Conceitos Permite a execução das tarefas em menor tempo,
Addition of Fields in Line Item Display Report Output for TCode FBL1N/FBL5N
Addition of Fields in Line Item Display Report Output for TCode FBL1N/FBL5N Applies to: Any business user who uses the transactions FBL1N and FBL5N to display line item reports for vendors and customers.
ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS (EM PORTUGUESE DO BRASIL) BY CHOO HYUNG KIM
Read Online and Download Ebook ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS (EM PORTUGUESE DO BRASIL) BY CHOO HYUNG KIM DOWNLOAD EBOOK : ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS Click link bellow
COMO ESCREVER PARA O ENEM: ROTEIRO PARA UMA REDAçãO NOTA (PORTUGUESE EDITION) BY ARLETE SALVADOR
Read Online and Download Ebook COMO ESCREVER PARA O ENEM: ROTEIRO PARA UMA REDAçãO NOTA 1.000 (PORTUGUESE EDITION) BY ARLETE SALVADOR DOWNLOAD EBOOK : COMO ESCREVER PARA O ENEM: ROTEIRO PARA UMA SALVADOR
GUIÃO F. Grupo: Minho. 1º Momento. Intervenientes e Tempos. Descrição das actividades
GUIÃO F Prova construída pelos formandos e validada pelo GAVE, 1/7 Grupo: Minho Disciplina: Inglês, Nível de Continuação 11.º ano Domínio de Referência: Um Mundo de Muitas Culturas 1º Momento Intervenientes
Aula 16: Memória Principal e Memória Virtual
Aula 16: Memória Principal e Memória Virtual Memória Principal Performance na memória principal: Latência: Miss Penalty na Cache Access Time: tempo entre requisição e retorno de palavra Cycle Time: tempo
Remuneração, Benefícios e Relações de Trabalho: Como Reter Talentos na Organização (Série Recursos Humanos) (Portuguese Edition)
Remuneração, Benefícios e Relações de Trabalho: Como Reter Talentos na Organização (Série Recursos Humanos) (Portuguese Edition) Idalberto Chiavenato Click here if your download doesn"t start automatically
Arquitetura e Organização de Computadores 2. SISD Single Instruction, Single Data Máquinas clássicas não paralelas da arquitetura von Neumann.
Arquitetura e Organização de Computadores 2 Paralelismo em Nível de Dados Arquiteturas Vetoriais, Extensões SIMD e GPUs Taxonomia de Flynn - fluxo-de-instruções X fluxo-de-dados SISD Single Instruction,
Erros que os Pregadores Devem Evitar (Portuguese Edition)
Erros que os Pregadores Devem Evitar (Portuguese Edition) Ciro Sanches Zibordi Click here if your download doesn"t start automatically Erros que os Pregadores Devem Evitar (Portuguese Edition) Ciro Sanches
Planning for and Managing Devices in the Enterprise: Enterprise Management Suite (EMS) & On-Premises Tools (20398)
Planning for and Managing Devices in the Enterprise: Enterprise Management Suite (EMS) & On-Premises Tools (20398) Formato do curso: Presencial Localidade: Lisboa Data: 18 Dez. 2017 a 22 Dez. 2017 Preço:
Churrasco - Dando nome aos bois (Portuguese Edition)
Churrasco - Dando nome aos bois (Portuguese Edition) István Wessel Click here if your download doesn"t start automatically Churrasco - Dando nome aos bois (Portuguese Edition) István Wessel Churrasco -
DIAGNÓSTICO DE MATEMÁTICA
Não esqueça de se cadastrar no site. Não utilize nenhum rascunho, deixe todas as suas anotações registradas e informe o tempo utilizado na resolução. NOME: TEL: TEMPO UTILIZADO NA RESOLUÇÃO: 1. Macey is
PODER DO ESPIRITO SANTO, O BY BILLY GRAHAM DOWNLOAD EBOOK : PODER DO ESPIRITO SANTO, O BY BILLY GRAHAM PDF
Read Online and Download Ebook PODER DO ESPIRITO SANTO, O BY BILLY GRAHAM DOWNLOAD EBOOK : PODER DO ESPIRITO SANTO, O BY BILLY GRAHAM PDF Click link bellow and free register to download ebook: PODER DO
Desafios tecnológicos para o Projeto Observatório Logístico de Transporte
Desafios tecnológicos para o Projeto Observatório Logístico de Transporte If we have data, let s look at data. If all we have are opinions, let s go with mine. Jim Barksdale, ex-ceo AT&T e Netscape Se
PODER DO ESPIRITO SANTO, O BY BILLY GRAHAM
PODER DO ESPIRITO SANTO, O BY BILLY GRAHAM READ ONLINE AND DOWNLOAD EBOOK : PODER DO ESPIRITO SANTO, O BY BILLY GRAHAM PDF Click button to download this ebook READ ONLINE AND DOWNLOAD PODER DO ESPIRITO
Serviços: API REST. URL - Recurso
Serviços: API REST URL - Recurso URLs reflectem recursos Cada entidade principal deve corresponder a um recurso Cada recurso deve ter um único URL Os URLs referem em geral substantivos URLs podem reflectir
daily activity into three 10-minute segments if you re having difficulty finding time to exercise.
Atividade extra Questão 01 http://pt.wikipedia.org/wiki/gin%c3%a1stica Get more physical activity. Within two months of starting, frequent aerobic exercise can increase HDL cholesterol by about 5 percent
A SAGA BRASILEIRA: A LONGA LUTA DE UM POVO POR SUA MOEDA BY MIRIAM LEITAO
Read Online and Download Ebook A SAGA BRASILEIRA: A LONGA LUTA DE UM POVO POR SUA MOEDA BY MIRIAM LEITAO DOWNLOAD EBOOK : A SAGA BRASILEIRA: A LONGA LUTA DE UM POVO POR Click link bellow and free register
Placas Gerenciadoras Gráficas
As placas gráficas Matrox possuem uma excelente qualidade de imagem em resoluções de até 2560 x 1600 pixels por saída. Possuem baixo perfil, tornando mais fácil a integração nos gerenciadores gráficos
FUTEBOL EXPLICA O BRASIL: UMA HISTóRIA DA MAIOR EXPRESSãO POPULAR DO PAíS, O (PORTUGUESE EDITION) BY MARCOS GUTERMAN
Read Online and Download Ebook FUTEBOL EXPLICA O BRASIL: UMA HISTóRIA DA MAIOR EXPRESSãO POPULAR DO PAíS, O (PORTUGUESE EDITION) BY MARCOS GUTERMAN DOWNLOAD EBOOK : FUTEBOL EXPLICA O BRASIL: UMA HISTóRIA
Processamento de Alto Desempenho utilizando Unidade de Processamento Gráfico - GPU
Processamento de Alto Desempenho utilizando Unidade de Processamento Gráfico - GPU Francisco Ribacionka e Ettore Enrico (STI ) USP/STI/InterNuvem internuvem@usp.br Março -2016 Processamento de Alto Desempenho
Errors and exceptions
Errors and exceptions Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf. http://mindview.net/books/tij4 14-1 Overview Introdução Testes e Testes unitários Noção de Exceção A hierarquia
Easy Linux! FUNAMBOL FOR IPBRICK MANUAL. IPortalMais: a «brainware» company www.iportalmais.pt. Manual
IPortalMais: a «brainware» company FUNAMBOL FOR IPBRICK MANUAL Easy Linux! Title: Subject: Client: Reference: Funambol Client for Mozilla Thunderbird Doc.: Jose Lopes Author: N/Ref.: Date: 2009-04-17 Rev.:
TEN CATE. HISTOLOGIA ORAL (EM PORTUGUESE DO BRASIL) BY ANTONIO NANCI
Read Online and Download Ebook TEN CATE. HISTOLOGIA ORAL (EM PORTUGUESE DO BRASIL) BY ANTONIO NANCI DOWNLOAD EBOOK : TEN CATE. HISTOLOGIA ORAL (EM PORTUGUESE DO Click link bellow and free register to download
Placa de vídeo em CUDA
Placa de vídeo em CUDA Matheus Costa Leone de Souza Krystian Aparacido Resumo Quando você tem um cálculo que possa ser grande demais para você realizar a mão, a primeira solução que lhe vem a cabeça é
GERENCIAMENTO DA ROTINA DO TRABALHO DO DIA A DIA (PORTUGUESE EDITION) BY VICENTE FALCONI
Read Online and Download Ebook GERENCIAMENTO DA ROTINA DO TRABALHO DO DIA A DIA (PORTUGUESE EDITION) BY VICENTE FALCONI DOWNLOAD EBOOK : GERENCIAMENTO DA ROTINA DO TRABALHO DO DIA A Click link bellow and
A Bíblia do Pregador - Almeida Revista e Atualizada: Com esboços para sermões e estudos bíblicos (Portuguese Edition)
A Bíblia do Pregador - Almeida Revista e Atualizada: Com esboços para sermões e estudos bíblicos (Portuguese Edition) Sociedade Bíblica do Brasil, Editora Evangélica Esperança Click here if your download
Welcome to Lesson A of Story Time for Portuguese
Portuguese Lesson A Welcome to Lesson A of Story Time for Portuguese Story Time is a program designed for students who have already taken high school or college courses or students who have completed other
ESCREVER MELHOR: GUIA PARA PASSAR OS TEXTOS A LIMPO (PORTUGUESE EDITION) BY ARLETE SALVADOR, DAD SQUARISI
Read Online and Download Ebook ESCREVER MELHOR: GUIA PARA PASSAR OS TEXTOS A LIMPO (PORTUGUESE EDITION) BY ARLETE SALVADOR, DAD SQUARISI DOWNLOAD EBOOK : ESCREVER MELHOR: GUIA PARA PASSAR OS TEXTOS A DAD
BEM-TE-VI. LIVRO INFANTOJUVENIL.: ROMANCE GAY. (PORTUGUESE EDITION) BY MARLI PORTO
BEM-TE-VI. LIVRO INFANTOJUVENIL.: ROMANCE GAY. (PORTUGUESE EDITION) BY MARLI PORTO DOWNLOAD EBOOK : BEM-TE-VI. LIVRO INFANTOJUVENIL.: ROMANCE GAY. Click link bellow and free register to download ebook:
Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler
Análise de desempenho e eficiência energética de aceleradores NVIDIA Kepler Emilio Hoffmann, Bruno M. Muenchen, Taís T. Siqueira, Edson L. Padoin e Philippe O. A. Navaux Universidade Regional do Noroeste
DO SILêNCIO DO LAR AO SILêNCIO ESCOLAR: RACISMO, PRECONCEITO E DISCRIMINAçãO NA EDUCAçãO INFANTIL (
DO SILêNCIO DO LAR AO SILêNCIO ESCOLAR: RACISMO, PRECONCEITO E DISCRIMINAçãO NA EDUCAçãO INFANTIL ( DOWNLOAD EBOOK : DO SILêNCIO DO LAR AO SILêNCIO ESCOLAR: RACISMO, Click link bellow and free register
Arquitectura de Computadores II. Introdução
Arquitectura de Computadores II LESI - 3º Ano Introdução João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Janeiro 2002 Objectivos da disciplina e relação com outras disciplinas
Computação e Programação 2009 / 2010
Computação e Programação 2ª Aula de Problemas Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Exercícios Resolvidos [Livro 1] (Ver referências no slide 20) 3.3 Write a program to convert
Dispositivos de Entrada. Dispositivos de Entrada. Data Glove. Data Glove. Profa. M. Cristina Profa. Rosane março 2006 março 2009
Dispositivos de Entrada Dispositivos de Entrada Profa. M. Cristina Profa. Rosane março 2006 março 2009 Teclado Mouse Trackball e Spaceball Joystick Digitalizador (tablet) Touch panel Light pen Data Glove
52 MANEIRAS DE DIZER "EU TE AMO" (PORTUGUESE EDITION) BY CLENE SALLES
EDITION) BY CLENE SALLES READ ONLINE AND DOWNLOAD EBOOK : 52 MANEIRAS DE DIZER "EU TE AMO" (PORTUGUESE EDITION) BY CLENE SALLES PDF Click button to download this ebook READ ONLINE AND DOWNLOAD 52 MANEIRAS
Introdução à linguagem C++
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas
O Processador: Via de Dados e Controle
O Processador: Via de Dados e Controle Ch5A Via de Dados e Controle Implementação da arquitetura MIPS Visão simplificada de uma arquitetura monociclo Instruções de memória: lw, sw Instruções lógicas aritméticas:
periféricos: interfaces humano-computador (HCI) arquivo de informação comunicações
Introdução aos Sistemas de Computação (6) Análise de componentes num computador Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3.
GUIÃO Domínio de Referência: CIDADANIA E MULTICULTURALISMO
PROJECTO PROVAS EXPERIMENTAIS DE EXPRESSÃO ORAL DE LÍNGUA ESTRANGEIRA - 2005-2006 Ensino Secundário - Inglês, 12º ano - Nível de Continuação 1 1º Momento GUIÃO Domínio de Referência: CIDADANIA E MULTICULTURALISMO
NÚCLEO DE TECNOLOGIA EDUCACIONAL PARA A SAÚDE UNIVERSIDADE FEDERAL DO RIO DE JANEIRO
NÚCLEO DE TECNOLOGIA EDUCACIONAL PARA A SAÚDE UNIVERSIDADE FEDERAL DO RIO DE JANEIRO PROVA DE SELEÇÃO AO CURSO DE DOUTORADO EDUCAÇÃO EM CIÊNCIAS E SAÚDE PROVA DE INGLÊS O objetivo desta prova é avaliar
EGAN. FUNDAMENTOS DA TERAPIA RESPIRAT&OACUTE;RIA (EM PORTUGUESE DO BRASIL) BY CRAIG L. SCANLAN
RESPIRAT&OACUTE;RIA (EM PORTUGUESE DO BRASIL) BY CRAIG L. SCANLAN DOWNLOAD EBOOK : EGAN. FUNDAMENTOS DA TERAPIA BY CRAIG L. SCANLAN PDF Click link below and free register to download ebook: EGAN. FUNDAMENTOS
Heterogeneous multi-core computer architectures and
Heterogeneous multi-core computer architectures and Dedicated processing structures for Signal processing applications Nuno Roma Ongoing research! Heterogeneous any-core processing!
VC Series Round Vinyl Caps
1 VC Series Round Vinyl Caps (Round Vinyl Caps) Series VC Caps are extremely flexible and durable protective closures which are ideal for use as thread protectors, dust and moisture seals, pipe and stud
Turn the lead weight of data into a golden opportunity: manage it, unlock it and extract value from it
Data - Temenos https://www.temenos.com/en/solutions/technology/data/ 1 of 2 2016-03-30 16:36 Data Turn the lead weight of data into a golden opportunity: manage it, unlock it and extract value from it
FUNDAMENTOS DE ENFERMAGEM (EM PORTUGUESE DO BRASIL) BY ANNE G.^POTTER, PATRICIA A. HALL AMY M.^PERRY
Read Online and Download Ebook FUNDAMENTOS DE ENFERMAGEM (EM PORTUGUESE DO BRASIL) BY ANNE G.^POTTER, PATRICIA A. HALL AMY M.^PERRY DOWNLOAD EBOOK : FUNDAMENTOS DE ENFERMAGEM (EM PORTUGUESE DO Click link
Arquitectura e Organização de Computadores
Arquitectura e Organização de Computadores (micro-arquitectura) atributos visíveis ao programador: I.S.A. tamanho da palavra (bits) registos Componentes que realizam a arquitectura: organização do CPU
ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS (EM PORTUGUESE DO BRASIL) BY CHOO HYUNG KIM
Read Online and Download Ebook ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS (EM PORTUGUESE DO BRASIL) BY CHOO HYUNG KIM DOWNLOAD EBOOK : ATLAS DE ACUPUNTURA VETERINáRIA. CãES E GATOS Click link bellow
Arquitetura e Organização de Computadores 2
Arquitetura e Organização de Computadores 2 Escalonamento Estático e Arquiteturas VLIW Dynamic Scheduling, Multiple Issue, and Speculation Modern microarchitectures: Dynamic scheduling + multiple issue
CUIDADOS INTENSIVOS DE ENFERMAGEM (EM PORTUGUESE DO BRASIL) BY LINDA D. URDEN
Read Online and Download Ebook CUIDADOS INTENSIVOS DE ENFERMAGEM (EM PORTUGUESE DO BRASIL) BY LINDA D. URDEN DOWNLOAD EBOOK : CUIDADOS INTENSIVOS DE ENFERMAGEM (EM Click link bellow and free register to
2ª AVALIAÇÃO/ º ANO / PRÉ-VESTIBULAR PROVA 1-25/04/2015 PROVA DISCURSIVA
2ª AVALIAÇÃO/ 2015 3º ANO / PRÉ-VESTIBULAR PROVA 1-25/04/2015 PROVA DISCURSIVA ATENÇÃO! w Consulte a tabela abaixo para identificar a prova discursiva específica ao curso de sua opção. Curso com códigos
Oftalmologia Clínica (Portuguese Edition)
Oftalmologia Clínica (Portuguese Edition) Jack J. Kanski Click here if your download doesn"t start automatically Oftalmologia Clínica (Portuguese Edition) Jack J. Kanski Oftalmologia Clínica (Portuguese
GPUs : Arquitetura e Programação. Bruno Cardoso Lopes Instituto de Computação - UNICAMP
GPUs : Arquitetura e Programação Bruno Cardoso Lopes Instituto de Computação - UNICAMP Agenda Introdução Stream processors programáveis Imagine stream processor Programação para GPUs NVIDIA CUDA Conclusão
Prinfor - A sua loja de confiança
Produto Nome: Intel Pentium G4400 3,3 GHZ, 3MB Cache, LG BX80662G4400 Fabricante: Intel Preço: 64,35 Descrição Detalhes técnicos Memória da placa de vídeo do subsistema 1740 MB de gráfico Cache do processador