Your task is to compute the product of two n by n matrixes a and b, a X b, by implementing the above algorithm using p computers to a structure of circular pipeline parallelism (see Figure 9.5 in textbook). In your implementation, the computation of Phase 1 can be carried out by an initiator process that accepts two matrixes a and b and convert them into a’ and b’ locally. Process Initiator will then send the blocks of a’ and b’ to p computers. Every computer hosts process Worker that has three m by m matrixes ak’, bk’ and ck, where m=n/(squarerootP) k = 1, 2, …, p. In Phase 2, processes Workerk will have to communicate with each other and carry out matrix shifting. You are required to use Java socket. Other TCP-based communication mechanisms can be accepted upon approval. Your program should be configurable with respect to n and p.
Utility code for matrix computation and sample code of implementation of matrix shift by socket communication are given in [url removed, login to view]