Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Q4. [20 marks] Develop a C function that returns an int* pointer to a vector A initialized as A[i] = i, or returns NULL if

image text in transcribed

Q4. [20 marks] Develop a C function that returns an int* pointer to a vector A initialized as A[i] = i, or returns NULL if the function fails. Write the sequential code for the function. Use the header: int* vecCreate (int size) Write the OpenMP. implementation of the function. Use the header: int* veccreateOpenMPlint size, int num thread) Here, you will try to speed up the vector initialization by dividing the work among several threads where each thread will initialize a segment of the vector. For example, if num thread = 2 and size = 10, thread O will initialize elements 0 to 4 and thread 1 will initialize elements 5 to 9. Using #pragma omp parallel num threadsinnum thread ). Your code should be similar to Version 1 of the Trapezoid Area Calculation example from the lecture notes. Your function should only work if the vector size is divisible by the number of threads. If not, your function should display an error message and return NULL. Test both functions with a 50-million element vector (and 4 threads for the second function). Your test code should print the value of the last element in the vector along with the time taken for each function to complete. Report the results as a comment in your code. Sample run 1: (successful) Using serial code [49999999] = 49999999 Time: 144.00 ms. Using OpenMP, with 4 threads: [49999999] = 49999999 Time: 59.00 ms. Sample run 2: (num thread not divisible by size) Using serial code [49999999] = 49999999 Time: 144.00 ms Using Openme. with 3 threads: Error: number of threads must be divisible by vector size. Sample run 3: (unsuccessful memory allocation) Not enough memory. Not enough memory. Marking: +5 for serial code, +10 for parallel code, +5 for the test code. Up to -4 marks for not handling errors. Q4. [20 marks] Develop a C function that returns an int* pointer to a vector A initialized as A[i] = i, or returns NULL if the function fails. Write the sequential code for the function. Use the header: int* vecCreate (int size) Write the OpenMP. implementation of the function. Use the header: int* veccreateOpenMPlint size, int num thread) Here, you will try to speed up the vector initialization by dividing the work among several threads where each thread will initialize a segment of the vector. For example, if num thread = 2 and size = 10, thread O will initialize elements 0 to 4 and thread 1 will initialize elements 5 to 9. Using #pragma omp parallel num threadsinnum thread ). Your code should be similar to Version 1 of the Trapezoid Area Calculation example from the lecture notes. Your function should only work if the vector size is divisible by the number of threads. If not, your function should display an error message and return NULL. Test both functions with a 50-million element vector (and 4 threads for the second function). Your test code should print the value of the last element in the vector along with the time taken for each function to complete. Report the results as a comment in your code. Sample run 1: (successful) Using serial code [49999999] = 49999999 Time: 144.00 ms. Using OpenMP, with 4 threads: [49999999] = 49999999 Time: 59.00 ms. Sample run 2: (num thread not divisible by size) Using serial code [49999999] = 49999999 Time: 144.00 ms Using Openme. with 3 threads: Error: number of threads must be divisible by vector size. Sample run 3: (unsuccessful memory allocation) Not enough memory. Not enough memory. Marking: +5 for serial code, +10 for parallel code, +5 for the test code. Up to -4 marks for not handling errors

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Driven Web Sites

Authors: Mike Morrison, Joline Morrison

1st Edition

061901556X, 978-0619015565

Students also viewed these Databases questions

Question

Why are cash and cash equivalents listed first on a balance sheet?

Answered: 1 week ago

Question

8. Identify the meeting with the goddess in The Elephant Man.

Answered: 1 week ago

Question

Describe the five elements of the listening process.

Answered: 1 week ago