Making OpenCL? Simple with Haskell - AMD Developer Central
Making OpenCL? Simple with Haskell - AMD Developer Central Making OpenCL? Simple with Haskell - AMD Developer Central
PROGRAMMING KERNELS: WHAT IS A KERNEL A data-parallel function executed by each work-item kernel void square(global float* input, global float* output) { int i = get_global_id(0); output[i] = input[i] * input[i]; } Input Output 26 | Making OpenCL Simple | January, 2011 | Public get_global_id(0) = 7 6 1 1 0 9 2 4 1 1 9 7 6 8 2 2 5 36 1 1 0 81 4 16 1 1 81 49 36 64 4 4 25
PROGRAMMING KERNELS: DATA TYPES Scalar data types – char , uchar, short, ushort, int, uint, long, ulong, float – bool, intptr_t, ptrdiff_t, size_t, uintptr_t, void, half (storage) Image types – image2d_t, image3d_t, sampler_t Vector data types – Vector lengths 2, 4, 8, & 16 (char2, ushort4, int8, float16, double2, …) – Endian safe – Aligned at vector length – Vector operations 27 | Making OpenCL Simple | January, 2011 | Public Double is an optional type in OpenCL 1.0
- 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 and 20: THE BIG IDEA BEHIND OPENCL OpenCL e
- Page 21 and 22: OPENCL MEMORY MODEL •Private Memo
- Page 23 and 24: OPENCL SUMMARY __kernel void dp_mul
- Page 25: PROGRAMMING KERNELS: OPENCL C Deri
- 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
PROGRAMMING KERNELS: DATA TYPES<br />
Scalar data types<br />
– char , uchar, short, ushort, int, uint, long, ulong, float<br />
– bool, intptr_t, ptrdiff_t, size_t, uintptr_t, void, half (storage)<br />
Image types<br />
– image2d_t, image3d_t, sampler_t<br />
Vector data types<br />
– Vector lengths 2, 4, 8, & 16 (char2, ushort4, int8, float16, double2, …)<br />
– Endian safe<br />
– Aligned at vector length<br />
– Vector operations<br />
27 | <strong>Making</strong> <strong>OpenCL</strong> <strong>Simple</strong> | January, 2011 | Public<br />
Double is an<br />
optional type in<br />
<strong>OpenCL</strong> 1.0