Copy and Paste  -   An Application to Copy/Paste Text  

 
S.No 5729 Name Lab Date/Time 20-Jun-2023 08:53:25 AM

Copy text from below
import numpy as np
from mpi4py import MPI
import time

def sequential_matrix_multiplication(A, B):
    return np.dot(A, B)

def print_matrix(matrix):
    for row in matrix:
        for element in row:
            print("{:.2f}".format(element), end="\t")
        print()

def generate_random_matrix(size):
    return np.random.rand(size, size)

if __name__ == "__main__":
    # Step 1: Matrix Generation
    matrix_sizes = [100, 200, 400, 800]
    A_matrices = []
    B_matrices = []

    for size in matrix_sizes:
        A = generate_random_matrix(size)
        B = generate_random_matrix(size)
        A_matrices.append(A)
        B_matrices.append(B)

    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()
    size = comm.Get_size()

    for i in range(len(matrix_sizes)):
        N = matrix_sizes[i]
        A = A_matrices[i]
        B = B_matrices[i]

        if rank == 0:
            print(f"Matrix size: {N} x {N}")

        comm.Barrier()

        if rank == 0:
            # Step 2: Sequential Matrix Multiplication
            start_time = time.time()
            C_seq = sequential_matrix_multiplication(A, B)
            end_time = time.time()

            if rank == 0:
                print("Sequential Matrix Multiplication:")
                print_matrix(C_seq)
                print(f"Execution Time: {end_time - start_time} seconds")
                print()

        comm.Barrier()

        if rank == 0:
            print(f"Parallel Matrix Multiplication using {size} processes:")

        comm.Barrier()

        # Step 3: MPI Scatter
        local_A = np.zeros((N // size, N), dtype=np.float64)
        comm.Scatter(A, local_A, root=0)

        if rank == 0:
            print(f"Process {rank} - Local A:")
            print_matrix(local_A)
            print()

        local_B = np.zeros((N, N // size), dtype=np.float64)
        comm.Scatter(B, local_B, root=0)

        if rank == 0:
            print(f"Process {rank} - Local B:")
            print_matrix(local_B)
            print()

        comm.Barrier()

        # Step 4: Matrix Multiplication
        local_C = np.dot(local_A, local_B)

        if rank == 0:
            print(f"Process {rank} - Local C:")
            print_matrix(local_C)
            print()

        comm.Barrier()

        # Step 5: MPI Reduce
        C = np.zeros((N, N), dtype=np.float64)
        comm.Reduce(local_C, C, op=MPI.SUM, root=0)

        if rank == 0:
            print("Parallel Matrix Multiplication:")
            print_matrix(C)
            print()

        comm.Barrier()

    if rank == 0:
        # Step 6: Performance Analysis
        num_processes = [2, 4, 6, 8]

        for i in range(len(matrix_sizes)):
            N = matrix_sizes[i]
            A = A_matrices[i]
            B = B_matrices[i]

            print(f"Matrix size: {N} x {N}")

            for num_procs in num_processes:
                if num_procs > size:
                    continue

                comm.Barrier()

                print(f"Parallel Matrix Multiplication using {num_procs} processes:")

                comm.Barrier()

                start_time = time.time()
                C_parallel = parallel_matrix_multiplication(A, B, num_procs, comm)
                end_time = time.time()

                if rank == 0:
                    print("Parallel Matrix Multiplication:")
                    print_matrix(C_parallel)
                    print(f"Execution Time: {end_time - start_time} seconds")
                    print()

                comm.Barrier()




comments powered by Disqus
NEW ENTRIES
S.No Name Entry Time/Date
5628 Test 2 Mar 3 02-Mar-2023 09:34:35 PM
5627 Test 1 Mar 3 02-Mar-2023 09:31:07 PM
5626 Test 8 Mar 2 01-Mar-2023 07:58:21 PM
5625 Test 3 Mar 2 01-Mar-2023 07:57:36 PM
5624 Test 2 Mar 2 01-Mar-2023 07:56:55 PM
5623 Test 1 Mar 2 01-Mar-2023 07:56:17 PM
5622 MET March 1 28-Feb-2023 09:28:19 PM
5621 Test 5 Mar1 28-Feb-2023 09:24:26 PM
5620 Test3 Mar 1 28-Feb-2023 09:21:50 PM
5619 Test2 March1 28-Feb-2023 09:16:47 PM
5618 Test 1 Mar1 28-Feb-2023 08:35:23 PM
5617 Test 2 F28 28-Feb-2023 10:33:02 AM
5616 Test 2 Feb28 28-Feb-2023 10:22:59 AM
5615 SEXY HOT 28-Feb-2023 08:45:07 AM
5614 Test 1 Feb28 27-Feb-2023 09:41:28 PM
5613 PHD 24-Feb-2023 10:41:13 AM
5612 Test1 Feb24 23-Feb-2023 10:07:55 PM
5611 PHD 23-Feb-2023 06:39:41 PM
5610 online test 23-Feb-2023 10:37:21 AM
5609 MET 23 FEB 23-Feb-2023 10:04:42 AM
5608 Test 1 Feb23 22-Feb-2023 11:21:15 PM
5607 Test1Feb22 21-Feb-2023 03:12:58 PM
5606 PPSL 21-Feb-2023 03:11:57 PM
5605 PNG 21-Feb-2023 03:11:39 PM
5604 PCB 21-Feb-2023 03:11:28 PM
5603 PAK 21-Feb-2023 03:11:19 PM
5602 PPG 21-Feb-2023 03:11:03 PM
5601 PQR 21-Feb-2023 03:10:54 PM
5600 PPLGC 21-Feb-2023 03:10:44 PM
5599 PPKL 21-Feb-2023 03:10:36 PM

[First] [Prev] 11 | 12 [Next] [Last]
 
web counter
web counter


To report any error messages or bugs, or other issues, please send email at: info@pakproject.com