For this assignment you need to write a parallel program in C++ using OpenMP for vector addition. Assume A, B, C are three vectors of equal length. The program will add the corresponding elements of vectors A and B and will store the sum in the corresponding elements in vector C (in other words C[i] = A[i] + B[i]). Every thread should execute approximately equal number of loop iterations. The only OpenMP directive you are allowed to use is: #pragma omp parallel num threads (no of threads) The program should take n and the number of threads to use as command line arguments: ./parallel vector addition Where n is the length of the vectors and threads is the number of threads to be created. Pseudocode for Assignment // starting index for the individual thread mystart+n/p; // ending index for the individual thread for (i = mystart; i < myend; i++) // each thread computes local sum mystart myid*n/p; %3D myend do vector addition // and later all local sums combined

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Please code using openmp 

As an input vector A, initialize its size to 10,000 and elements from 1 to 10,000.
So, A[0] = 1, A[1] = 2, A[2] = 3, ... , A[9999] = 10000.
Input vector B will be initialized to the same size with opposite inputs.
So, B[0] = 10000, B[1] = 9999, B[2] = 9998, ... , B[9999] = 1
Using above input vectors A and B, create output Vector C which will be computed as
C[i] = A[ i] + B[ i ];
You should check whether your output vector value is 10001 in every C[i].
First, start with 2 threads (each thread adding 5,000 vectors), and then do with 4,and and 8
threads. Remember sometimes your vector size can not be divided equally by number of threads.
You need to slightly modify pseudo code to handle the situation accordingly. (Hint: If you have p
threads, first (p - 1) threads should have equal number of input size and the last thread will take
care of whatever the remainder portion.) Check the running time from each experiment and
compare the result. Report your findings from this project in a separate paragraph.
Your output should show team of treads do evenly distributed work, but big vector size might
cause an issue in output. You can create mini version of original vector in much smaller size of
100 (A[0] = 1, A[1] = 2, A[2] = 3, .. , A[99] = 100) and run with 6 threads once and take a snap
shop of your output. And run with original size with 2, 4, and 8 threads to compare running times.
Transcribed Image Text:As an input vector A, initialize its size to 10,000 and elements from 1 to 10,000. So, A[0] = 1, A[1] = 2, A[2] = 3, ... , A[9999] = 10000. Input vector B will be initialized to the same size with opposite inputs. So, B[0] = 10000, B[1] = 9999, B[2] = 9998, ... , B[9999] = 1 Using above input vectors A and B, create output Vector C which will be computed as C[i] = A[ i] + B[ i ]; You should check whether your output vector value is 10001 in every C[i]. First, start with 2 threads (each thread adding 5,000 vectors), and then do with 4,and and 8 threads. Remember sometimes your vector size can not be divided equally by number of threads. You need to slightly modify pseudo code to handle the situation accordingly. (Hint: If you have p threads, first (p - 1) threads should have equal number of input size and the last thread will take care of whatever the remainder portion.) Check the running time from each experiment and compare the result. Report your findings from this project in a separate paragraph. Your output should show team of treads do evenly distributed work, but big vector size might cause an issue in output. You can create mini version of original vector in much smaller size of 100 (A[0] = 1, A[1] = 2, A[2] = 3, .. , A[99] = 100) and run with 6 threads once and take a snap shop of your output. And run with original size with 2, 4, and 8 threads to compare running times.
For this assignment you need to write a parallel program in C++ using OpenMP for vector
addition. Assume A, B, C are three vectors of equal length. The program will add the
corresponding elements of vectors A and B and will store the sum in the corresponding
elements in vector C (in other words C[i] = A[i] + B[i]). Every thread should execute
approximately equal number of loop iterations. The only OpenMP directive you are allowed to
use is:
#pragma omp parallel num threads (no of threads)
The program should take n and the number of threads to use as command line arguments:
. /parallel vector addition <n> <threads>
Where n is the length of the vectors and threads is the number of threads to be created.
Pseudocode for Assignment
// starting index for the individual thread
mystart+n/p; // ending index for the individual thread
mystart; i < myend; i++) // each thread computes local sum
// and later all local sums combined
mystart
myid*n/p;
myend
for (i
=
do vector addition
Transcribed Image Text:For this assignment you need to write a parallel program in C++ using OpenMP for vector addition. Assume A, B, C are three vectors of equal length. The program will add the corresponding elements of vectors A and B and will store the sum in the corresponding elements in vector C (in other words C[i] = A[i] + B[i]). Every thread should execute approximately equal number of loop iterations. The only OpenMP directive you are allowed to use is: #pragma omp parallel num threads (no of threads) The program should take n and the number of threads to use as command line arguments: . /parallel vector addition <n> <threads> Where n is the length of the vectors and threads is the number of threads to be created. Pseudocode for Assignment // starting index for the individual thread mystart+n/p; // ending index for the individual thread mystart; i < myend; i++) // each thread computes local sum // and later all local sums combined mystart myid*n/p; myend for (i = do vector addition
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Adobe Flash
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education