Improving Averaging Filter Performance Using Intel® Cilk™ Plus

Intel® Cilk™ Plus is an extension to the C and C++ languages to support data and task parallelism.  It provides three new keywords to implement task parallelism and  Array Notation, simd pragma and Elemental Function to express data parallelism.  This article demonstrates how to improve the performance of an Averaging Filter in image processing using Intel Cilk Plus.  To demonstrate the performance increase, you will use a program that reads a bitmap RGB image and does averaging with a filter of size 3x3.  Averaging filter works by averaging the pixel values found in the immediate neighborhood of the current pixel. The immediate neighborhood means neighbors in all 8 directions which are 1 unit distance away from the current pixel. For further reading, please click here.