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
5646 Test 1 15-Mar-2023 01:01:41 PM
5645 Test 1 14-Mar-2023 12:26:27 PM
5644 MET 14 March 14-Mar-2023 09:42:12 AM
5643 Test 1 13-Mar-2023 12:49:03 PM
5642 Test 2 Mar13 13-Mar-2023 10:02:33 AM
5641 09-Mar-2023 04:23:35 PM
5640 CHILD SEXY 09-Mar-2023 08:09:59 AM
5639 . 08-Mar-2023 05:03:21 PM
5638 07-Mar-2023 02:03:15 PM
5637 MS 07-Mar-2023 11:21:53 AM
5636 SEXY GIRLS 06-Mar-2023 08:35:18 AM
5635 test 1 03-Mar-2023 02:35:15 PM
5634 PHD Mar 3 02-Mar-2023 09:58:42 PM
5633 MET Mar 3 02-Mar-2023 09:58:01 PM
5632 Test12 Mar 3 02-Mar-2023 09:57:18 PM
5631 Test 11 Mar3 02-Mar-2023 09:50:54 PM
5630 Test 8 Mar 3 02-Mar-2023 09:45:38 PM
5629 Test 3 Mar 3 02-Mar-2023 09:39:33 PM
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

[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