File Edit Selection View Go Run Terminal Help C SequentialBucketSort.c 4 X O Search 88 08 23 j 24 25 26 C: > parallel > parallel > C Sequential BucketSort.c > ... void sort(int d[]) { 12 15 18 for (j = d[0]; j > 1; j--) { for (k = 1; k < j; k++) { /* swap d[j] and d[max_index] */ temp = d[j]; d[j] = max; 27 d[max_index] = temp; A 29 30 28 } return; ({) 31 } 32 33 main() { 34 /* generate n random integers in [0, m-1] to be sorted */ 35 36 37 38 39 data[i] = rand() % m; 40 41 42 43 44 45 46 47 } 48 49 50 /* for better speed-up of its parallel version, read Appendic C on Page 540 to use "seqoff" and "seqon" statements to exclude running time for such sequential code not int v, b_i, index; for (i = 1; i <= n; i++) for (i = 1; i <= n; i++) { v = data[i]; b_i = (int)(v/10.0); /* bucket-index = the 10th digit */ /* cout << v << ": " << b_i << "; " << endl; */ index = ++bucket[b_i][0]; /* find index of first unused box for v; */ bucket [b_i][index] = v; for (i = 0; i <= 9; i++) sort (bucket[i]); 51 52 int k = 1; 53 54 55 for (i = 0; i <= 9; i++) for (j = 1; j < bucket[i][0]; j++) sortedData[k++] = bucket[i][j]; 56 57 k--; 58 for (i = 1; i <= k; i++) 59 cout << "d[" ‹‹ i ‹‹ "]=" «< sortedData[i] << endl; 60 } Launchpad 4A0 Live Share Ln 1, Col 1 Tab Size: 4 UTF-8 CRLF {ò c 88 Win32 B (૬) File Edit Selection View Go Run Terminal Help C SequentialBucketSort.c 4 X C: > parallel > parallel > C SequentialBucketSort.c > ... 1 /* Sequential bucket sort of n integers in range [0, n] */ #include Search 88 v 2 3 #include 4 #define n 2000 /* number of values to be sorted */ 5 #define m 100 /* each number is in range [0, m-1] */ 6 7 int data[n+1], sortedData[n+1]; /* data to be sorted, and data sorted */ 8 9 10 11 #define bucket_number 10 /* each bucket for all numbers with the same 10th digit value */ int bucket[bucket_number][n+1]; /* bucket[2][0] is number of values with leading 2; bucket[2][1..] holds all values with 10th digit equal to 2; in the worst case, all n v int i, j; /* sort d[1:m] */ 12 void sort(int d[]) { 13 /* d[0]: # of integers in d[1:m] to be sorted */ 14 int j, k, max, max_index, temp; 15 for (j = d[0]; j > 1; j--) { 16 17 18 19 20 21 max = d[j]; max_index = j; for (k = 1; k < j; k++) { if (d[k] > max) { max = d[k]; max_index = k; 22 } 23 } 24 25 26 d[j] = max; 27 /* swap d[j] and d[max_index] */ temp = d[j]; d[max_index] = temp; 28 29 30 return; 31 } 32 33 main() { 34 /* generate n random integers in [0, m-1] to be sorted */ 35 36 /* for better speed-up of its parallel version, read Appendic C on Page 540 to use "seqoff" and "seqon" statements to exclude running time for such sequential code not int v, b_i, index; 37 38 for (i = 1; i <= n; i++) 39 40 41 42 data[i] = rand() % m; for (i = 1; i <= n; i++) { v = data[i]; Launchpad 4A0 Live Share Ln 1, Col 1 Tab Size: 4 UTF-8 CRLF {ò c 88 Win32 C

Systems Architecture
7th Edition
ISBN:9781305080195
Author:Stephen D. Burd
Publisher:Stephen D. Burd
Chapter3: Data Representation
Section: Chapter Questions
Problem 12VE
icon
Related questions
Question

I need to make a parallel version of this sequential code. 

File
Edit Selection View Go Run Terminal Help
C SequentialBucketSort.c 4 X
O Search
88
08
23
j
24
25
26
C: > parallel > parallel > C Sequential BucketSort.c > ...
void sort(int d[]) {
12
15
18
for (j = d[0]; j > 1; j--) {
for (k = 1; k < j; k++) {
/* swap d[j] and d[max_index] */
temp = d[j];
d[j] = max;
27
d[max_index] = temp;
A
29
30
28
}
return;
({)
31
}
32
33
main() {
34
/* generate n random integers in [0, m-1] to be sorted */
35
36
37
38
39
data[i] = rand() % m;
40
41
42
43
44
45
46
47
}
48
49
50
/* for better speed-up of its parallel version, read Appendic C on Page 540 to use "seqoff" and "seqon" statements to exclude running time for such sequential code not
int v, b_i, index;
for (i = 1; i <= n; i++)
for (i = 1; i <= n; i++) {
v = data[i];
b_i = (int)(v/10.0); /* bucket-index = the 10th digit */
/* cout << v << ": " << b_i << "; " << endl; */
index = ++bucket[b_i][0]; /* find index of first unused box for v; */
bucket [b_i][index] = v;
for (i = 0; i <= 9; i++)
sort (bucket[i]);
51
52
int k = 1;
53
54
55
for (i = 0; i <= 9; i++)
for (j = 1; j < bucket[i][0]; j++)
sortedData[k++] = bucket[i][j];
56
57
k--;
58
for (i = 1; i <= k; i++)
59
cout << "d[" ‹‹ i ‹‹ "]=" «< sortedData[i] << endl;
60
}
Launchpad 4A0 Live Share
Ln 1, Col 1
Tab Size: 4 UTF-8 CRLF
{ò c 88 Win32 B
Transcribed Image Text:File Edit Selection View Go Run Terminal Help C SequentialBucketSort.c 4 X O Search 88 08 23 j 24 25 26 C: > parallel > parallel > C Sequential BucketSort.c > ... void sort(int d[]) { 12 15 18 for (j = d[0]; j > 1; j--) { for (k = 1; k < j; k++) { /* swap d[j] and d[max_index] */ temp = d[j]; d[j] = max; 27 d[max_index] = temp; A 29 30 28 } return; ({) 31 } 32 33 main() { 34 /* generate n random integers in [0, m-1] to be sorted */ 35 36 37 38 39 data[i] = rand() % m; 40 41 42 43 44 45 46 47 } 48 49 50 /* for better speed-up of its parallel version, read Appendic C on Page 540 to use "seqoff" and "seqon" statements to exclude running time for such sequential code not int v, b_i, index; for (i = 1; i <= n; i++) for (i = 1; i <= n; i++) { v = data[i]; b_i = (int)(v/10.0); /* bucket-index = the 10th digit */ /* cout << v << ": " << b_i << "; " << endl; */ index = ++bucket[b_i][0]; /* find index of first unused box for v; */ bucket [b_i][index] = v; for (i = 0; i <= 9; i++) sort (bucket[i]); 51 52 int k = 1; 53 54 55 for (i = 0; i <= 9; i++) for (j = 1; j < bucket[i][0]; j++) sortedData[k++] = bucket[i][j]; 56 57 k--; 58 for (i = 1; i <= k; i++) 59 cout << "d[" ‹‹ i ‹‹ "]=" «< sortedData[i] << endl; 60 } Launchpad 4A0 Live Share Ln 1, Col 1 Tab Size: 4 UTF-8 CRLF {ò c 88 Win32 B
(૬)
File
Edit Selection View Go Run Terminal Help
C SequentialBucketSort.c 4 X
C: > parallel > parallel > C SequentialBucketSort.c > ...
1 /* Sequential bucket sort of n integers in range [0, n] */
#include <stdlib.h>
Search
88 v
2
3
#include <math.h>
4
#define n 2000 /* number of values to be sorted */
5
#define m 100 /* each number is in range [0, m-1] */
6
7
int data[n+1], sortedData[n+1]; /* data to be sorted, and data sorted */
8
9
10
11
#define bucket_number 10 /* each bucket for all numbers with the same 10th digit value */
int bucket[bucket_number][n+1]; /* bucket[2][0] is number of values with leading 2; bucket[2][1..] holds all values with 10th digit equal to 2; in the worst case, all n v
int i, j;
/* sort d[1:m] */
12 void sort(int d[]) {
13
/* d[0]: # of integers in d[1:m] to be sorted */
14
int j, k, max, max_index, temp;
15
for (j = d[0]; j > 1; j--) {
16
17
18
19
20
21
max = d[j];
max_index = j;
for (k = 1; k < j; k++) {
if (d[k] > max) {
max = d[k];
max_index = k;
22
}
23
}
24
25
26
d[j] = max;
27
/* swap d[j] and d[max_index] */
temp = d[j];
d[max_index] = temp;
28
29
30
return;
31
}
32
33
main() {
34
/* generate n random integers in [0, m-1] to be sorted */
35
36
/* for better speed-up of its parallel version, read Appendic C on Page 540 to use "seqoff" and "seqon" statements to exclude running time for such sequential code not
int v, b_i, index;
37
38
for (i = 1; i <= n; i++)
39
40
41
42
data[i] = rand() % m;
for (i = 1; i <= n; i++) {
v = data[i];
Launchpad 4A0 Live Share
Ln 1, Col 1 Tab Size: 4 UTF-8 CRLF {ò c
88 Win32
C
Transcribed Image Text:(૬) File Edit Selection View Go Run Terminal Help C SequentialBucketSort.c 4 X C: > parallel > parallel > C SequentialBucketSort.c > ... 1 /* Sequential bucket sort of n integers in range [0, n] */ #include <stdlib.h> Search 88 v 2 3 #include <math.h> 4 #define n 2000 /* number of values to be sorted */ 5 #define m 100 /* each number is in range [0, m-1] */ 6 7 int data[n+1], sortedData[n+1]; /* data to be sorted, and data sorted */ 8 9 10 11 #define bucket_number 10 /* each bucket for all numbers with the same 10th digit value */ int bucket[bucket_number][n+1]; /* bucket[2][0] is number of values with leading 2; bucket[2][1..] holds all values with 10th digit equal to 2; in the worst case, all n v int i, j; /* sort d[1:m] */ 12 void sort(int d[]) { 13 /* d[0]: # of integers in d[1:m] to be sorted */ 14 int j, k, max, max_index, temp; 15 for (j = d[0]; j > 1; j--) { 16 17 18 19 20 21 max = d[j]; max_index = j; for (k = 1; k < j; k++) { if (d[k] > max) { max = d[k]; max_index = k; 22 } 23 } 24 25 26 d[j] = max; 27 /* swap d[j] and d[max_index] */ temp = d[j]; d[max_index] = temp; 28 29 30 return; 31 } 32 33 main() { 34 /* generate n random integers in [0, m-1] to be sorted */ 35 36 /* for better speed-up of its parallel version, read Appendic C on Page 540 to use "seqoff" and "seqon" statements to exclude running time for such sequential code not int v, b_i, index; 37 38 for (i = 1; i <= n; i++) 39 40 41 42 data[i] = rand() % m; for (i = 1; i <= n; i++) { v = data[i]; Launchpad 4A0 Live Share Ln 1, Col 1 Tab Size: 4 UTF-8 CRLF {ò c 88 Win32 C
AI-Generated Solution
AI-generated content may present inaccurate or offensive content that does not represent bartleby’s views.
steps

Unlock instant AI solutions

Tap the button
to generate a solution

Similar questions
Recommended textbooks for you
Systems Architecture
Systems Architecture
Computer Science
ISBN:
9781305080195
Author:
Stephen D. Burd
Publisher:
Cengage Learning
C++ for Engineers and Scientists
C++ for Engineers and Scientists
Computer Science
ISBN:
9781133187844
Author:
Bronson, Gary J.
Publisher:
Course Technology Ptr
Programming Logic & Design Comprehensive
Programming Logic & Design Comprehensive
Computer Science
ISBN:
9781337669405
Author:
FARRELL
Publisher:
Cengage
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning
EBK JAVA PROGRAMMING
EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT
Programming with Microsoft Visual Basic 2017
Programming with Microsoft Visual Basic 2017
Computer Science
ISBN:
9781337102124
Author:
Diane Zak
Publisher:
Cengage Learning