Copy and Paste  -   An Application to Copy/Paste Text  

 
S.No 5740 Name jj assigment Date/Time 11-Jul-2023 08:43:20 AM

Copy text from below

from mpi4py import MPI
import numpy as np
import time

# Function to perform matrix multiplication
def matrix_multiply(a, b):
    rows_a, cols_a = a.shape
    rows_b, cols_b = b.shape

    if cols_a != rows_b:
        raise ValueError("Cannot perform matrix multiplication. Invalid dimensions.")

    result = np.zeros((rows_a, cols_b), dtype=np.float32)

    for i in range(rows_a):
        for j in range(cols_b):
            for k in range(cols_a):
                result[i, j] += a[i, k] * b[k, j]

    return result


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

# Matrix size
matrix_sizes = [100, 200, 400, 800]

for size in matrix_sizes:
    # Create matrices on process 0
    if rank == 0:
        a = np.random.rand(size, size).astype(np.float32)
        b = np.random.rand(size, size).astype(np.float32)
    else:
        a = None
        b = None

    # Scatter the matrices to all processes
    a = comm.scatter(a, root=0)
    b = comm.scatter(b, root=0)

    # Perform local matrix multiplication
    local_result = matrix_multiply(a, b)

    # Gather all local results on process 0
    result = comm.gather(local_result, root=0)

    # Combine the results on process 0
    if rank == 0:
        final_result = np.sum(result, axis=0)

        # Print the result if desired
        # print(final_result)

# Measure and compare execution times
if rank == 0:
    sequential_times = []
    parallel_times = []

    for size in matrix_sizes:
        # Sequential matrix multiplication
        a = np.random.rand(size, size).astype(np.float32)
        b = np.random.rand(size, size).astype(np.float32)

        start_time = time.time()
        sequential_result = matrix_multiply(a, b)
        end_time = time.time()
        sequential_times.append(end_time - start_time)

        # Parallel matrix multiplication
        start_time = time.time()
        # Create matrices on process 0
        a = np.random.rand(size, size).astype(np.float32)
        b = np.random.rand(size, size).astype(np.float32)

        # Scatter the matrices to all processes
        a = comm.scatter(a, root=0)
        b = comm.scatter(b, root=0)

        # Perform local matrix multiplication
        local_result = matrix_multiply(a, b)

        # Gather all local results on process 0
        result = comm.gather(local_result, root=0)

        # Combine the results on process 0
        final_result = np.sum(result, axis=0)
        end_time = time.time()
        parallel_times.append(end_time - start_time)

    # Print the execution times
    print("Sequential Execution Times:", sequential_times)
    print("Parallel Execution Times:", parallel_times)





comments powered by Disqus
NEW ENTRIES
S.No Name Entry Time/Date
5931 1111 23-Apr-2024 03:54:24 PM
5930 Savvy Cats 23-Apr-2024 06:52:03 AM
5929 listoclassob 22-Apr-2024 01:21:06 PM
5928 listofmap 22-Apr-2024 01:11:05 PM
5927 arrow inarro 22-Apr-2024 12:41:59 PM
5926 missing 21-Apr-2024 02:53:32 PM
5925 list of maps 16-Apr-2024 03:03:57 PM
5924 Micro 3 16-Apr-2024 11:57:26 AM
5923 Micro2 16-Apr-2024 11:53:20 AM
5922 Micro 16-Apr-2024 11:53:04 AM
5921 VRSefy 14-Apr-2024 06:56:37 PM
5920 Rogers Landw 08-Apr-2024 02:57:52 PM
5919 Frank Family 29-Mar-2024 03:50:35 PM
5918 Google Drive 27-Mar-2024 11:09:57 AM
5917 Google Drive 27-Mar-2024 10:41:56 AM
5916 google drive 25-Mar-2024 10:38:06 AM
5915 Stucco Champ 20-Mar-2024 10:55:56 PM
5914 B Physical 19-Mar-2024 10:52:02 AM
5913 guaranteelnc 12-Mar-2024 07:49:53 PM
5912 Spectrum Ele 12-Mar-2024 07:47:54 PM
5911 Spectrum 12-Mar-2024 01:30:08 PM
5910 Dr. Osman 11-Mar-2024 11:41:59 AM
5909 CHILD HOT 09-Mar-2024 08:02:39 AM
5908 H.-0-.T Vid 05-Mar-2024 08:20:33 AM
5907 Beyounce 04-Mar-2024 03:18:28 PM
5906 axiomintegra 03-Mar-2024 12:55:47 PM
5905 Comfort Ride 29-Feb-2024 04:03:14 PM
5904 David\'s RV P 26-Feb-2024 11:15:44 AM
5903 Child HOT 22-Feb-2024 06:43:26 AM
5902 Dumpsterfl 20-Feb-2024 01:33:22 PM

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 [Next] [Last]
 
web counter
web counter


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