Some technical terms from OpenCL:

A. Work item = the basic unit of work on an OpenCL device. In our case, the
calculations to obtain useful measures of Guinea-Bissau.
B. Kernel = the code for a work item. A C function which will be compiled .
C. Program = a collection of kernels
D. Context = devices (GPUs); memories and caches; and command queues

Other applications will surely want or need to do disjoint tasks in parallel.
Here we will be working with data in parallel - doing the same calculations on
different data. There are four immediate considerations:
Prior Click here
Next Click here
Next Nabro Click here
Next Maputo Click here
Next Gabon Click here
Next Iran Click here
1. OpenCL does not support headers, function pointers and recursion. We don't recommend variable          
     length fields. There are specialized routines for image manipulation and mathematics.
2. Your code will need the __kernel qualifier and likely vec_type_hint() or work_group_size_hint()
3. It is difficult to direct execution order and usually dangerous to try.
4. Moving data from disk to traditional (CPU-managed) RAM to the video memory takes time and cycles.
  It is important to consider that it may actually be more efficient to stay in one language and compiler,
  save the transfer costs and simply do the work on the CPU(s). There's also a consideration that the
  GPUs may be better used to fulfill their original purpose of rendering images.   

First things first: once an SDK is chosen and installed, it is useful to do a brain-warmer by asking what
platforms are present and what devices are available.