There are several ways of designing a parallel algorithm. The most widely used techniques are portioning, divide and conquer, pipelining etc. in partitioning, a problem is divided into sub-problems of nearly equal size which will be non-overlapping. The sub-problems will be then solved concurrently. In divide and conquer the problem will be broken first into sub-problems. The sub-problem will be solved recursively and the result of the sub-problems merged at the end. Pipelining is the simple but good technique for parallel algorithm