anchor.diff:  Image Generator
   ===============
   
  -This project at its core is a System Programming example, demonstrating the use
  +This project is at its core a System Programming example, demonstrating the use
   of shared memory, semaphores, signal handling and pthreads in c.
   It consist of an "ImageWriter" program and a "PixelGenerator" program.
  -The "PixelGenerator" continuously calculates images of the mandelbrot set and
  +The "PixelGenerator" continuously calculates images of the Mandelbrot set and
   writes them into a shared memory segment. The "ImageWriter" program reads the
  -image out of the shared memory segment and stores the image in a P6 ppm file.
  +image data out of the shared memory segment and stores the image in a P6 ppm
  +file.
   
   The shared memory segment can hold one image at a time. The "PixelGenerator" and
   "ImageWriter" are synchronized by semaphores to avoid simultaneous access of
   the shared memory segment.
   
  -The "PixelGenerator" generates an image of the mandelbrot set an alters
  +The "PixelGenerator" generates an image of the Mandelbrot set an alters
   start parameters each time a new images is calculated to zoom into a section
  -of the mandelbrot set.
  -
  -The computation of the mandelbrot set can be done by multiple threads.
  +of the Mandelbrot set.
  +
  +The computation of the Mandelbrot set can be done by multiple threads.
   The number of threads to process the image, as well as the width and height
   of the image can be changed.
  -Depending on the number of threads the computation of one image is split on
  -several threads. For example: If the number of threads is set to 4, every thread
  -generates a quarter of the image. If image width is set to 800- and image height
  -to 600 pixels, thread number one will calculated image row 0 to 149,
  -thread number two will process line 150 to 299, thread three 300 - 449 and
  +Depending on the specified number of threads the computation of one image is
  +either done by one thread or split on several threads.
  +For example: If the number of threads is set to 4,
  +every thread generates a quarter of the image. If image width is set to 800- and
  +image height to 600 pixels, thread number one will calculated image row 0 to
  +149, thread number two will process line 150 to 299, thread three 300 - 449 and
   thread four row 450 to 599.
   
   This project has been extended to use the OpenMP library or the OpenCL framework
  
positive.code: 
  == Version
  
  *1.1*
  
  NOTE: After having been introduced to pthreads, OpenMP, OpenCL, SIMD this has
  been a first attempt of implementing them to improve the performance of
  the image generation. The implementation is mostly try and error and for that
  matter should not be viewed as the right way to do so.
  
  == Changelog
  
  *Version 1.1*
  Split OpenCL setup (creating context, building program, kernel) and
  execution of the kernel (calculating the mandelbrot set, generating the image)
  into separate functions (setup_OpenCL() and generate_image()) to avoid
  rebuilding the same OpenCL kernel after every image calculation and wasting
  CPU time.
  
  *Version 1.0*
  Initial Release
  
  == Usage
  
  
negative.code: 
  === link:3_Image-Generator_OpenCL[3_Image-Generator_OpenCL]
  
  On OSX OpenCL works out of the box. If you want to run this on Linux you
  will need the OpenCL headers and library to compile the code and the
  OpenCL driver runtime to be able to run the executable.
  For that purpose you could install the
  