From b1cd708f01da49a47897c37379ff1411f35a62a9 Mon Sep 17 00:00:00 2001 From: Chairuni Aulia Nusapati <chairuni.aulia.nusapati@gmail.com> Date: Fri, 19 Feb 2016 13:10:39 +0700 Subject: [PATCH] add new Bucket Sort --- omp_bucketSort | Bin 0 -> 9676 bytes omp_bucketSort.c | 227 +++++++----------- omp_bucketSort.dSYM/Contents/Info.plist | 20 ++ .../Contents/Resources/DWARF/omp_bucketSort | Bin 0 -> 11462 bytes omp_hello | Bin 0 -> 9136 bytes omp_hello.c | 22 ++ omp_hello.dSYM/Contents/Info.plist | 20 ++ .../Contents/Resources/DWARF/omp_hello | Bin 0 -> 9817 bytes omp_trap | Bin 0 -> 9052 bytes omp_trap_basic | Bin 0 -> 9000 bytes 10 files changed, 145 insertions(+), 144 deletions(-) create mode 100755 omp_bucketSort create mode 100644 omp_bucketSort.dSYM/Contents/Info.plist create mode 100644 omp_bucketSort.dSYM/Contents/Resources/DWARF/omp_bucketSort create mode 100755 omp_hello create mode 100644 omp_hello.c create mode 100644 omp_hello.dSYM/Contents/Info.plist create mode 100644 omp_hello.dSYM/Contents/Resources/DWARF/omp_hello create mode 100755 omp_trap create mode 100755 omp_trap_basic diff --git a/omp_bucketSort b/omp_bucketSort new file mode 100755 index 0000000000000000000000000000000000000000..40538c133d664a192acf04803d51ca38f0b6bf10 GIT binary patch literal 9676 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 literal 0 HcmV?d00001 diff --git a/omp_bucketSort.c b/omp_bucketSort.c index 858364b..4a4baaa 100644 --- a/omp_bucketSort.c +++ b/omp_bucketSort.c @@ -1,154 +1,93 @@ -/* - * Copyrights http://www.cs.usfca.edu/~peter/cs625/code/trap/omp_trap.c - * File: omp_bucketSort.c - * Purpose: omp_bucketSort - * - * Input: a, b, n - * Output: estimate of integral from a to b of f(x) - * using n trapezoids. - * - * Compile: Using gcc - * gcc -g -Wall -fopenmp -o omp_trap omp_trap.c - * Usage: ./omp_trap <number of threads> - * - * Notes: - * 1. The function f(x) is hardwired. - * 2. This version uses OpenMP's parallel for with variable - * scope specified, and static partitioning. - */ +//file: omp_bucketSort.c +//praktikan: 13513008 Muhammad Ridwan, 13513054 Chairuni Aulia Nusapati #include <stdio.h> +#include <time.h> #include <stdlib.h> #include <math.h> #include <assert.h> #include <omp.h> -int thread_count; /* also number of buckets */ - - -int *create_rand_nums(int num_elements, int MAX_RAND) { - int *rand_nums = (int *)malloc(sizeof(int) * num_elements); - assert(rand_nums != NULL); - int i; - for (i = 0; i < num_elements; i++) { - rand_nums[i] = rand()%MAX_RAND; - } - return rand_nums; -} - -int main(int argc, char* argv[]) { - int n; /* number of elements */ - int *rand_nums = NULL; - - //double integral; /* Store result in integral */ - //double a, b; /* Left and right endpoints */ - //int n; /* Number of trapezoids */ - - if (argc != 3) { - fprintf(stderr, "usage: %s <number of threads>\n", argv[0]); - exit(0); - } - thread_count = strtol(argv[1], NULL, 10); - n = strtol(argv[2], NULL, 10); - - //printf("Enter a, b, and n\n"); - //scanf("%lf %lf %d", &a, &b, &n); - - //randomize - rand_nums = create_rand_nums(n, n); - - //maks buckets - int buckets[thread_count][n]; - - //assign initial buckets capacity to buckets - for(int i = 0; i < thread_count; i++){ - buckets[i][0] = 0; - } - - //determine interval - int range = n/thread_count; //bisa jadi thread_count - 1 - - //assign to buckets - for(int i = 0; i < n; i++){ - int temp = rand_nums[i]; - buckets[temp/range][buckets[temp/range][0]+1] = temp; - buckets[temp/range][0] += 1; - } - - printf("BEFORE:\n"); - for(int i = 0; i < n; i++){ - printf("%d\n",rand_nums[i]); - } - - - printf("IN BUCKETS:\n"); - for(int i = 0; i < thread_count; i++){ - for (int j = 1; j <= buckets[i][0]; j++){ - printf("%d, ",buckets[i][j]); - } - printf("\n"); - } - - sort(buckets); - - printf("AFTER:\n"); - for(int i = 0; i < thread_count; i++){ - for (int j = 1; j <= buckets[i][0]; j++){ - printf("%d\n",buckets[i][j]); - } - } - /* OpenMP starts from here */ - //integral = Trap(a, b, n); - - return 0; -} /* main */ - -void sort(int** buckets){ - //int c, d, t; -//# pragma omp parallel for schedule(static) default(none) \ -// shared(buckets) private(c, d, t) \ num_threads(thread_count) -#pragma omp parallel num_threads(thread_count) - //sort - - for (int c = 1 ; c <= buckets[omp_get_thread_num()][0]; c++) { - int d = c; - while ( d > 0 && buckets[omp_get_thread_num()][d] < buckets[omp_get_thread_num()][d-1]) { - int t = buckets[omp_get_thread_num()][d]; - buckets[omp_get_thread_num()][d] = buckets[omp_get_thread_num()][d-1]; - buckets[omp_get_thread_num()][d-1] = t; - d--; - } +int thread_count; // thread number, also number of buckets + +int *create_rand_nums(int num_elements, int MAX_RAND){ + int *rand_nums = (int *)malloc(sizeof(int) * num_elements); + assert(rand_nums != NULL); + int i; + for (i = 0; i < num_elements; i++){ + rand_nums[i] = rand()%MAX_RAND; + } + return rand_nums; +} + +int main(int argc, char* argv[]){ + int n; // number of elements + int *rand_nums = NULL; // random numbers + + if(argc != 3){ + fprintf(stderr, "usage: %s <number of threads> <number of elements>\n", argv[0]); + exit(0); + } + + thread_count = atoi(argv[1]); + n = atoi(argv[2]); + + // randomize + rand_nums = create_rand_nums(n, n); + + //max buckets + int buckets[thread_count][n]; + + //assign initial buckets capacity to buckets + for(int i = 0; i <thread_count; i++){ + buckets[i][0] = 0; + } + + // determine interval + int range = n/thread_count; + + // assign to buckets + for (int i = 0; i < n; i++){ + int temp = rand_nums[i]; + buckets[temp/range][buckets[temp/range][0]+1] = temp; + buckets[temp/range][0] += 1; + } + + printf("Your random elements: \n"); + for (int i = 0; i < n; i++){ + printf("%d\n", rand_nums[i]); + } + + printf("\n"); + + //sort using OpenMP + clock_t begin, end; + begin = clock(); + int my_rank; + #pragma omp parallel num_threads(thread_count) shared(buckets, thread_count) private(my_rank) + { + my_rank = omp_get_thread_num(); + int c, d, t; + int numel = buckets[my_rank][0]; + for (c = 1; c <= numel; c++){ + d = c; + while(d>1 && buckets[my_rank][d] < buckets[my_rank][d-1]){ + t = buckets[my_rank][d]; + buckets[my_rank][d] = buckets[my_rank][d-1]; + buckets[my_rank][d-1] = t; + d--; + } } - } + } + end = clock(); + printf("Your %d elements sorted by %d threads: \n", n, thread_count); + for (int i = 0; i < thread_count; i++){ + for (int j = 1; j <= buckets[i][0]; j++){ + printf("%d\n", buckets[i][j]); + } + } + printf("execution time: %f\n", (double)(end-begin)/CLOCKS_PER_SEC); - - -/*------------------------------------------------------------------ - * Function: Trap - * Purpose: Use trapezoidal rule to compute definite integral - * Input args: - * a: left endpoint - * b: right endpoint - * n: number of trapezoids - * Return value: Estimate of Integral from a to b of f(x) - */ -/*double Trap(double a, double b, int n) { - double h, x, integral = 0.0; - int i; - - h = (b-a)/n; - integral += (f(a) + f(b))/2.0; -# pragma omp parallel for schedule(static) default(none) \ - shared(a, h, n) private(i, x) \ - reduction(+: integral) num_threads(thread_count) - for (i = 1; i <= n-1; i++) { - x = a + i*h; - integral += f(x); - } - - integral = integral*h; - - return integral; -}*/ /* Trap */ - + return 0; +} /* main */ \ No newline at end of file diff --git a/omp_bucketSort.dSYM/Contents/Info.plist b/omp_bucketSort.dSYM/Contents/Info.plist new file mode 100644 index 0000000..a73cd32 --- /dev/null +++ b/omp_bucketSort.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleIdentifier</key> + <string>com.apple.xcode.dsym.omp_bucketSort</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>dSYM</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + </dict> +</plist> diff --git a/omp_bucketSort.dSYM/Contents/Resources/DWARF/omp_bucketSort b/omp_bucketSort.dSYM/Contents/Resources/DWARF/omp_bucketSort new file mode 100644 index 0000000000000000000000000000000000000000..38133ddb6d823ea384d5b4280eb7048611255a44 GIT binary patch literal 11462 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 literal 0 HcmV?d00001 diff --git a/omp_hello b/omp_hello new file mode 100755 index 0000000000000000000000000000000000000000..6621cb5057a6a504e9db9bb12e366f994ee00744 GIT binary patch literal 9136 zcmeHNU1(fI6rN4iG}M}I+Nx1wy@p0(k-bT)HX_BOWbJKDlTDgP^<}u(z5Angf4KK< z$SQ$ARa{~qk45O4PxV0`{ec=<=pTsSgZQ8r6lE(F1VKVAS-*4d%;xTH>a)l_<jl-> z&YUx6&YgkTnS6cw_st!Qh1wZgYGaIbgOz(2dxt4#G4>Ex19Ki9Jsx{4Ha$twMhZ2; zZ4vqT4jnn4iJh5g?Bd!-8f8pi#KsVg%hZE&$5?Qv<x#W0gI$;mROf`Aa07+ek{@$! zJEb|hE^797N%-3@dPpn{I)%RuA@Kb1jA0fH3$kW^>%!kL(VsBoy-qFhC2Ysa=F_4> zv%kLG-h6w7p0J-9d_%#xk>M#z&lz5?W`85X-<ohj7;EFMMBlXv=6q~)X4KaW->>1j z%J1v@uH;w7$9dl5b~!g!FnQ6j?&?pvq4nX9i}FwFL=xww{%`&wu&4M2gaKi{KU#Oh zlD782_=$;^V`C@e8djR-2~6~fa7I4dJh)QE`moOisjV>9iK-KI4{Aw@!dM32J=DXf zDL<sY2K+GUb8yfDhxei#2NThrC8i<wf#q66vxPFS-_;^zjJAmaCY@TcE!E7<smZdL z1SWa}OmUolwfN-^D=+-^(PJ;}-T&tY-yVPrsY5_JT|Ou=$w0{O64^EHLmG$XM>?9L zSGI|<3kltHBR~}CLarDciXxWmoEM+pF0}JTm@-_C8NE)IZO6z(k4YQy-Z~zVShs5! zFOlGOeZVKsi{`hcc;D+Of$4h$6l5UCK#+kT13?CY3<MeYe`jD;tNfy!y`@wZZ)ug% zy0#o!*UqkWYRl|%9R1iun!Q%JT74UJC3a^ycIPt^RW5m&m7^m-)d>`zg4y-U!eONP z5+E$9bgrw!HkM~MU|hMPtsGr~#O+<BbNcF*jaFIQsD4qa)vjNz^=mlF)%s7m<+xi; zxMdvW_{yV?qZ&P3>+eRrN@r_!^H*4A?x)uG)S?6V&2Ol6l3LfOb%t6O(b5dlEGQ|f zkW-wDW#~zzKdBT_C~4Ys-X;pYIn6=~kx*pUj?PsK^bBP5o9xCWT!5yi6HypS))jfT zElkJt`#Qqos9=PWi0o#-KMOm;F16UH5I5Sr56O?hZm(yx&3JUu-?Ee4Wc>%!6ya@A zhsE!~E>ZW0TJ{g>AOk@Lf(!&12r>|4Ajm+Ffgl4x27(L(83-~EWZ=J_f$qM@EJe9z zgdY3c$8bKE%_s4AJ!P>~W<|P3`0>e8abDCd-82o8ggp@AS&pX-hv!Q<?p=)7q*8n; zPfR^XGq7ib7x9$sqzDZH;bq$?kV8<2<Ndas=Q7+_FcKxlz#F<wVGQK-Y@R*sUc;~< zdMj*a7kW|rP4_DodZ*kg5|YceN;KJ%P53Zysy)Q6man`*db;C?qM&z4Y8Sx=e3)eP zwkhvz2-B^SACvuC!hT-ZODyf>{f)HuW3vBP*e?ouiKV@~$C37aoFt*371Uimf9HXB z1Iu_mbTPeTdh?}QHPXxZ(<L1s{yh4s3IEiD|MD=U-K9;GFs|bc&siPsgPtzj9soZG z?g7)AI%s4&ox;>v+pugkk<qhODWBC#W>(LaY`v&ES#`2#<WI#_MvD;tYhf0m38v2L zmYOP<STwf!Tt+RI=achC`18*Wn@3(xA1V$XGSi8nTy7AQ&Z{%3nn=8Hcx-ww9xX8L tt}^beG8aVM6`smR2R)@9i*DPjR^g{{$85V->O$Wxk^4jLjFvsg{sFTH!4d!f literal 0 HcmV?d00001 diff --git a/omp_hello.c b/omp_hello.c new file mode 100644 index 0000000..cdf1def --- /dev/null +++ b/omp_hello.c @@ -0,0 +1,22 @@ +#include <stdio.h> +#include <stdlib.h> +#include <omp.h> + +void Hello(void); /* Thread function */ + +int main(int argc, char* argv[]){ + /* Get number of threads form command line */ + int thread_count = strtol(argv[1], NULL, 10); + +# pragma omp parallel num_threads(thread_count) + Hello(); + + return 0; +} /* main */ + +void Hello(void){ + int my_rank = omp_get_thread_num(); + int thread_count = omp_get_num_threads(); + + printf("Hello from thread %d of %d\n", my_rank, thread_count); +} /* Hello */ \ No newline at end of file diff --git a/omp_hello.dSYM/Contents/Info.plist b/omp_hello.dSYM/Contents/Info.plist new file mode 100644 index 0000000..ae70f05 --- /dev/null +++ b/omp_hello.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> + <dict> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundleIdentifier</key> + <string>com.apple.xcode.dsym.omp_hello</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundlePackageType</key> + <string>dSYM</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleVersion</key> + <string>1</string> + </dict> +</plist> diff --git a/omp_hello.dSYM/Contents/Resources/DWARF/omp_hello b/omp_hello.dSYM/Contents/Resources/DWARF/omp_hello new file mode 100644 index 0000000000000000000000000000000000000000..7e526962fe8201b03f7e06e43e9808eb64320d3c GIT binary patch literal 9817 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 BqAvgd literal 0 HcmV?d00001 diff --git a/omp_trap b/omp_trap new file mode 100755 index 0000000000000000000000000000000000000000..5581549b923575a932f7dc16a245b21f3d3a902f GIT binary patch literal 9052 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 literal 0 HcmV?d00001 diff --git a/omp_trap_basic b/omp_trap_basic new file mode 100755 index 0000000000000000000000000000000000000000..37aa306554eff49241aff44a880d7596b48da3c0 GIT binary patch literal 9000 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 literal 0 HcmV?d00001 -- GitLab