Making OpenCL? Simple with Haskell - AMD Developer Central
Making OpenCL? Simple with Haskell - AMD Developer Central Making OpenCL? Simple with Haskell - AMD Developer Central
AN N-DIMENSION DOMAIN OF WORK-ITEMS Global Dimensions: 1024 x 1024 (whole problem space) Local Dimensions: 128 x 128 (work group … executes together) 1024 1024 20 | Making OpenCL Simple | January, 2011 | Public Synchronization between work-items possible only within workgroups: barriers and memory fences Cannot synchronize outside of a workgroup • Choose the dimensions that are “best” for your algorithm
OPENCL MEMORY MODEL •Private Memory –Per work-item •Local Memory –Shared within a workgroup •Global/Constant Memory –Visible to all workgroups •Host Memory –On the CPU Memory management is Explicit You must move data from host -> global -> local … and back 21 | Making OpenCL Simple | January, 2011 | Public Private Memory Work- Item Workgroup Work- Item Compute Device Host Private Memory Local Memory Private Memory Work- Item Local Memory Workgroup Global/Constant Memory Host Memory Private Memory Work- Item
- Page 1 and 2: Making OpenCL Simple with Haskell B
- Page 3 and 4: AGENDA Motivation Whistle stop intr
- Page 5 and 6: OPENCL PROGRAM STRUCTURE 5 | Making
- Page 7 and 8: HELLO WORLD OPENCL C SOURCE __const
- Page 9 and 10: HELLO WORLD - HOST PROGRAM // creat
- Page 11 and 12: USING HASKELL OUR GOAL IS TO WRITE
- Page 13 and 14: LEARN FROM COMMON USES In OpenCL w
- Page 15 and 16: IT’S A HETEROGENEOUS WORLD A mod
- Page 17 and 18: OPENCL EXECUTION MODEL An OpenCL a
- Page 19: THE BIG IDEA BEHIND OPENCL OpenCL e
- Page 23 and 24: OPENCL SUMMARY __kernel void dp_mul
- Page 25 and 26: PROGRAMMING KERNELS: OPENCL C Deri
- Page 27 and 28: PROGRAMMING KERNELS: DATA TYPES Sca
- Page 29 and 30: THE BASICS - HELLO WORLD main = do
- Page 31 and 32: MAPPING OPENCL API getPlatforms ::
- Page 33 and 34: Lifting to something more in the sp
- Page 35 and 36: MOVE TO AN IMPLICIT MODEL 35 | Maki
- Page 37 and 38: CONTEXTUAL/QUEUED MONADS Function l
- Page 39 and 40: EMBEDDING MONADS In fact, the only
- Page 41 and 42: 41 | Making OpenCL Simple | January
- Page 43 and 44: HELLO WORLD REVISITED import Langua
- Page 45 and 46: REALLY WE WOULD LIKE TO WRITE impor
- Page 47 and 48: WHAT WE REALLY WANT Build a delaye
- Page 49 and 50: Issues we face using Haskell at AMD
- Page 51 and 52: USING HASKELL AT AMD Many Universi
- Page 53: DISCLAIMER The information presente
OPENCL MEMORY MODEL<br />
•Private Memory<br />
–Per work-item<br />
•Local Memory<br />
–Shared <strong>with</strong>in a workgroup<br />
•Global/Constant Memory<br />
–Visible to all workgroups<br />
•Host Memory<br />
–On the CPU<br />
Memory management is Explicit<br />
You must move data from host -> global -> local … and back<br />
21 | <strong>Making</strong> <strong>OpenCL</strong> <strong>Simple</strong> | January, 2011 | Public<br />
Private<br />
Memory<br />
Work-<br />
Item<br />
Workgroup<br />
Work-<br />
Item<br />
Compute Device<br />
Host<br />
Private<br />
Memory<br />
Local Memory<br />
Private<br />
Memory<br />
Work-<br />
Item<br />
Local Memory<br />
Workgroup<br />
Global/Constant Memory<br />
Host Memory<br />
Private<br />
Memory<br />
Work-<br />
Item