Matt Sandy Program Manager Microsoft Corporation
Matt Sandy Program Manager Microsoft Corporation Many-Core Systems Today What is DirectCompute? Where does it fit? Design of DirectCompute Language, Execution Model, Memory Model… Tutorial – Hello DirectCompute Tutorial – Constant Buffers Performance Considerations Tutorial – Thread Groups Tutorial – Shared Memory SIMD SIMD SIMD SIMD CPU0 CPU1 SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD CPU2 CPU3 SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD SIMD L2 Cache L2 Cache CPU GPU APU CPU ~10 GB/s GPU 50 GFLOPS 2500 GFLOPS ~10 GB/s ~100 GB/s CPU RAM GPU RAM 4-6 GB 1 GB x86 SIMD 50 GFLOPS 500 GFLOPS ~10 GB/s System RAM Microsoft’s GPGPU Programming Solution API of the DirectX Family Component of the Direct3D API Technical Computing, Games, Applications Media Playback & Processing, etc. C++ AMP, Accelerator, Brook+, Domain Domain D3DCSX, Ct, RapidMind, MKL, Libraries Languages ACML, cuFFT, etc. Compute Languages DirectCompute, OpenCL, CUDA C, etc. Processors APU, CPU, GPU, AMD, Intel, NVIDIA, S3, etc. Language and Syntax DirectCompute code written in “HLSL” High-Level Shader Language DirectCompute functions are “Compute Shaders” Syntax is C-like, with some exceptions Built-in types and intrinsic functions No pointers Compute Shaders use existing memory resources Neither create nor destroy memory Execution Model Threads are bundled into Thread Groups Thread Group size is defined in the Compute Shader numthreads attribute Host code dispatches Thread Groups, not threads z 0,0,1 1,0,1 2,0,1 3,0,1 4,0,1 5,0,1
[Show full text]