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:
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.