Copy and Paste  -   An Application to Copy/Paste Text  

 
S.No 5730 Name Abc Date/Time 20-Jun-2023 08:57:46 AM

Copy text from below

import numpy as np

import time

from mpi4py import MPI

 

def generate_matrices(N):

    A = np.random.randint(0, 10, (N, N))

    B = np.random.randint(0, 10, (N, N))

    return A, B

 

def sequential_matrix_multiply(A, B):

    return np.dot(A, B)

 

def parallel_matrix_multiply(A, B):

    comm = MPI.COMM_WORLD

    rank = comm.Get_rank()

    size = comm.Get_size()

 

    N = A.shape[0]

 

    # Scatter matrix A to all other processes

    local_A = np.zeros((N // size, N), dtype=np.int)

    local_A = np.array_split(A, size)[rank]

    comm.Scatter(A, local_A, root=0)

 

    # Scatter matrix B to all processes

    local_B = np.zeros((N, N), dtype=np.int)

    comm.Scatter(B, local_B, root=0)

 

    # Perform local matrix multiplication

    local_C = np.dot(local_A, local_B)

 

    # Gather the results from all processes

    global_C = np.zeros((N, N), dtype=np.int)

    comm.Allgather(local_C, global_C)

 

    return global_C

 

# Step 1: Matrix Generation

N = 100  # Change the matrix size as needed

A, B = generate_matrices(N)

 

# Step 2: Sequential Matrix Multiplication

start_time = time.time()

sequential_result = sequential_matrix_multiply(A, B)

sequential_time = time.time() - start_time

 

# Step 3: MPI Initialization

comm = MPI.COMM_WORLD

rank = comm.Get_rank()

size = comm.Get_size()

 

# Print the received portion of matrix A on each process

print(f"Process {rank} received matrix A:\n{A}")

 

# Print the received portion of matrix B on each process

print(f"Process {rank} received matrix B:\n{B}")

 

# Step 4: Matrix Multiplication

start_time = time.time()

parallel_result = parallel_matrix_multiply(A, B)

parallel_time = time.time() - start_time

 

# Step 5: MPI Reduce

comm.Reduce(sequential_result, parallel_result, op=MPI.SUM, root=0)

 

# Step 6: Performance Analysis

if rank == 0:

    print(f"Sequential time: {sequential_time} seconds")

    print(f"Parallel time: {parallel_time} seconds")

    print("Sequential result:")

    print(sequential_result)

    print("Parallel result:")

    print(parallel_result)





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