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 work
Performance tuning of an existing application is truly a challenge and it depends on a lot of factors like the nature of algorithm the application works on, if the implementation is scalable to take advantage of thread/data parallelism etc. The most logical approach any developer would follow for tuning the performance of an application is to do a dynamic profiling of the application under different workloads, try to analyze the hotspots in that application, and then fine tune them to work best on a given hardware architecture.