Today we have I3 , i7 with 7 cores or 7 processors 1 master and 6 slave processors. But still present applications are not able to utilize processor’s ability to execute programming instructions parallel. to over come unexploited parallelism in present software intel and Microsoft came up with parallel studio.
Parallel programming enables software programs to take advantage of multi core processors from Intel and other processor vendors. Using Intel parallel studio we can write programs in C++,.NET, etc for intel processors.Intel parallel Building blocks PBB is collection of three programming solutions
Intel Clik plus: Clik++ Its a parallel language which is extension of C, C++.Written by MIT for Intel
Intel Threading Building Blocks TBB: is template library written in C++ to exploit power of parallelism using multi-core processors.It avoid complications arising from threading packages like POSIX threads,Windows threads,or Boost threads(in which individual threads created,synchronized and terminated manually).Library abstracts access to multiple processors.Opertions or task are allocated individual core dynamically by library’s runtime engine and by efficient use of CPU cache.A TBB program creates, synchronizes and destroys graphs of dependent tasks according to algorithms.Like in Clik or Clik++ TBB also implements “task stealing” to balance a parallel workload across available processing cores in order to increase core utilization and therefore scaling. If one core completes its work while other cores still have a significant amount of work in their queue, TBB reassigns some of the work from one of the busy cores to the idle core. This dynamic capability decouples the programmer from the machine, allowing applications written using the library to scale to utilize the available processing cores with no changes to the source code or the executable program file. TBB utilized STL heavily.
Intel Array Building Blocks ArBB : C++ library
developed by Intel for exploiting data parallel portions of programs to take advantage of multi-core processors, graphics processing units and Intel Many Integrated Core Architecture (MIC) processors.Goal of MIC is to leverage x86 legacy by creating a x86-compatible multiprocessor architecture that can utilize existing parallelization software tools. such as :
OpenMP (http://openmp.org/wp/) :OpenMP (Open Multiprocessing) is an API that supports multi-platform shared memory multiprocessing programming in C, C++. specifications: http://www.openmp.org/mp-documents/spec30.pdf though its not scalable as MPI and available on only SMP
OpenCL: Open computing language developed by Apple. is a framework for writing programs that execute across heterogeneous platforms consisting of central processing unit (CPUs), graphics processing unit (GPUs), and other processors. Academic researchers have investigated automatically compiling OpenCL programs into application-specific processors running on FPGAs
Intel Clik Plus:Intel Cilk Plus differs from Cilk and Cilk++ by adding array extensions, being incorporated in a commercial compiler (from Intel), and compatibility with existing debuggers