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. %3D 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 %3D %3D %3D 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 thre You need to slightly modify pseudo code to handle the situation accordingly. (Hint: If you have threads, first (p - 1) threads should have equal number of input size and the last thread will ta 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.

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
In C++
### Parallel Computation with Vectors

**Creating Input Vectors:**

- **Vector A:** Initialize with integers from 1 to 10,000.

  \[
  A[0] = 1, \, A[1] = 2, \, A[2] = 3, \ldots, A[9999] = 10000
  \]

- **Vector B:** Initialize with integers from 10,000 down to 1.

  \[
  B[0] = 10000, \, B[1] = 9999, \, B[2] = 9998, \ldots, B[9999] = 1
  \]

**Output Vector C Calculation:**

- Compute each element of Vector C by adding corresponding elements from Vectors A and B:

  \[
  C[i] = A[i] + B[i]
  \]

- Ensure each element of Vector C equals 10,001.

**Multithreading Approach:**

1. **Start with 2 threads**: Each thread processes 5,000 elements.
2. **Increase to 4 and 8 threads**: Consider uneven division of workload.
3. **Handling Remaining Elements**: If total elements can't be evenly divided among threads:

   - Adjust pseudocode to allocate remaining work to the last thread.
   - For \( p \) threads, assign \((p - 1)\) threads equal elements, and the last thread handles the remainder.

4. **Performance Measurement**: Record and compare execution times for varying thread counts.

**Note on Vector Size:**

- Reducing vector size might affect workload distribution:
  - Create a smaller vector, e.g., length 100.
  - Test with 6 threads.
  - Capture and analyze results.

This experiment aims to explore how parallel processing with different thread counts affects performance and outcome consistency.
Transcribed Image Text:### Parallel Computation with Vectors **Creating Input Vectors:** - **Vector A:** Initialize with integers from 1 to 10,000. \[ A[0] = 1, \, A[1] = 2, \, A[2] = 3, \ldots, A[9999] = 10000 \] - **Vector B:** Initialize with integers from 10,000 down to 1. \[ B[0] = 10000, \, B[1] = 9999, \, B[2] = 9998, \ldots, B[9999] = 1 \] **Output Vector C Calculation:** - Compute each element of Vector C by adding corresponding elements from Vectors A and B: \[ C[i] = A[i] + B[i] \] - Ensure each element of Vector C equals 10,001. **Multithreading Approach:** 1. **Start with 2 threads**: Each thread processes 5,000 elements. 2. **Increase to 4 and 8 threads**: Consider uneven division of workload. 3. **Handling Remaining Elements**: If total elements can't be evenly divided among threads: - Adjust pseudocode to allocate remaining work to the last thread. - For \( p \) threads, assign \((p - 1)\) threads equal elements, and the last thread handles the remainder. 4. **Performance Measurement**: Record and compare execution times for varying thread counts. **Note on Vector Size:** - Reducing vector size might affect workload distribution: - Create a smaller vector, e.g., length 100. - Test with 6 threads. - Capture and analyze results. This experiment aims to explore how parallel processing with different thread counts affects performance and outcome consistency.
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] = 10,000.

Input vector B will be initialized to the same size with opposite inputs.

So, B[0] = 10,000, B[1] = 9,999, B[2] = 9,998, ..., 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 10,001 in every C[i].

First, start with 2 threads (each thread adding 5,000 vectors), and then do with 4, and 8 threads. Remember sometimes your vector size cannot be divided equally by the 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 teams of threads 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 snapshot 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] = 10,000. Input vector B will be initialized to the same size with opposite inputs. So, B[0] = 10,000, B[1] = 9,999, B[2] = 9,998, ..., 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 10,001 in every C[i]. First, start with 2 threads (each thread adding 5,000 vectors), and then do with 4, and 8 threads. Remember sometimes your vector size cannot be divided equally by the 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 teams of threads 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 snapshot of your output. And run with original size with 2, 4, and 8 threads to compare running times.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Function Arguments
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