Parallel programming or parrelel computing is the concurrent use of multiple compute resources to resolve a specified problem. Parallel program always comprises of concurrently executing processes, problem decomposition relates to the manner in which such processes are formulated. This categorization can also be termed to as algorithmic skeletons or parallel programming paradigms. The fundamental two catagorizations in parallel programming paradigms are task decomposition and data decomposition.