Gaussian elimination with partial pivoting is a technique used to solve a system of linear equations. It adds multiples of each row to later rows to transform the matrix into triangular matrices
Land
U. Partial pivoting technique is applied to make the algorithm stable; that is, in each elimination iteration, rows are swapped so that the leading element
A(i,i)is the largest in the leading column to prevent division by zero. A serial pseudocode is given below. In distributed memory machines data need to be partitioned and distributed to processes. In this assignment you need to use Column block cyclic partitioning for data distribution. In your implementation: Processes are organized as a one dimensional, or 1D array; Column block cyclic partitioning must be adopted for the data distribution; You need to write two MPI programs: one without loop unrolling, and the other with loop unrolling added to improve the performance: In the program without loop unrolling the block size
bin column block cyclic partitioning must be a variable to handle different block sizes asked by the user. Then your program needs to ask for matrix size
Nand block size
bas two user- defined input parameters; In the program with loop unrolling, the block size
bin column block cyclic partitioning is fixed and set to 8 , and the loop unrolling factor is set to 4 to simplify the implementation. Then your program needs to ask for matrix size
Nas one user-defined input parameter. You must submit both programs! They will be marked separately. You must use derived datatypes for process communication for the purposes of efficiency and readability; Your main programs must conduct a self-check for correctness; i.e., compare the results of a basic Gaussian elimination with partial pivoting as done in gepp_0.c and your parallel computing procedure with the same input data set.
