Question

# For this assignment, you need to write a parallel program in C++ using OpenMP for vector...

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 an approximately equal number of loop iterations. The only OpenMP directive you are allowed to use is:

The program should take n and the number of threads to use as command-line arguments:

Where n is the length of the vectors and threads is the number of threads to be created.

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 the 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 ].

Your output should show a team of treads does evenly distributed work, but a 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 snapshot of your output. And run with original size with 2, 4, and 8 threads to compare running times.

Pseudocode for Assignment:

mystart = myid*n/p; // starting index for the individual thread

myend = mystart+n/p; // ending index for the individual thread

for (i = mystart; i < myend; i++) // each thread computes local sum

do vector addition // and later all local sums combined

#include<iostream>
#include <omp.h>
#include<vector>
#include<bits/stdc++.h>
using namespace std;

int main(){

#pragma omp parallel

{

vector<int> a(n);
vector<int> b(n);
vector<int> c(n);
int t= 1;
for(int i=0;i<n;i++){
a[i] = t;
b[i] = t;
t++;
}
cout<<endl;
reverse(b.begin(), b.end());
for(int i=0;i<n;i++){
}
cout<<endl;
int check = n+1;
for(int i=0;i<n;i++){
c[i] = a[i]+b[i];
if(c[i] == check){
cout<<c[i]<<" "<<"Yes"<<endl;
}
else{
cout<<c[i]<<" "<<"NO"<<endl;
}
}
}

return 0;
}